Problem z programowaniem Mini Pro przez Arduino jako ISP


9

Właśnie wziąłem parę płyt klonowych Arduino Mini Pro 5v (Inland, sprzedawany w Microcenter, obecnie 4 USD) i chciałem używać mojego Uno jako dostawcy usług internetowych, tak jak wcześniej z chipami ATmega328 i ATtiny85. Zaprogramowałem Uno za pomocą instrukcji na stronie z samouczkiem ArduinoISP i podłączyłem Uno do Mini Pro, korzystając z instrukcji na tej stronie . Nie mogę pobrać Arduino IDE lub avrdude z wiersza poleceń, aby pomyślnie zaprogramować te płyty bez względu na to, co spróbuję. Tyle że mogę użyć Arduino IDE do wypalenia nowego programu ładującego do Mini Pro.

Podłączyłem również diody LED stanu (piny 7, 8 i 9) i widzę, że programista ma błąd (pin 8), gdy próbuję zaprogramować cokolwiek poza bootloaderem.

Oto moja linia poleceń avrdude, w której próbowałem ustawić bezpieczniki w Mini Pro:

avrdude -P /dev/tty.usbmodema0121 -b 57600 -c avrisp -p atmega328p -U lfuse:w:0xff:m -U hfuse:w:0xdb:m -U efuse:w:0xfd:m

Od avrdude otrzymuję:

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c

avrdude done.  Thank you.

W przeszłości nie miałem żadnych problemów z używaniem tej samej konfiguracji, ale z układem ATmega328 lub ATtiny85 na płycie z avrdude, więc nie mam pojęcia, co się tutaj dzieje.

Przyjrzałem się również kodowi ArduinoISP i nie jestem pewien, co to jest resp = 0x1c. Nie widzę wartości 0x1c zdefiniowanej w sekcji Definicje STK kodu, więc nie jestem pewien, co może być przyczyną.

Wszelkie wskazówki tutaj będą mile widziane. I tak, wiem, że mogę używać płyty Uno z układem ATmega328 wyciągniętym do wykorzystania jako programista. Ale chcę móc zastąpić obszar bootloadera własnym kodem, tak jak mogę to zrobić zwykłym układem ATmega328.

Dzięki!

Odpowiedzi:


7

Po przeszukaniu jeszcze trochę, okazało się, że moim problemem była prędkość transmisji. Mógłbym sprawić, by działał, ustawiając go na 19200, tylko trochę wolniej. Alternatywnie możesz zmodyfikować szkic ArduinoISP, aby umożliwić wyższe prędkości transmisji. Użyłem tego postu, aby włączyć 115200 bodów i udało mi się z powodzeniem używać avrdude przy wyższych prędkościach.

Nie jestem pewien, jak to wcześniej przeoczyłem, ale przynajmniej łatwo to rozwiązać.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.