kellyq Napisano Grudzień 18, 2020 Udostępnij Napisano Grudzień 18, 2020 Hej Mam mały problem z zaprogramowaniem gołej atmegi 328p przez programator usb-uart. Wgrałem bootloader uno za pomocą arduino uno jako programator, wgrałem też program "blink" dla sprawdzenia czy działa atmega. Chciałem teraz spróbować zaprogramować ją przez uart z użyciem programatora który niestety nie ma funkcji autoresetu (DTR pin). I teraz nie wiem kiedy dokładnie nacisnąć przycisk resetu podczas programowania żeby kod się wgrał. Pomoże ktoś życzliwy?
marek1707 Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 (edytowany) Wgrywanie nowego kodu do procesora za pomocą programatora zwykle niszczy poprzedni (można to zmienić, ale domyślnie tak to działa). To oznacza, że wgrywając blink zniknąłeś bootloader. Musisz wgrać bootloader a potem już tylko za pomocą niego, przez przejściówkę USB->UART wgrywać wszystko inne. No a z ręcznym RESETem musisz wyczuć sprawę. Po paru próbach nauczysz się, bootloader daje sekundę-dwie na tę operację. Jeśli zrobisz jednocześnie "Wgraj" i naciśniejsz i puścisz RESET - powinno zadziałać Edytowano Grudzień 18, 2020 przez marek1707 1
kellyq Grudzień 18, 2020 Autor tematu Udostępnij Grudzień 18, 2020 Źle się wyraziłem, wypaliłem bootloader. Potem wgrałem pierwszy szkic. Generalnie chodzi mi tylko o moment naciśnięcia resetu, kiedy dokładnie. Naciskam i jednocześnie klikam na upload i kupa za przeproszeniem.
marek1707 Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 A w jaki sposób wgrałeś pierwszy szkic? Przecież wtedy musiałeś sobie z RESETem poradzić.
kellyq Grudzień 18, 2020 Autor tematu Udostępnij Grudzień 18, 2020 Już pisałem, bootloader jak i pierwszy szkic migający diodą wgrałem używając płytki arduino uno jako programatora isp, czyli podłączyłem się do tej gołej atmegi przez piny miso, mosi, sck i reset. Jako że ta goła atmega idze do wlutowania do urządzenia chciałem ją potem programować przez rx i tx oraz to nieszczęsne naciskanie resetu (bo nie mam programatora z automatycznym resetowaniem, a podpinanie arduino uno potem do tego urządzenia może być nieco problematyczne). I właśnie tego resetu nie mogę totalnie wyczuć
ethanak Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 46 minut temu, kellyq napisał: wypaliłem bootloader. Potem wgrałem pierwszy szkic. A wgrywając pierwszy szkic usunąłeś bootloader.
ethanak Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 Może trzeba kilka razy? Podobno za trzecim dociera do 85%...
kellyq Grudzień 18, 2020 Autor tematu Udostępnij Grudzień 18, 2020 To że niby bootloader to jako taki zwykły szkic jest traktowany? Dobra już załapałem o co chodzi Dzięki
marek1707 Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 Programator (nawet taki zrobiony z Arduino) ma gdzieś jaki program wgrywasz (po Twojemu: wypalasz). Tuż przed załadowaniem nowego kodu robi on automatycznie operację chip erase, która kasuje/usuwa wszystko co było poprzednio w procesorze. Wgrywasz bootloader - masz bootloader. Wgrywasz jakiś swój własny program - masz tylko ten program. Jeszcze bardziej po polsku nie umiem. Natomiast bootloader - kiedy już go wgrasz i pracuje, przed otrzymaniem przez UART kolejnego "szkicu" usuwa z pamięci FLASH tylko poprzedni. Sam siebie nie kasuje - niegłupio to wymyślone, prawda? 1
kellyq Grudzień 18, 2020 Autor tematu Udostępnij Grudzień 18, 2020 Zgadzam się, bardzo to sprytne. Teraz już będę wiedział co i jak. A bootloadera zapewne nie da się przez uart wgrać tylko przez ISP prawda?
marek1707 Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 Nie, nie da się. UART to zasób procesora z którego może skorzystać program. Ale żadnego programu w czystym procesorze nie ma. Natomiast programator "dobiera" się do wewnętrznych pamięci procesora poprzez 4 specjalne piny, przez które (po wykonaniu odrobiny sprzętowej magii) jakby "widać" pamięć FLASH lub EEPROM procesora. Można je wtedy skasować, zapisać, odczytać itp. Programator może robić wiele innych ciekawych rzeczy, poczytaj kiedyś o tym.
Matthias Grudzień 18, 2020 Udostępnij Grudzień 18, 2020 Ostatnio temat ten przerabiałem i powiem tak. Wgrywasz za pomocą Arduino UNO bootloader i tylko bootloader, żadnych skeczy. Podłączasz programator usb uart. Oczywiście pin tx programatora do pinu rx Atmegi i podobnie z pinem rx programatora czyli do tx Atmegi. Ja się bawiłem konwerterem UART TTL RS232 PL2303HX USB 2.0. Oczywiście odpalasz środowisko Arduino IDE i w menu narzędzia patrzysz port do którego masz podłączony programator czyli COM. Ustawienie "Płytka" jeżeli wgrywasz program "skecz" do Atmegi 328 to musi być "Arduino Uno" jeżeli dla Atmegi 8/168 wybiersz wtedy Arduino NG or older i wtedy jeszcze pojawia ci się jedno ustawienie procesor z którego wybierasz jeden z dwóch, który aktualnie będziesz programował. Teraz najważniejsza kwestia kiedy nacisnąć RESET. Klikasz wgraj i patrzysz na napis na zielonym pasku nad czarnym okienkiem w którym pojawiają się informacje. Jeżeli jest napis kompilowanie szkicu i pasek postępu nic nie wciskasz. Kiedy pasek postępu dobiegnie końca i pojawi się komunikat Wgrywanie szybko wciskasz przycisk reset. Dlatego przed wgraniem miej palec blisko tego przycisku i obserwuj komunikaty, które powyżej napisałem Pozdrawiam
kellyq Grudzień 19, 2020 Autor tematu Udostępnij Grudzień 19, 2020 16 godzin temu, marek1707 napisał: Natomiast programator "dobiera" się do wewnętrznych pamięci procesora poprzez 4 specjalne piny, przez które (po wykonaniu odrobiny sprzętowej magii) jakby "widać" pamięć FLASH lub EEPROM procesora. Można je wtedy skasować, zapisać, odczytać itp. Programator może robić wiele innych ciekawych rzeczy, poczytaj kiedyś o tym. Czego mam dokładnie szukać, może jakieś haslo klucz.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »