Skocz do zawartości

Programowanie ATmegi 328p przez UART


kellyq

Pomocna odpowiedź

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?

Link do komentarza
Share on other sites

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 przez marek1707
  • Lubię! 1
Link do komentarza
Share on other sites

Ź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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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ć

Link do komentarza
Share on other sites

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?

  • Pomogłeś! 1
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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ę »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.