Zaprogramuj ATMega328P i używaj go bez płyty Arduino

13

Chciałbym użyć ATMega328P do mojego projektu, mam nadzieję, że zrobię to bez płyty Arduino.

Wiem, że z Arduino IDE i tablicą Arduino mogę zaprogramować mikrokontroler. Czy byłoby jednak możliwe po zaprogramowaniu i debugowaniu programu za pomocą Arduino IDE + Arduino, zabranie mikrokontrolera z płyty Arduino i używanie ATMega328P osobno, bez płyty?

Jeśli tak, jakie dodatkowe konfiguracje powinienem wykonać, aby ATMega328P działał poprawnie na płycie?

Jerzy
źródło
Użyj ATMEGA328 P-PU z programem ładującym Arduino UNO .... można go znaleźć w sklepach hobbystycznych oraz w Internecie i innych rzeczy ☺
Arthur
Korzystanie z gołego układu jest absolutnie wykonalne i nie stanowi żadnego problemu.
dannyf
To nie jest to samo pytanie, co twoje, ale możesz uzyskać z niego trochę informacji. arduino.stackexchange.com/questions/32970/…
Code Gorilla
Możesz śledzić odpowiedzi na to pytanie
Rashedul Islam Emon

Odpowiedzi:

7

Możesz usunąć ATMEGA z Arduino i używać go we własnej płytce, jednak w przypadku użycia na typowej płytce Arduino układ zostanie połączony z zewnętrznym kryształem jako źródłem zegara, a nie (prostszy, ale mniej dokładny) zegar wewnętrzny.

Nie możesz zmienić źródła zegara przez ISP, chyba że źródło zegara, którego aktualnie oczekuje układ, działa, więc jeśli chcesz zmienić wybór zegara, zrób to przed usunięciem układu z Arduino.

Możesz jednak również dostarczyć kryształ zegarowy i jego dwa kondensatory (lub zastępczy rezonator, który często ma to wbudowane) na swojej płycie zewnętrznej.

Zwykle układy scalone (nawet te, które dla wygody są wstępnie flashowane za pomocą bootloadera) są tańsze niż płyty, więc nie jest jasne, dlaczego chcesz przenieść ten sam układ z Arduino, zamiast używać innego. W każdym razie będziesz potrzebować adaptera szeregowego na poziomie logicznym USB, a kiedy już to zrobisz, będziesz mógł tworzyć własne układy na płycie głównej, nawet jeśli wykonasz wstępne testy na Arduino. W skrócie, jeśli nie masz konwertera USB, możesz albo wyciągnąć układ z płyty Arduino i poprowadzić przewody z jego D1 i D0, lub przytrzymać układ wewnętrzny w resecie, aby umożliwić pożyczenie tych linii szeregowych bez ingerencja.

Chris Stratton
źródło
1
Moim pomysłem jest użycie tylko mikrokontrolera bez płyty. Ponieważ programowanie Arduino jest łatwe, pomyślałem, że mogę wybrać ATMega. Tak więc mam Arduino uno, moim pomysłem jest zakup tylko jednego ATMega i zaprogramowanie go i debugowanie za pomocą płyty uno. Jednak właśnie powtórzyłem, że jeśli odseparuję ATMega od Arduino, będę musiał dodać komponenty (kryształ, rezystancję podciągania ...). Czy możesz wyjaśnić, co masz na myśli w ostatnim akapicie swojego postu? Czy istnieje prosty sposób bezpośredniego zaprogramowania ATMega (lub innego mikrokontrolera) bez użycia IDEino arduino? Dzięki.
George,
Chociaż możesz pominąć IDE, korzystanie z niego lub nie jest zasadniczo nieistotne dla złożoności obwodu, ponieważ możesz albo użyć IDE, albo nie z obwodem, który ma lub nie ma zewnętrznego zegara i albo używając USB- serial na tablicy docelowej, na kablu lub programując szkic za pomocą programatora ISP. Usunięcie chipa z planszy nie daje nic w porównaniu z samym zakupem chipa z bootloaderem lub bez i ładowaniem go sam, potencjalnie używając twojego nienaruszonego Arduino jako programisty ISP lub używając ISP do bezpośredniego załadowania twojego szkicu bez bootloadera.
Chris Stratton,
7

