LED villogtatás AVR mikrochip segítségével

1 minute read

Erre az egyszerű feladatra a legkisebb Atmega chipet használtam, annak is az egyik lábát a 8-ból. A cél nem a feladat megvalósítása, hanem egy fejlesztői környezet kialakítása volt Linux operációs rendszeren.

Maga az égető a hobbielektronika.hu leírása alapján és a tőlük vásárolt előre égetett chip alapján lett összerakva, ami tulajdonképpen egy stk500v2 programozó klónja. Így a tyúk és a tojás esetét nem kellett megoldanom, tehát hogyan írjunk egy olyan chipet, ami másik chipeket tud majd írni. A cucc USB-s, annyi módosítással, hogy én nem USB portról táplálom, nehogy leégjen a drága alaplap a hobbim miatt.

Itt a led villogó forráskódja, ebből bármilyen komolyabb stuff elkezdhető:

#define F_CPU 10000000UL
#include <avr/io.h>
#include <util/delay.h>

void delayms(uint16_t millis) {
  while ( millis ) {
    _delay_ms(1);
    millis--;
  }
}

int main(void) {
  DDRB |= 1<<PB0; /* set PB0 to output */
  while(1) {
    PORTB &= ~(1<<PB0); /* LED on */
    delayms(100);
    PORTB |= 1<<PB0; /* LED off */
    delayms(900);
  }
  return 0;
}

És a hozzá tartozó Makefile, benne a chip típusával, ami most attiny2313:

CC=avr-gcc
CFLAGS=-g -Os -Wall -mcall-prologues -mmcu=$(AVRPART)
AVRPART=attiny2313
OBJ2HEX=avr-objcopy 
AVRDUDE=avrdude
TARGET=ledvillogo

program : $(TARGET).hex
#	$(AVRDUDE) -p $(AVRPART) -c stk500v2 -P avrdoper -e -U flash:w:$(TARGET).hex
	./uisp -dprog=stk500 -dserial=/dev/ttyACM0 -dpart=ATtiny2313 --erase --upload --verify if=$(TARGET).hex
%.obj : %.o
	$(CC) $(CFLAGS) $< -o $@

%.hex : %.obj
	$(OBJ2HEX) -R .eeprom -O ihex $< $@

clean :
	rm -f *.hex *.obj *.o

A “make program” parancsot kiadva azonnal a chipre írja a programot, tápra kapcsolva pedig már villog is a led.

Updated:

Comments