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):
Dėl WinAVR paketo… va ka rašo:
WinAVR is a suite of executable, open source software development tools for the Atmel AVR series of RISC microprocessors and AVR32 series of microprocessors hosted on the Windows platform. It includes the GNU GCC compiler for C and C++.
Taigis jis kaip tik ir yra gcc variantas. Gal susipainiojo su kažkuriuo senesniu AVR paketų kurį duodavo Atmelis? Tas “c” softas tikrai tiesiogiai nesikompiliuoja su gnu c. Pasibandyk ką nors sukompiliuoti ant savo Linuxo iš mano www puslapių (www.vabolis.lt) ir duok žinią. Visi mano sourcai kompiliuoti su winavr.
Bandžiau konstruoti IR barjera ir sugalvojau, kad signalą prastai gaudo t.y. pagauna tik signalo nuotrupas (siunčiu pats signalą ir pats gaudau su tuo pačiu čipu) dėl permažo taktinio dažnio (naudojau vidini 1MHz). Tai bandžiau pajungti įšorinį kristalą ir truputi su Fuse nepataikiau, tai dabar neveikia mano atmega 🙂 Kaip susitvarkysiu pabandysiu tavo kodą ir duosiu žinot.