Skocz do zawartości

Które mikrokontrolery wybrać?


Kozy

Pomocna odpowiedź

Witam,
przymierzam się do nauki programowania uC, ale niestety jeszcze słabo poruszam się w tym temacie i mam parę pytań.

Wiem, że są różne typy uC (AVR, ARM...) pytanie który wybrać? Wiem, że ARM to wyższa półka jazdy, ale można chyba więcej zrobić. Wiem, że jest jeszcze coś takiego jak Adruino. Pewnie jeszcze wiele więcej się znajdzie 🙂 Widziałem, że przy ARM są kolorowe, dotykowe wyświetlacze czy z AVR też można zrobić takie połączenie?

Mam jeszcze jedno pytanie odnoście np. AVR8 czy AVR32. Czym to się różni i co oznaczają te liczby?

Może jakiś link do artykułu gdzie są porównywane te technologie, ewentualnie proponuje zrobić plusy i minusy każdej z nich.

Link do komentarza
Share on other sites

W AVR8 i AVR32 liczby odnoszą się do architektury 8-bitowej lub 32-bitowej. Jako początkujący powinieneś zacząć od ośmiobitowców czyli AVR, PIC, 8051 itp Ich podstawowe zalety to prostota oraz duża dostępność materiałów szkoleniowych i gotowych projektów. Poza tym łatwo o sprzęt do nich taki jak programatory, debugery czy płytki testowe, a same scalaki są dostępne w obudowach przewlekanych przez co łatwiej je lutować albo używać z płytką stykową.

Wśród armów jest ogromne zróżnicowanie. Najtańsze kosztują mniej niż AVRy 8bitowe ale i tak są od nich lepsze, a są też takie dorównujące parametrami procesorom z PCtów i montuje się je na przykład w smartfonach. Licencje na rdzenie ARM ma wielu producentów i na przykład AVR32 czy PIC32 opierają się właśnie na armach.

Generalnie powinieneś zacząć od 8bitowców i przy okazji programowania nauczyć się też obsługi oprogramowania, tworzenia schematów układów, korzystania z datasheeta itp. Dopiero jak to opanujesz możesz pomyśleć nad przesiadką na 32-bitowce. A co do wyświetlaczy to spokojnie powinieneś dać radę je obsłużyć również na atmegach.

Link do komentarza
Share on other sites

Tak skacząc po innych forach to w sumie zastosowanie odpowiedniego uC zależy od naszych potrzeb. Teraz pytanie czy dojdę do jakiegoś pomysłu/ projektu gdzie np. będę potrzebował więcej niż atmega32. Jak mniej więcej wyczuć tą granicę?

Pytanie jeszcze jak bardzo się różni program np. pomiędzy AVR czy ARM? Podejrzewam, że jak pisałem w assemblerze to wszystko zależało od procesora więc pewnie tu będzie zależało od konkretnego uC.

Jeszcze do tego porównania włączyłbym STM oraz jak ktoś może mi wytłumaczyć dlaczego niektórzy wyśmiewają Arduino? Kurczę trochę dużo tego jest. Pytanie co wybrać?

Link do komentarza
Share on other sites

Zacznę od końca;)

4. Na Arduino nie piszesz w 'czystym' C, więc nie jest najlepsze do nauki. Dodatkowo stosunek ceny do możliwości arduino nie jest lekko mówiąc korzystny.

3. STM32 to kolejna rodzina ARMów. Ostatnio coraz bardziej popularna, pewnie przez wypuszczenie tanich zestawów startowych (DiscoveryBoard) i bibliotek umożliwiających szyvki start.

2. Dobrze napisany program w C jest przenośny. Zmienia się tylko warstwa sprzętowa. Nawet skacząc między AVR czasami zachodzi konieczność drobnych zmian w warstwie sprzętowej.

1. Uważam, że kiedy osiągniesz takie umiejętność, żeby napisać program wykraczający poza MEGE32, to będziesz już potrafił określić tą granicę. Dla amatora ważne są trzy rzeczy: odpowiednie peryferia, ilość pamięci, łatwość montażu.

Mam nadzieję, że trochę rozwiałem Twoje wątpliwości;)

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

Tak naprawdę nie ma to większego znaczenia.

Na tą chwilę sam nie wiesz czego potrzebujesz, więc każdy procesor będzie dobry.

ATMEGA - szczególnie ATMEGA8 i 32 - są preferowane dla amatorów z polski, ponieważ jest naprawdę dużo dokumentacji, przykładów, opisów i osób znających te mikrokontrolery - a to wszystko w języku polskim.

Co do tego ile można wyciągnąć z takiego procesora to zależy to głównie od 2 czynników:

1. Sprzętowe peryferia - te w ATMEGAch są całkiem niezłe, szczególnie w tych nowszych jak np. atmega88pa. Chociaż wiele armów ma dużo bogatsze peryferia.

Po co one są? Pozwalają Tobie sprzętowo wykonywać wiele rzeczy - np. komunikację po SPI/I2C/UART, generowanie sygnałów PWM czy konwersję sygnału analogowego na cyfrowy. Dzięki nim program może zajmować się rzeczywistą kontrolę czegoś, a nie detalami typu generowanie PWM.

2. Niezbędna jest natomiast wiedza programisty o całości. Czasami początkujący programista może zająć 10KB kodu i 100% czasu procesora na coś, co wprawnemu programiście zajmie 0.5kB kodu i 5% procesora. Dlatego zaczynanie z pewnymi ograniczonymi zasobami ma ten plus, że przy okazji można sporo nauczyć się o tym jak dobrze wykorzystać mikrokontroler zamiast po prostu kupować lepszy gdy program zaczyna zwalanić.

Reasumując - atmega i/lub arduino (które zresztą też jest na atmega) to dobry i pewny start. Jak opanujesz jeden mikrokontroler to dosyć łatwo przejdziesz na inny w przyszłości, ale wtedy będziesz wiedział co potrzebujesz i dobierzesz sobie coś "na miarę".

  • Lubię! 1
Link do komentarza
Share on other sites

Uważam, że jeżeli kolega chce 'zabawić' się w tym temacie na dłużej i przejść potem na ARMY, to wybór ARDUINO to zła decyzja. Nie nauczy się dobrze C korzystając z ich bibliotek.

Link do komentarza
Share on other sites

Dla początkującego zdecydowanie AVRy.

Co do ARDUINO, to zależy jak się na to patrzy. Jako platforma sprzętowa spoko.

Jeżeli o jej programowanie, to nie ma problemu programować, w języku innym niż dedykowany, można spokojnie użyć GCC, czy nawet BASCOM. To tylko kwestia załadowania programu do CPU.

Link do komentarza
Share on other sites

@up

Tylko czy jest wtedy sens płacić dosyć spore sumy za kolejne shieldy? Myślę, że lepszą wersją jest jakiś zestaw startowy, o wyborze którego na forum już nie raz były dyskusje;)

Link do komentarza
Share on other sites

Licencje na rdzenie ARM ma wielu producentów i na przykład AVR32 czy PIC32 opierają się właśnie na armach.
ARMy od Atmela to ARMy od Atmela, a 32bitowe AVRy to 32bitowe AVRy 😉
Link do komentarza
Share on other sites

Witam,

przymierzam się do nauki programowania uC, ale niestety jeszcze słabo poruszam się w tym temacie i mam parę pytań.

Wiem, że są różne typy uC (AVR, ARM...) pytanie który wybrać? Wiem, że ARM to wyższa półka jazdy, ale można chyba więcej zrobić. Wiem, że jest jeszcze coś takiego jak Adruino. Pewnie jeszcze wiele więcej się znajdzie 🙂

Nie na darmo w przedszkolu najpierw klocki drewniane dają 🙂

Zacznij od AVR tak: Mikrokontrolery - Jak zacząć?

a po jakimś czasie zdecydujesz, czy przesiąść się na inne, ponieważ tylko Ty wiesz jakie będziesz miał potrzeby vs wielkość portfela.

Link do komentarza
Share on other sites

@up

Tylko czy jest wtedy sens płacić dosyć spore sumy za kolejne shieldy? Myślę, że lepszą wersją jest jakiś zestaw startowy, o wyborze którego na forum już nie raz były dyskusje;)

Zgodzę się z tym. Sam używam Arduino i kupno dodatkowych shildów jest kosztowne, zwłaszcza jeśli swój projekt chce się rozbudowywać nie poprzestając na jednym.

Link do komentarza
Share on other sites

Ja dopiero zaczynam, wybrałem AVRy i język C. To dlatego że gdzie nie spojrzysz, jako mikrokontroler wykorzystany jest przeważnie AVR któryś. Proste programy można wcisnąć nawet w Attiny13, który ma jak pamiętam 1 kb pamięci, mój pierwszy projekt na nim robię, zająłem 1/4 pamięci, gdzie mam zawarte proste sterowanie portami i klawiaturę (i jeszcze jeden nie wykorzystany klawisz:P). Nie wiem jak z dużymi programami, ale jak do nich dojdziesz, to pewnie będziesz na takim etapie że oszacujesz ile pamięci Ci zajmie i jakich peryferiów potrzebujesz.

Zaś jeśli, a na pewno staniesz przed problemem, masz dylemat co do języka, bierz C. Nie jest trudny, za to naprawdę uniwersalny, szczerze mówiąc nie wiem czym tego nie zaprogramujesz, czy jakiego sprzętu nie obsłużysz:P

W skrócie, polecam AVR i C, a jeśli potrzebujesz książki, to polecę Ci publikacje Kardasia, dłużej czekałem na książkę (a brałem kuriera), niż z jej pomocą ogarnąłem podstawy języka i sposoby wykorzystania wszelakich funkcji procesora. Nie taki diabeł straszny jakim go malują, czy jakoś tak;P

Link do komentarza
Share on other sites

Wracam do tematu bo już sobie poszukałem, poczytałem, popatrzyłem i doszedłem do tego, że albo STM32 albo arduino.

Można powiedzieć że wzięte jest to z 2 końców kija, ale czemu tak.

Arduino dlatego że jest proste, ma dużo materiałów i można się skupić na innych rzeczach, fakt jest taki że trochę to drogie.

STM32 bo to już ARM i technologia wyżej (takie jest moje odczucie), trochę ciężej na starcie ale większa satysfakcja z zrobienia czegoś, trochę trzeba poświęcić czasu na naukę i mam wrażenie że jest mało materiałów do nauki, ale technologia staje się popularniejsza i jest co raz więcej tego.

Teraz pytanie co bardziej się opłaca wybrać?

Jakie są różnice pomiędzy Arduino i stm32? Czy jest coś co zrobię na stm32, a nie zrobię na arduino? Z stm32 będzie problem w osadzeniu tego na jakimś gotowy układzie tj. problem z lutowaniem tego. Jeszcze cena, czy przykładowo koniecznie muszę kupować moduł arduino do arduino czy mogę sobie kupić coś tańszego i podłączyć?

Gdzieś chyba jeszcze kiedyś przewinęło mi się że istnieje arduino na stm32.

__________

Komentarz dodany przez: Bobby

_allegro

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.