Skocz do zawartości
zuba1

Wybór mikrokontrolera do nauki nowego języka

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ę.

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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ą??

Udostępnij ten post


Link to post
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...

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
Share on other sites

Ja do STMów uzywam CooCox'a i sobie chwalę http://www.coocox.org/

Warto też zerknąć na darmową wersje TrueStudio - od niego zaczynałem.

  • Lubię! 1

Udostępnij ten post


Link to post
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???

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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!

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