Skocz do zawartości

Programowanie ATmegi 328p przez UART


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 to post
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 to post
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 to post
Share on other sites

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 to post
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 to post
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 to post
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 to post
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 to post
Share on other sites
  • Gieneq zmienił tytuł na: Programowanie ATmegi 328p przez UART
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

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.