Kucharskov Napisano Marzec 18, 2019 Udostępnij Napisano Marzec 18, 2019 (edytowany) Dobry wieczór! Dostałem ostatnio oryginalny czip Atmela - Atmega 328P-U, na którego próbuję wgrać bootloader za pomocą Arduino UNO (klon z CH340). Postępuję zgodnie z instrukcją dostępną chociażby na stronie Arduino, na tym filmie czy w tym poradniku na YT. Definicję płytek której używam znalazłem tutaj: MiniCore - polecana w ostatnim poradniku. Ważne jest, że próbuję wgrać bootloader, który nie wymaga zewnętrznego oscylatora ponieważ go po prostu w domu nie posiadam, a elektroniczny mi nie po drodze. Zgodnie z wszystkimi poradnikami: Wgrywam na UNO szkic Arduino ISP zgodnie ze sztuką wgrywania szkiców Łączę poprawnie scalak - UNO: Pin 7 i 20 - 5V Pin 8 i 22 - GND Pin 1 - Pin 10 Pin 17 - Pin 11 Pin 18 - Pin 12 Pin 19 - Pin 13 Przestawiam ustawienia Arduino IDE na ustawienia Atmegi 328P bez kryształu której chcę wgrać: Variant: 328P / 328PA Clock: 8 MHz internal BOD: 2.7v Compiler LTO: LTO enabled Bootloader: Yes (UART0) Port: port pod którym jest Arduino UNO Wybieram programator: Arduino as ISP Naduszam "Burn Bootloader" I niestety otrzymuję błąd sygnatury, cały log wygląda następująco: avrdude: Version 6.3-20171130 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "E:\Moje dokumenty\Arduino\hardware\MiniCore-master\avr/avrdude.conf" Using Port : COM4 Using Programmer : arduino Overriding Baud Rate : 19200 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : Arduino Description : Arduino Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 (retrying) Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 (retrying) Error while burning bootloader. Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Próbowałem już wielu podłączeń, pull-up rezystora na reset, innych szkiców ArduinoISP. Niestety efekt ciągle ten sam. Nie mam jednak dużego doświadczenia z samymi bootloaderami (co innego z pisaniem szkiców) i czystym scalakiem. Co robię źle? Czy pierwszy raz jednak muszę użyć oscylatora, czy może gdzieś te całe "fusebity" są popieprzone i coś się ze sobą gryzie? Z góry dzięki za pomoc, starałem się opisać dokładnie problem, żeby uniknąć notorycznie pojawiających się na zagranicznych forach porad typu "sprawdź kable". Edytowano Marzec 18, 2019 przez Kucharskov Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Marzec 18, 2019 Udostępnij Marzec 18, 2019 Masz kondensator na resecie w Arduino? Cytując https://www.arduino.cc/en/Tutorial/ArduinoISP: The 10µF electrolytic capacitor connected to RESET and GND of the programming board is needed only for the boards that have an interface between the microcontroller and the computer's USB, like Mega, Uno, Mini, Nano. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Kucharskov Marzec 18, 2019 Autor tematu Udostępnij Marzec 18, 2019 (edytowany) 17 minut temu, ethanak napisał: Masz kondensator na resecie w Arduino? Cytując https://www.arduino.cc/en/Tutorial/ArduinoISP: Pomijając fakt, że na żadnym z poradników (łącznie z tym na stronie Arduino pt "Minimal Circuit (Eliminating the External Clock)") nie ma wzmianki o takim kondensatorze, to nawet po jego dodaniu wciąż ten sam błąd. Edytowano Marzec 18, 2019 przez Kucharskov Cytuj Link do komentarza Share on other sites More sharing options...
kaczakat Marzec 19, 2019 Udostępnij Marzec 19, 2019 Ściągnij sobie program AVR LAB++ 2.4 https://rctruck.pl/forum/download/file.php?id=35515 wybierz programator AVRISP, port COM, baud rate 19200 i spróbuj odczytać. W tym programie jednak lepiej skompilować sobie szkic na nowo z prędkością 115200 i takiej używać, wystarczy przenieść komentarze, są już wpisy w szkicu. Nic nie jest doskonałe, 19200 w AVR LAB działa tylko do identyfikacji na pierwszej zakładce (ostatnia strona tamtego wątku, opisałem problem, ale autor ma inne zajęcia na razie). PIN reset Arduino (nie ten do resetowania programowanego procka) podpina się pod duży kondensator by się programator nie resetował podczas otwierania portu COM (co Arduino zwykle robi), ale mi działało bez tego. AVR ISP i USBASP często źle działają w Arduino IDE coś tam jest z wersjami AVR DUDE vs sterowniki. Ale używasz wersji z MiniCORE, może powiela AVRDUDE? Jak zadziała w AVR LAB to odznacz sobie ptaszka przy fuse CKDIV8 i zapisz do AVR (tu już musi być szkic na 115200). To drugi problem z Arduino, nie ogarnia procków z zegarem 1MHz, do USBASP jest osobny programator do tego - USB ASP (SLOW), w sumie do Arduino ISP też jest taka wersja (slow). No a po wgraniu bootloadera z 8MHz od razu trzeba przełączyć na normalny typ programatora. Jeśli zauważysz, że AVR LAB działa, a w Arduino ciągle lipa to podmień sobie AVRDUDE i jego config na ten z AVR LAB (tylko na czas wgrywania coś programatorem). Mam nadzieję, że nie spinasz resetów procków, taki przypadek też widziałem. Można też sobie zrobić programator typu klon MKII z klona Arduino MICRO, koszt MICRO z Ali ~3$, nie ma takich bóli w Arduino i działa też z AS7, oprócz ISP obsługuje TPI (attiny10) i PDI (XMega), jak coś to mogę wrzucić prosty opis i wsad. 1 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Kucharskov Marzec 19, 2019 Autor tematu Udostępnij Marzec 19, 2019 @kaczakat wielkie dzięki za spory opis i wiele cennych informacji. Co do resetów to pod pin 1 scalaka mam podpięty pin 10 UNO. W samym UNO na się rozumieć powinienem wpiąć kondensator pomiędzy piny opisane. GND i RST? Jeżeli byś mógł to proszę o wypunktowaną listę kroków (co po kolei z jaką prędkością na UNO i scalaku) do AVR LAB++ ponieważ pomiędzy krokami opisujesz normalny proces wgrywania i w połowie się zgubiłem co do czego. A aktualnie chce wgrać tylko bootloader. Później już zwykłym FTDI konwerterem wgrywać szkice. Arduino micro do mnie leci więc chętnie przeczytam również o tworzeniu takiego programatora. Ale jaka jest różnica między micro a uno? Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Marzec 19, 2019 Udostępnij Marzec 19, 2019 1 godzinę temu, Kucharskov napisał: W samym UNO na się rozumieć powinienem wpiąć kondensator pomiędzy piny opisane. GND i RST? Ciekawe, przecież pisałeś że to zrobiłeś... 14 godzin temu, Kucharskov napisał: Pomijając fakt, że na żadnym z poradników (łącznie z tym na stronie Arduino pt "Minimal Circuit (Eliminating the External Clock)") nie ma wzmianki o takim kondensatorze, to nawet po jego dodaniu wciąż ten sam błąd. To ja tak z ciekawości - co właściwie wtedy zrobiłeś? Cytuj Link do komentarza Share on other sites More sharing options...
Kucharskov Marzec 19, 2019 Autor tematu Udostępnij Marzec 19, 2019 @ethanak owszem, zrobiłem to - wpiałem kondensator tak jak mówiłeś. Tu dopytuję żeby wpiąć go w dobry układ bo raz kondensator jest pod reset w scalaku a raz w układzie który służy jako programator. Cytuj Link do komentarza Share on other sites More sharing options...
Kucharskov Marzec 19, 2019 Autor tematu Udostępnij Marzec 19, 2019 Problem został rozwiązany w najprostszy możliwy sposób - za kilka groszy dokupiłem rezonator kwarcowy 16MHz i 2 kondensatory ceramiczne 22 uF. Wtedy od razu Arduino IDE wykryło Atmegę tak samo jak polecany wyżej program. Gdy wgrałem bootloader z MiniCore udało się później (po zdemontowaniu kwarcu i kondensatorów) wgrania bootloadera z zegarem wewnętrznym. Pokusiłem się nawet o zegar 20MHz żeby zobaczyć czy jest jakaś różnica w działaniu. Wszystko pięknie śmiga. Ostatecznie zostawiłem 16MHz i wgrałem przez AVR Lab++ czysty bootloader Uno na scalaka aby zachować kompatybilność z bibliotekami używającymi zegara. Cytuj Link do komentarza Share on other sites More sharing options...
kaczakat Marzec 19, 2019 Udostępnij Marzec 19, 2019 (edytowany) OK, przetestowałem to ale na NANO z 328P i 16MHz, nowy bootloader. Jako pacjent jest Atmega328P z fabrycznymi ustawieniami, 1MHz. Nie dodaję kondensatora do RST. Otwieram szkic, Arduino ISP, w linii 142 zmieniam komentarzami: //#define BAUDRATE 19200 #define BAUDRATE 115200 Wgrywam przez bootloader do NANO. Przechodzę do AVR LAB, wybieram AVRISP, port COM, u mnie 40, baud 115200, klikam odczytaj. I działa. Ale przyznam, że dostawałem już na głowę, bo przecież kiedyś to robiłem a nie działało. Wziąłem pierwszy z brzegu NANO z prockiem M168 i na nim nie działało Byłem w trakcie pisania, jak pojawił się Twój post z sukcesem, czyli udało Ci się wgrać bootloader, po prostu wgrałeś ten do zewnętrznego kwarcu. A i jeszcze dodam, że po zmianie baudrate na 115200 w Arduino też działa OK ale jako AVR ISP. Edytowano Marzec 19, 2019 przez kaczakat Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!