Apie šitą gėrį skaičiau jau senokai, bet niekaip neprisiruošdavau. Bet išaušo ta diena.
Pirmiausia užsisakiau programatorių. Kainavo pilnai su siuntimu ~28LTL. Pirktas iš ebay, USBasp klonas (http://www.fischl.de/usbasp/). Atkeliavus programatoriui jau gumos netempiau, nes labai norėjosi išbandyti kaip viskas veikia. Susipirkau ko reikia ir susilitavau schemą pateikta elektronika.lt puslapyje.
Pora pakeitimų, tai šviesos diodai jungti ne per 1…2K kaip parodyta schemoje, o per 330Ω Dar vienas mažas nukrypimas, kad aš nedėjau jokio mygtuko. Pirmoji mintis ir užduotis buvo išmokti junginėti diodus.
Nepaslaptis, kad naudoju Archlinux, to pasekoje programos kodas pateiktas ankščiau minėtam elektronika.lt puslapyje netiko – nesikompiliavo. Su programa Gnome-avrdude įrašius HEX’ą diodai mirksėjo. Taigi mano supratimu problema buvo tame, kad gcc-avr kompiliatorius veikia truputi kitaip nei winavr ir/ar kiti windows’iniai.
Padraugavus su Google pavyko parašyti ir sukompiliuoti štai tokį kodą:
#define F_CPU 1000000UL #include <inttypes.h> #include <avr/io.h> #include <util/delay.h> void sleep() { _delay_ms(50); } int main(){ DDRD = 0b11111111; while (1) { PORTD = 0b10000001; sleep(); PORTD = 0b01000010; sleep(); PORTD = 0b00100100; sleep(); PORTD = 0b00011000; sleep(); PORTD = 0b00011000; sleep(); PORTD = 0b00100100; sleep(); PORTD = 0b01000010; sleep(); } }
Programą kompiliavau štai tokiomis komandomis (programos kodas parašytas test.c byloje):
avr-gcc -mmcu=atmega16 -Os test.c -o test.o avr-objcopy -j .text -j .data -O ihex test.o test.hex
C kodą rašau su Geany (http://www.geany.org/)
Gnome-avrdude konfiguracija USBasp programatoriui yra tokia:
Programmer laukelyje USBasp pasirinkimo nebuvo, todėl jį įvedžiau ranka.
Spustelnam Open, pasirenkame paruošta HEX bylą ir ją atveriame. Atvėrus spustelnam mygtuką kur parodyta mikroschma su rodykle nukreipta į ja. Jei viskas gerai sujungta turite pamatyti štai tokį (ar panašų) rezultatą:
Programa iškarto pradeda veikti. Aukščiau pateiktas kodo rezultatas youtubo filmuke (atsiprašau už kokybe, neturiu jokio geriau filmuojančio aparato):