Korzystam z Arduino UNO, aby zaprogramować wstępnie skompilowany obraz heksadecymalny na ATTINY45, używając avrdude w katalogu Arduino IDE w Windows 7. Uno ma szkic ISP załadowany z katalogu przykładów i działa - dioda LED pulsu ładnie pulsuje.
Po stronie sprzętowej mam tę konfigurację , z tym wyjątkiem, że ATTINY jest montowany powierzchniowo, przylutowany do deski surfingowej, a wszystkie jego styki są lutowane za pomocą woltomierza. Używam paska szpilki z nagłówkiem, trzymanego ręcznie, aby szpilki dotykały deski surfingowej, aby przekazywać sygnały z Uno do ATTINY.
Oto wiersze poleceń, które wziąłem, patrząc na wyniki debugowania IDE:
REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m
- Próbuję uruchomić je osobno, ale zawsze pojawia się ten błąd:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
ale czasami jest to ff0000 lub ffff00 lub ffffff
Przeczytałem, że „Arduino używa nieco zmodyfikowanej wersji avrdude do przesyłania szkiców na tablicę Arduino. Standardowa wersja pyta o podpis urządzenia tablicy w sposób niezrozumiały dla bootloadera, co powoduje ten błąd”. Czy to oznacza, że użycie Arduino avrdude z nowym układem ATTINY, bez bootloadera, również spowodowałoby ten sam błąd? Innymi słowy, czy zmodyfikowany avdrude nie jest w stanie przesłać zapytania do AVR bez Arduino?
Czy ten błąd oznacza po prostu, że nie mam dobrego kontaktu między wszystkimi pinami programatora a ATTINY?
I czy ustawienia bezpiecznika są naprawdę potrzebne, czy Uno może zaprogramować lampę błyskową na attiny działającą z częstotliwością 1 MHz, a tym samym zaoszczędzić mi kilku kroków?
(Po prostu kupiłbym „prawdziwego” programistę, ale muszę go zdobyć w ciągu najbliższych dwóch dni i jestem w wiejskiej części Nowej Szkocji)
źródło
-c avrisp
. Myślę, że możesz zaprogramować go na 1 MHz bez problemów.-carduino
on stk500. Po prostu spróbuj wgrać program flash do attiny z IDE. W ten sposób możesz zobaczyć poprawny wiersz poleceń na dole, jeśli w ustawieniach włączysz „pełne dane wyjściowe”.Odpowiedzi:
Przylutowałem przewody do padów, aby upewnić się, że połączenie jest dobre, i użyłem tych przewodów do programowania z Uno. Następnie programista pracował bez żadnych zmian w wierszach poleceń, jak podano w pytaniu. Uruchomiłem kilka odmian i mogłem odpowiedzieć na wszystkie moje pytania, a oprócz tego kilka innych:
Błąd „Yikes! Nieprawidłowy podpis urządzenia” był spowodowany złym kontaktem między programatorem (Uno) a pinami ATTINY.
Nie miało to nic wspólnego z tym, że bootloader nie był na nowym mikrokontrolerze. Nowy układ ATTINY45 nie potrzebuje bootloadera do działania programatora w obwodzie.
Uno może zaprogramować ATTINY45 skonfigurowany na jedną z jego prędkości, 1 MHz lub 8 MHz. Ustawienia fabryczne są w porządku i nie wymagają wymiany bezpieczników.
Oba avrdude wersje pracował programming- 6,1 od strony autora i zmodyfikowany jeden z Arduino IDE.
avrdude program może poprzez Uno użyciu dowolnego
-c avrisp
,-c arduino
lub-c stk500v1
, że nie ma znaczenia, który.Jedno małe pytanie, na które nie byłem w stanie odpowiedzieć, dotyczyło prędkości programów Uno (prędkość komunikacji między pinami we / wy Arduino i mikrokontrolerem jest flashowana). Czy ma to związek z prędkością portu szeregowego? Okazało się jednak, że nie ma to związku z odpowiedzią na ten problem. Ktoś inny może zapytać, czy jest wystarczająco ciekaw.
źródło
Miałem dokładnie ten problem. Jeśli ATtiny jest ustawiony na zegar zewnętrzny, ArduinoISP nie będzie mógł go zaprogramować bez zewnętrznego kryształu. Podłączyłem kryształ 16 MHz i 2 kondensatory i działało idealnie.
(Byłem wtedy w stanie ustawić ATtiny na wewnętrzny zegar, usunąć kryształ, a następnie działałem idealnie bez kryształu.)
źródło
Dodaj planszę i ich opis bezpiecznika z już ustawionego i będzie działać.
Do dodania wystarczy
C:\Program Files\Arduino\hardware\arduino\avr\boards.txt
dodać opis tablicy.Użyłem tego.
źródło