Skocz do zawartości

Wybór mikrokontrolera do nauki nowego języka


zuba1

Pomocna odpowiedź

Witam. Prawdą jest że jeśli się stoi w miejscu to się niczego nie osiąga a nawet można się cofać. Od paru już lat grzebię w mikrokontrolerach AVR programując je w Bascom i ASM. Wiele się nauczyłem ale stwierdziłem że na moje potrzeby są one za wolne(przetwarzanie danych). Szukam szybszego i większego mikrokontrolera na którym mógłbym się nauczyć języka C a przy okazji poznać nową rodzinę procesorów. W domu mam płytkę STM Discowery z mikrokontrolerem STM32F051 48MHz wygraną w konkursie STM. Niestety gdzieś słyszałem że w prędkości przetwarzania instrukcji tegoż procesora nieróżni się od AVR-ów -czy tak jest naprawdę?? Posiadam programator st-link z wyjściem SWD. Na dziś moje wymagania wyglądają tak:

Architektura: ARM

Rdzeń: Cortex M3

Producent: Tu mię nakierujcie jeśli się mylę ale programatory są strasznie drogie a ja mam już ST-LINKA więc chyba muszę wybierać coś z oferty ST ale mile widziane propozycje NXP i innych.

Język:C,ASM ale wole C

Częstotliwość: >50MHz (tu już nie żałujcie zegara potrzebny mi będzie każdy Hz)

Wyjścia:I/O,I2C,SPI,UART,ADC,PWM,itp.. (tradycyjnie)

Żeby była do niego dokumentacja i ludzie którzy będą w stanie mi pomóc w razie W.

Programowalny przez SWD z ST-LINKA

Mile widziana możliwość dopięcia dodatkowego Ram i Flash

Bawiłem się na AVR przetwarzaniem i analizą obrazu z kamery16x16 lub ze zdjęcia 130x130 ale znalezienie czerwonej plamy na obrazku z karty SD zajmowało mu kilkanaście sekund a ja bym chciał robić takie rzeczy na bieżąco.Z tond moje niecodzienne podejście do sprawy.Czekam na propozycje.Sensowne odpowiedzi nagradzam piwem 🙂 Z góry dziękuję.

Link do komentarza
Share on other sites

Jeśli posiadasz już płytkę od STM to polecam zacząć właśnie od niej ponieważ róznice między poszczególnymi uC z rdzeniem cortex od róznych producentów są niewielkie i przy wyborze producenta bardziej polecam patrzeć na dokumentację,środowisko programistyczne i popularność rodziny uC(co przekłada się na lepsze wsparcie ze strony użytkowników tych mikrokontrolerów), do tego za wyborem tej płytki przemawia wbudowany debugger, który przy nauce programowania oferuje nieocenioną pomoc.Aktualnie bawię się mikrokontrolerem LPC1114 na płytce którą otrzymałem wraz z książką "mikrokontrolery lpc1100 pierwsze kroki"(której zdecydowanie nie polecam) i co do nich to dokumentacja może na początku wydać się trochę nieczytelna(ale idzie się przywyczaić) w porównaniu z dokumentacją np. atmela .Co prawda na twojej płytce znajduje się uC z rdzeniem cortex-m0 ale pózniejsza migracja na cortex-m3 nie sprawi ci żadnych problemów, ponieważ ze strony programisty te mikrokontrolery niewiele się różnią, jedynie posiadają zazwyczaj trochę więcej peryferiów jak znudzi ci się ta plytka lub zabraknie mocy obliczeniowej to stm oferuje również bardzo fajne płytki z uC na rdzeniu cortex-m3 po bardzo atrakcyjnej cenie(sam przymierzam się do zakupue).Do tej płytki polecałbym też zakup jakiejś dobrej ksiązki o tych mikrokontrolerach.

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

1. Prędkość przetwarzania pojedyńczej instrukcji rzeczywiście jest podobna jak liczyć ją w ilości cykli zegara. Jednak procesory atmega działają z zegarem do ~20MHz, a najprostsze cortex-m0 mają zegar zazwyczaj do 48MHz.

2. Atmega to mikrokontroler 8bitowy, więc wykonanie operacji dodawania liczb 32bitowych oznacza kilka operacji dodawania. Jeszcze gorzej jest z mnożeniem... ARM jest procesorem 32bitowym i dla niego to są pojedyńczej operacje, więc przy używaniu typów większych niż 8bitowe ARM nagle ma ogromną przewagę prędkości.

