Skocz do zawartości

Bootloader arduino na atmege328p - problem z serial monitorem


majsteRantony

Pomocna odpowiedź

Witam. Otóż zmontowalem sobie kilka projektów(światło na pilota, zamek do drzwi , itp.), które działają przy użyciu pilota na podczerwień (taki mały pilot do komputera którego używałem kiedyś do oglądania telewizji na komputerze). Na moim Leonardzie każdy projekt działa bez zarzutu, lecz gdy chciałbym przenieść projekt z płytki na atmege przestaje działać. Jak zmienić program albo co dodać do układu żeby wszystko działało. Domyślam się ze w samej 328p nie ma serial monitora i w tym tkwi problem, tylko nie wiem jak go rozwiązać :b bardzo dziękuję za pomoc 🙂

Link do komentarza
Share on other sites

Napisz dokładnie co i jak robisz, bo kod arduinowy ładowany bootloaderem jest kompletnym programem. Nie potrzebuje niczego rezydującego wcześniej w procesorze, więc jeśli ten sam plik hex wgrasz do "gołej" ATmegi 328 powinien działać dokładnie tak samo.

Link do komentarza
Share on other sites

No po prostu mam napisany program i działa na arduino a jak przeniosłem na atmege która ma bootloader to nie działa mi. (Dla przykładu włączanie i wyłączanie diody Led za pomocą pilota)

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

Założyłem, że jeśli wgrywa przez IDE Arduino program na m328 to przestawił typ płytki/procesora i z konieczności przekompilował kod, bo inaczej avrdude (chyba?) by oprotestował niezgodność sygnatur. Ale jeśli wgrywa programatorem, to faktycznie może nie działać 🙁

OK, i tak czekamy na szersze wyjaśnienia.

EDIT: Co to znaczy: "przeniosłem na atmege"?

Link do komentarza
Share on other sites

Może wytłumaczę to jeszcze raz. Zrobiłem sobie sterowanie światłem za pomocą pilota IR (http://majsterkowo.pl/jak-sterowac-dowolnym-urzadzeniem-za-pomoca-pilota-i-arduino/). Wszystko działa na oryginalnym Arduino Leonardo.

Chciałem wszytko przerzucić na Atmege328p. Wgrałem bootloader i wrzuciłem na niego program z Arduino. I teraz program nie reaguje na naciśniecie przycisku na pilocie. Wgrywałem bootloader i program za pomocą programatora USBasp (http://botland.com.pl/programatory/2014-programator-avr-zgodny-usbasp-isp-tasma-idc-rozne-kolory.html).

Co może być przyczyną, że nie działa mi to wszystko ?

Mam nadzieje, że teraz dobrze wszystko wytłumaczyłem.

Link do komentarza
Share on other sites

Wszystko może być przyczyną. Ty widzisz ten program przed sobą, wiesz jak on działa (w końcu go napisałeś) i wiesz dokładnie jak to podłączyłeś. My nie wiemy nic, nie pokazałeś nam nawet swojego programu. W tej sytuacji możemy ci jedynie złożyć szczere kondolencje z okazji niedziałania.

Miej litość, podajże jakieś szczegóły. Mamy sobie z fusów wywróżyć co ci nie działa?

No dobra, jak mamy zgadywać, to:

1. Usunąłeś pętlę czekającą aż serial będzie gotowy? W 328 to niepotrzebne.

2. 32u4 ma przerwania na innych nóżkach, poprawiłeś to?

3. Na pewno wszystkie połączenia są tak, jak mają być?

4. Próbowałeś wgrać inny program, na przykład miganie LED-em? Działa?

5. Na pewno program jest na taką częstotliwość, jaki masz kwarc?

6. Nie działa zupełnie nic, czy coś konkretnego? Dodałeś debugowanie po serialu i masz jakieś dane z tego? W którym momencie się zatrzymuje?

Link do komentarza
Share on other sites

Rozpiszę Wam wszystko po kolei. I przepraszam za zamieszanie.

Mam Arduino Leonardo. Testowałem na nim odbiór kodów z pilota IR. Wszystko działa, mogę odczytać kody w monitorze portu szeregowego. Mogę zrobić zapalanie diody na pilota, mogę zrobić zapalanie światła za pomocą pilota. Wszystkie programy brałem z tej strony: http://majsterkowo.pl/jak-sterowac-dowolnym-urzadzeniem-za-pomoca-pilota-i-arduino/.

I na moim Arduino wszystko działa.

Następnie chciałem uwolnić moje Arduino i chciałem cały projekt przerzucić na atmege328p.

Wgrałem bootloader za pomocą programatora USBasp, korzystając z poradnika z tej strony: http://majsterkowo.pl/forum/programowanie-atmega8a-oraz-atmega328p-za-pomoca-arduino-t280.html. Następnie wgrałem program, który ma za zadanie mrugać diodą. Ten program działa. Inne programy działają również. Problem zaczyna się, gdy chce sterować pilotem (np. od telewizora lub innym).

Nóżki mam dobrze połączone, gdy zmieniałem arduino na atmege kierowałem się tym obrazkiem: http://www.jordanrejaud.com/images/atmegapinImage.png

Zasilanie mikrokontrolera: reset podciągnięty rezystorem 10k do plusa, kondensatory ceramiczne 100nF między vcc, avcc, aref a gnd.

Odbiornik podczerwieni podłączony według zaleceń z datasheetu.

Program w ogóle nie reaguje na przycisk pilota. Atmega328p nie ma podłączonego kwarcu. Taktuje 16Mhz tak jak ma wewnętrznie ustawione(sprawdzone MkvAVRcalculator)

Jeszcze raz przepraszam i proszę o pomoc 🙂 Z góry dzięki 😋

Link do komentarza
Share on other sites

"Według zaleceń z datasheetu" to znaczy do której nóżki dokładnie?

Nadal nie wiem o jakim kodzie cały czas mówimy. To, że "wziąłeś go z tej strony" raczej niewiele pomaga, tam jest dużo programów.

To może spróbuj tego debugowania po serialu jeszcze?

Nie miałem pojęcia, że 328 może działać na 16Mhz bez zewnętrznego oscylatora. Zawsze mi się wydawało, że ten wbudowany ma 8Mhz.

Link do komentarza
Share on other sites

Oczywiście, że ma 8MHz lub jego podwielokrotności (1/2, 1/4... 1/256).

A diodka LED w teście nie mrugała czasem 2 razy wolniej niż miała?

A UART nie wysyłał czasem znaków na 2x mniejszej prędkości? itd...

A z resztą domyślnie m328 przychodzi z fabryki ustawiona na 1MHz więc jeśli świadomie przestawiałeś na szybszą, to co ustawiłeś?

Link do komentarza
Share on other sites

Nie wykręcaj się tak łatwo 🙂 Skoro korzystasz z Forum, to wrzuć swoje 5 groszy do wiedzy. Napisz co było, też jesteśmy ciekawi. Skoro musiałeś debugować kod to znaczy, że wprowadzałeś jakieś poprawki. Czy oryginalny kod na Leonardo miał wady (żeby nie pisać "błędy"), czy przejście na 328 wymagało zmian? Jakich?

Link do komentarza
Share on other sites

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!

Gość
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.