Witam,
W skrócie - mam 2x atmega8a-pu kupione na allegro. Chce na tym uruchomić najprostsza migającą diodę.
Drobne utrudnienie, że działam spod linuxa, ale to chyba nie powinno mieć wpływu. Programator mam usbAsp.
I teraz cała historia moich zmagań:
Podłączyłem sobie wszystko wg. schematów dostępnych w sieci, z uwzgl. pinów mojego procka. W Arduino IDE załadowałem projekt/schemat Blink - tj migająca dioda. Pierwsza próba wysłania na procek - "udana". Tj były jakieś warningi, ale nic poza tym. Niestety dioda nie zaczęła migać. To sobie pomyślałem, że skoro to program korzystający z bibl. Arduino, to pewnie trzeba najpierw wgrać bootloader Arduino. To i wgrałem ten bootloader. Z tym, że w ArduinoIDE nie ma Atmega8a, więc wybrałem "Arduino NG or older w/ atmega8" sugerując się opinią z internetu, że 8 i 8a są właściwie takie same. Niestety dostałem wtedy komunikat błedu:
Od tego czasu już dostawałem ww komunikat - czy chciałem wysłac program czy bootloader na procka.
Zastanawiałem się w czym rzecz i wymyśliłem, że w schemacie Blink, domyślnie led miał mrugać na pinie 13. Ja podłączyłem diodę do pinu 13 ale fizycznego (tj. 13. nóżki uC) i być może dlatego nie mrugała dioda. A pin 13 to pin SCK czyli ten o którym mówi powyższy komunikat błedu. Więc sobie wymyśliłem, że może przeprogramowałem uC (znaczy ten pin) tak, że teraz już się go nie da więcej przeprogramować, bo zamiast funkcji "sck" teraz ten pin będzie zawsze mrugał diodą
(tak na chłopski rozum) Ale i tak nie mruga.
Więc... wziąłem drugi uC i tym razem pomyślałem, że najpierw wgram bootloader a potem schemat Blink ze zmienionym pinem led na 2 (jakiś "bezpieczny" pin). No ale sytuacja powtórzyła się tj. po wgraniu BL (BootLoadera) dostaję ten sam komunikat.
Odpalając avrdude z linii poleceń, z param. -F dostaję:
Ten 0xc8f761 jest zmienny - trochę inny za każdym wywołaniem.
Teraz wypadałoby spróbowac wgrać sam zmodyfikowany Blink bez BL, ale nie mam już 3-ciego uC...
Żeby nie było że to może wina linuxa, podmapowałem ten programator USB do Windowsa XP działającego w wirtualnej maszynie. Odpaliłem tam też mkAvrKalkulator odpowiednio skonf. ale dalej jest ten sam błąd - z tą różnicą, że jego wersja avrdude powiada, że Device signature = 0x000000.
Więc pomyślałem, że może zbrikowałem moje uC wgrywając ten bootloader. Sprawdzam konfig Arduino IDE (dla "Arduino NG or older w/ atmega8") i tam widzę, że jako fusebity on ma wpisane
Wpisałem te wartości (df ca) do mkAvrKalkulator żeby zobaczyć co one znaczą. I ten pokazuje, że przy tych fusebitach nie jest ustawiona żadna częstotliwość zegara - ani wewn. ani zewn. Nie wiem w ogóle jak to możliwe, że się tak da, no ale możecie sobie sami sprawdzić.
Potem znalazłem na stronach forum konfig dla atmegi8a do ArduinoIDE, no ale to już trochę za późno.
Co dalej... znalazłem informacje że czasami pomoże podłączenie zewnetrznego zegara na takie czesciowo "zablokowane" uC. Nie mialem kondensatorow do kwarcu, ale czytam, ze moze to byc dowolny prostokatny sygnal - poskladalem wiec generator na ne555 zgodnie z tym schematem:
http://www.talkingelectronics.com/projects/555/Page2-555.html
Dalem R1=1k, R2=10k i C=22nF co daje czestotliwosc ok 3kHz. Sygnal wyjsciowy dalem na nozke xtal1 uC, ale nic sie nie zmienilo.
(probowalem tez uruchamiac avrdude z parametrem -B 1000 itp, ale nie nie mialo to wplywu)
Poskladalem to samo na innej plytce stykowej - to samo.
Podlaczylem tez na innym komputerze z windowsem - jw.
Czy możliwe, że faktycznie wina leży po stronie tych fusebitów? Że to te ustawienia powodują takie właśnie zachowanie uC? Czyli wgranie bootloadera z najnowszego ArduinoIDE powoduje zablokowanie uC?
Może ma ktoś niepotrzbny uC i chce to sprawdzić? :->
Na chwile obecna skonczyly mi sie pomysly co z tym zrobic. Pomozecie?
A ponizej fotka tego cudeńka:
Z góry dziękuję za pomoc!
W skrócie - mam 2x atmega8a-pu kupione na allegro. Chce na tym uruchomić najprostsza migającą diodę.
Drobne utrudnienie, że działam spod linuxa, ale to chyba nie powinno mieć wpływu. Programator mam usbAsp.
I teraz cała historia moich zmagań:
Podłączyłem sobie wszystko wg. schematów dostępnych w sieci, z uwzgl. pinów mojego procka. W Arduino IDE załadowałem projekt/schemat Blink - tj migająca dioda. Pierwsza próba wysłania na procek - "udana". Tj były jakieś warningi, ale nic poza tym. Niestety dioda nie zaczęła migać. To sobie pomyślałem, że skoro to program korzystający z bibl. Arduino, to pewnie trzeba najpierw wgrać bootloader Arduino. To i wgrałem ten bootloader. Z tym, że w ArduinoIDE nie ma Atmega8a, więc wybrałem "Arduino NG or older w/ atmega8" sugerując się opinią z internetu, że 8 i 8a są właściwie takie same. Niestety dostałem wtedy komunikat błedu:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Od tego czasu już dostawałem ww komunikat - czy chciałem wysłac program czy bootloader na procka.
Zastanawiałem się w czym rzecz i wymyśliłem, że w schemacie Blink, domyślnie led miał mrugać na pinie 13. Ja podłączyłem diodę do pinu 13 ale fizycznego (tj. 13. nóżki uC) i być może dlatego nie mrugała dioda. A pin 13 to pin SCK czyli ten o którym mówi powyższy komunikat błedu. Więc sobie wymyśliłem, że może przeprogramowałem uC (znaczy ten pin) tak, że teraz już się go nie da więcej przeprogramować, bo zamiast funkcji "sck" teraz ten pin będzie zawsze mrugał diodą
Więc... wziąłem drugi uC i tym razem pomyślałem, że najpierw wgram bootloader a potem schemat Blink ze zmienionym pinem led na 2 (jakiś "bezpieczny" pin). No ale sytuacja powtórzyła się tj. po wgraniu BL (BootLoadera) dostaję ten sam komunikat.
Odpalając avrdude z linii poleceń, z param. -F dostaję:
avrdude -p atmega8 -c usbasp -F
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0xc8f761
avrdude: Expected signature for ATmega8 is 1E 93 07
Ten 0xc8f761 jest zmienny - trochę inny za każdym wywołaniem.
Teraz wypadałoby spróbowac wgrać sam zmodyfikowany Blink bez BL, ale nie mam już 3-ciego uC...
Żeby nie było że to może wina linuxa, podmapowałem ten programator USB do Windowsa XP działającego w wirtualnej maszynie. Odpaliłem tam też mkAvrKalkulator odpowiednio skonf. ale dalej jest ten sam błąd - z tą różnicą, że jego wersja avrdude powiada, że Device signature = 0x000000.
Więc pomyślałem, że może zbrikowałem moje uC wgrywając ten bootloader. Sprawdzam konfig Arduino IDE (dla "Arduino NG or older w/ atmega8") i tam widzę, że jako fusebity on ma wpisane
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
Wpisałem te wartości (df ca) do mkAvrKalkulator żeby zobaczyć co one znaczą. I ten pokazuje, że przy tych fusebitach nie jest ustawiona żadna częstotliwość zegara - ani wewn. ani zewn. Nie wiem w ogóle jak to możliwe, że się tak da, no ale możecie sobie sami sprawdzić.
Potem znalazłem na stronach forum konfig dla atmegi8a do ArduinoIDE, no ale to już trochę za późno.
Co dalej... znalazłem informacje że czasami pomoże podłączenie zewnetrznego zegara na takie czesciowo "zablokowane" uC. Nie mialem kondensatorow do kwarcu, ale czytam, ze moze to byc dowolny prostokatny sygnal - poskladalem wiec generator na ne555 zgodnie z tym schematem:
http://www.talkingelectronics.com/projects/555/Page2-555.html
Dalem R1=1k, R2=10k i C=22nF co daje czestotliwosc ok 3kHz. Sygnal wyjsciowy dalem na nozke xtal1 uC, ale nic sie nie zmienilo.
(probowalem tez uruchamiac avrdude z parametrem -B 1000 itp, ale nie nie mialo to wplywu)
Poskladalem to samo na innej plytce stykowej - to samo.
Podlaczylem tez na innym komputerze z windowsem - jw.
Czy możliwe, że faktycznie wina leży po stronie tych fusebitów? Że to te ustawienia powodują takie właśnie zachowanie uC? Czyli wgranie bootloadera z najnowszego ArduinoIDE powoduje zablokowanie uC?
Może ma ktoś niepotrzbny uC i chce to sprawdzić? :->
Na chwile obecna skonczyly mi sie pomysly co z tym zrobic. Pomozecie?
A ponizej fotka tego cudeńka:
Z góry dziękuję za pomoc!