3. ARMy to wielka rodzina procesorów i bez większych problemów z Cortex M0 przejdziesz na M3/M4, które poza dodatkowymi peryferiami i instrukcjami (jak chociażby instrukcje DSP w M4) oferują też wyższe zegary - od 72MHz dla M3 do ok. 180MHz dla M4.

Reasumując najprostszy Cortex M0 (o podobnej cenie do ATMEGI) ma zegar 2-3 razy wyższy, więcej pamięci i do tego potrzebuje dużo mniej operacji do przetwarzania dużych liczb. Dla programów wymagających dużej liczby obliczeń może to oznaczać 10x wzrost prędkości działania programu. W razie potrzeby łatwo się przesiądziesz na Cortex M4, który ma już zegar 10x wyższy i może uzyskać 100x większą prędkość obliczeniową, a do tego ma ogromny wachlarz dodatkowych peryferiów, których w AVR nie uświadczysz.

  • Lubię! 1
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

Nie, każdy producent ma własne standardy tanich programatorów. Wspólne są rozwiązania tylko od firmy ARM (ale drogie). Za to wiele ma bootloader, albo JTAG zintegrowany z płytką testową (LPCxpresso, STM Discovery, Freescale Freedom).

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

A jak wygląda sprawa programatora?? Wszystkie procesory arm programować mogę przez SWD z ST-LINKA ???

Jak dobrze kojarzę to pakietem discovery można programować wiele mikrokontrolerów z serii stm32, chociaż tam są chyba jakieś ograniczenia - osobiście nie używałem tego.

STM32 najprościej programować z pomocą zwykłego rs232. Potrzebujesz tylko przejściówkę com<->usb i wyprowadzić piny od rs232 i pin od bootloader łączysz do "1" na czas programowania.

Link do komentarza
Share on other sites

Aha rozumiem. Czyli mikrokontrolery od STM mogę programować przez RS232.Jeszcze zapytam- podoba mi się ten STM32F103RCT6 ale na razie zacznę od tego co mam na miejscu czyli od płytki Discovery z STM32F051-jakie polecacie środowisko (język C)?? Miałby ktoś może linka z jakimś turotalem lub informacjami z "Pierwszymi krokami" z tą właśnie płytką??

Link do komentarza
Share on other sites

Ja korzystałem z http://www.freddiechopin.info/pl/artykuly/35-arm/59-arm-toolchain-tutorial?showall=1 nie pamiętam czy aktualnie nie trzeba czegoś przerobić odrobinę..

Mnie debugger nie interesował, więc te kroki pomijałem i tylko instalowałem kompilator + ide eclipse itd.

Najprościej natomiast możesz zainstalować oprogramowanie przeznaczone do płytki i współpracujące z programatorem na niej (zestaw discovery). Zaleta, że masz debugger, który szczególnie na początku bardzo ułatwia życie...

Link do komentarza
Share on other sites

Częstotliwość: >50MHz (tu już nie żałujcie zegara potrzebny mi będzie każdy Hz)

A co chcesz podpiąć do tego ekran z Nokii i przenosić CRYSISa na to że potrzebny ci każdy Hz ?

Ja bym sie tak nie napalał na MHz, więcej sie nauczysz, ucząc sie na słabszych MCU, bo zmusi cię to do pisania bardziej optymalnego kodu.

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

A w czym pomaga takowy debugger ??? Można na żywo podglądać co robi UC??

Tak, generalnie w kodzie wkładasz miejsca w których program ma się zatrzymać - tzw. breakpointy - i wtedy możesz podejrzeć status rejestrów, zawartość pamięci itd.. Poza tym możesz wykonywać kod krok po kroku co ułatwia jego zrozumienie.

Link do komentarza
Share on other sites

Ok a więc na chwilę obecną sprawa wygląda tak:

Procesor: STM32f051 bo takowy posiadam

IDE: CooCox (wygląda fajnie ewentualnie TrueStudio)

Programator: ST-LINK zespolony na płytce wraz z procesorem

Teraz przydał by mi się jakiś artykuł odnośnie języka c dla ARMów Niestety słabo informacji (wujek Google chyba strajkuje) -A wy od czego zaczynaliście??? Jakieś książki?? Artykuły???

Link do komentarza
Share on other sites

STM32 najprościej programować z pomocą zwykłego rs232. Potrzebujesz tylko przejściówkę com<->usb i wyprowadzić piny od rs232 i pin od bootloader łączysz do "1" na czas programowania.

Dla mnie to takie Yeti, wszyscy słyszeli, nikt nie widział. Masz jakąś instrukcję/opis/link jak to robić? Bo dla mnie to jest największa przewaga wszystkich LPC - programowanie jest banalne i powszechnie znane.

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.