Tak, możesz używać ATMega328Pbez tablicy Arduino. Zawsze używam IC bez arduino. Można to zrobić na dwa sposoby.

  1. Możesz użyć tablicy Arduino z IC. Zaprogramuj układ scalony, a następnie wyjmij go i użyj w swoim obwodzie. Będziesz musiał używać 16MHZ Oscillatorkondensatorów.
  2. Jeśli nie masz płyty arduino, możesz użyć innych programistów, którzy lubią USBaspprogramować Atmega328p. W takim przypadku nie używaj przycisku bezpośredniego przesyłania, zamiast tego użyj przesyłania za pomocą opcji programatora z menu pliku. Nie zapomnij wybrać planszy jako Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328i programisty jako USBasp.

UWAGA : Patrz Mapowanie pinów Atmega328p i odpowiednio zaprogramuj urządzenie. Cieszyć się!

Samolot
źródło
2

Wyszukaj „Zbuduj Arduino” - znajdziesz mnóstwo artykułów instruktażowych na ten temat. Musisz mieć możliwość lutowania połączeń na płytce drukowanej (i nawet tego, jeśli chcesz użyć płyty lutowniczej bez lutowania), ale to naprawdę proste. Możesz go najpierw zbudować i zaprogramować MCU na płytce drukowanej za pomocą kabla FTDI. Używam płyty Arduino i płyty lutowniczej bez lutowania, aby eksperymentować z nieznanymi częściami, ale zwykle przechodzę od razu do ręcznie zbudowanej płyty, gdy tylko poznam wszystkie elementy, których będę używać.

Prototypowanie za pomocą płyty Arduino pozwala zrzucić razem kilka części i sprawić, by coś szybko działało, a jeśli Arduino jest bardziej zdolny niż twój ostateczny cel - f / ex, Mega 2650 - możesz tymczasowo zignorować ograniczenia pamięci i We / Wy mniejszego urządzenia.

JRobert
źródło
0

Korzystanie z samodzielnego układu Arduino jest dość łatwe. Jedyną trudną rzeczą w układzie używanym do oficjalnych płyt jest to, że są one połączone w celu użycia szybszego (i dokładniejszego) zewnętrznego oscylatora, który jest zamontowany na płycie. Dotyczy to nawet zakupu luźnych układów, ponieważ większość z nich jest odsprzedawana z zamiarem zainstalowania na płycie Arduino w celu zastąpienia wypalonej płyty, z wyjątkiem być może kart Digikey.

Ostrzeżenia: Arduino zostało zaprojektowane jako płyta prototypowa i niewiele rzeczy radzi sobie lepiej niż przy tym zadaniu. Możesz zostawić układ na płycie Arduino, dopóki nie zakończysz projektowania i testowania obwodu. Dopiero wtedy podłączasz go bezpośrednio. Można go użyć na miejscu, jeśli masz obwód zegara lub możesz zmienić bezpieczniki (patrz później) i przeprogramować Arduino za pomocą adaptera ISP i częstotliwości taktowania 8 MHz (PlatformIO pozwala to zrobić ( i umożliwia bezpośrednie importu szkicu Arduino) - sprawdź na stronie z dokumentami wtyczkę Atmel AVR, ale możesz także znaleźć kilka poradników, jak dodać plik tablicy do Arduino, aby użyć opcji 8 MHz dla gołego układu)

Jeśli wyjmiesz układ w celu użycia go w innym obwodzie, musi on ponownie dodać obwód zegara lub wymienić bezpieczniki (przejdę do tego za minutę). Programowanie będzie trudne z wielu powodów, dlatego warto kupić trochę dość taniego sprzętu:

Programowanie samodzielnego układu scalonego: Procesor Arduino nie jest przeznaczony do komunikacji z komputerem. Potrzebujesz pośrednika. Na Uno odbywa się to za pośrednictwem drugiego układu Atmel, który ma możliwość USB i bootloadera na głównym układzie. To, co robi, polega na tym, że używa UART do przesyłania programu, podczas gdy układ USB konwertuje wiadomości z komputera na sygnały UART. Ponieważ bootloader jest nieco uciążliwy, gdy układ działa samodzielnie (ponieważ UART jest wybredny, a jego zainstalowanie powoduje, że chip korzysta z zewnętrznego zegara), będziesz chciał kupić programator ISP dla Arduino (lub postępuj zgodnie ze szkicem Arduino-as-ISP i instrukcjami, aby stworzyć własne, które wymagają Arduino z obecnym układem, więc musisz zaprogramować sekundę).

Mogą one zaprogramować ATMega 328 bezpośrednio przez SPI, bez bootloadera (istnieje wiele instrukcji w Internecie; na przykład wyszukaj „program goły ATMega 328P z USBAsp”). Ułatwia to zmienianie i debugowanie programu bez wyrzucania układu z powrotem do oryginalnej płyty Arduino. Potrzebujesz także jednego, aby zmienić ustawienia zegara, jeśli nie chcesz używać zewnętrznego kryształu.

Jeśli chcesz debugować układ, warto również kupić adapter FTDI lub inny konwerter USB-na-UART. Zauważ, że bez części obwodu resetu na płytce (lub ponownie, dodając własną), nadal nie pozwoli ci to zaprogramować ATMega nawet z bootloaderem. W tym celu podłącz styki uziemienia, RX i TX do adaptera. Możesz lub nie chcesz podłączyć linii VCC, ale nie zaleca się tego, jeśli do układu jest wiele rzeczy i / lub ma on własne zasilanie. Zauważ, że RX i TX muszą zostać zamienione podczas ich łączenia; to znaczy, RX na TX i TX na RX - chcesz, aby chip do RX (odbierał) czym jest adapter (transmituje) TX i na odwrót.

Układ zegara nie jest trudny do zbudowania, ale wymaga kilku elementów, których możesz nie mieć. Aby zmienić źródło zegara , przejdź do strony http://www.engbedded.com/fusecalc/ i wybierz ATMega 328P. Domyślne wartości są dobre, ale możesz chcieć włączyć EEPROM-a-wymazać i wyłączyć podział zegara przez 8 lub dostosować ustawienia wygaszania. Nie dotykaj niczego innego (wyłączenie resetowania lub SPI lub włączenie DebugWire skutkuje „zabawą” wymagającą naprawy programisty HV). Po zakończeniu wklej dostarczone polecenie do polecenia AVRDude. Będziesz musiał zmienić opcje -c (-p jest już ustawiony na ATMega 328P, ale nie powiedzie się w przypadku modeli innych niż P 328 - nie kupuj ich), i być może dodaj opcję -P (dla portu). Nie pomijaj opcji -u małych liter, ponieważ odmówi to aktualizacji bezpieczników.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Zauważ, że jeśli kupisz USBASP (upewnij się, że ma trzy zestawy zworek!), Pomimo tego, że są moim ulubionym programistą, mogą nie mieć zaktualizowanego oprogramowania, które obsługuje opcję -B (które prawdopodobnie będziesz potrzebować). Oznacza to, że musisz podłączyć go do Arduino przez sześciopinowy port programowania, dokładnie tak samo, jak przy programowaniu bootloadera Arduino, ale następnie użyj szkicu Arduino jako ISP, aby zaprogramować nowy oprogramowanie układowe do programatora (wyszukaj „zaktualizuj oprogramowanie układowe USB poprzez arduino-as-isp”)! Dla porównania, to zwykle oznacza, że kabel wychodzi z dala od ciała pokładzie, i prawdopodobnie będziesz musiał zaprogramować szkic przedpodłączenie kabla. Włącz także zworkę power-from-programmer na USBASP (5V) i zworkę „samoprogramującą”. (patrz https://forum.arduino.cc/index.php?topic=560719.0 w celu uzyskania informacji o lokalizacji zworek zasilania i programu (JP2)).

RDragonrydr
źródło