Forum: Mikrocontroller und Digitale Elektronik Einstieg mit STM32 statt 8Bit Controller


von Roland (Gast)


Lesenswert?

Hallo
Ich muss demnächst eine kleine Steuerung auf Mikrocontrollerbasis 
entwickeln.
Meine Erfahrung mit Mikrocontroller sind eher dürftig. Schaltung und 
Layout bekomme ich hin, bei der Programmierung habe ich noch wenig 
Erfahrung.

Die Frage ist jetzt ob ich mich in einen Atmega oder Pic einarbeiten 
soll oder doch gleich einen STM32 nehme, der vom Peis ja ähnlich liegt 
aber deutlich mehr Leistung bietet. So wie es aussieht komme ich 
leistungsmässig auch mit einem normalen 8bit Controller hin aber wer 
weiss was zukünftig kommt und wenn ich mich schon in die Eigenheiten 
eines Controllers einarbeiten muss warum dann nicht gleich in einen bei 
dem ich weiß dass er auch bei zukünftigen Aufgaben genug Performance 
bietet....

Was sagt ihr dazu, ist es für einen Neuling schwerer sich mit einem 
STM32 zurechtzufinden als mit einem 8bit AVR? Oder unterscheiden sich 
die Controller bei der Programmierung gar nicht so wesentlich?

Falls ihr es für sinnvoll haltet gleich mit einem STM32 zu starten wäre 
ich auch für Literaturempfehlungen dankbar.

Danke für eure Antworten.

von (prx) A. K. (prx)


Lesenswert?

Fang lieber klein an. Für AVR gibts hier auf der Seite ein nettes 
übersichtliches Tutorial. Für STM32 wirst du Vergleichbares wohl 
vergeblich suchen.

Wer sich zum ersten Mal auf ein Zweirad setzt, der sollte auch nicht 
gleich am dicken Ende der Motorrad-Skala anfangen, sondern es mit einem 
Fahrrad probieren.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Ich halte es für genauso unsinnig, für ganz einfache Aufgaben einen 
STM32 einzusetzen, wie es unmöglich ist, für komplexe und 
hochperformante Aufgaben einen ATtiny oder einen kleinen PIC zu 
verwenden.

Am besten du findest erst einmal heraus, welche Anforderungen genau 
vorhanden sind und wählst auf dieser Grundlage die entsprechende 
Mikrocontroller-Architektur!

Wenns dir allein ums Thema geht, wenn du ein oder zwei erste Gehversuche 
mit einem Mikrocontroller machen willst, dann ist das Tutorial, das dir 
A. K. schon empfohlen hast, ausgezeichnet.
http://www.mikrocontroller.net/articles/AVR-Tutorial
Wirklich gut lernst du einen Mikrocontroller übrigens nur in Assembler 
kennen. Genau darauf setzt auch das Tutorial.

Als Einstiegs-Mikrocontroller reicht so ein billiger ATtiny13. Wenn du 
den verstanden hast, kannst du auf jeden anderen wechseln, auch auf eine 
andere Architektur, wie z.B. PIC. Die Prinzipien sind immer wieder die 
gleichen.

von Michael N. (much)


Lesenswert?

Markus W. schrieb:
> Als Einstiegs-Mikrocontroller reicht so ein billiger ATtiny13.

Ich halte es auch für sinnvoller mit einem AVR zu beginnen. Allerdings 
würde ich dir doch zu einem etwas größerem Controller als dem Tiny13 
raten. Ansonsten wunderst du dich beim durcharbeiten des Tutorials 
irgendwann wiso der UART nicht wie im Tutorial beschrieben funktioniert.
Ich würd eher etwas in der Größe eines Atmega644 oder des guten ALTEN 
Atmega8 verwenden, wenn du beabsichtigst das Tutorial hier 
druchzuarbeiten.

lg much

von Matthias K. (matthiask)


Lesenswert?

Roland schrieb:
> Was sagt ihr dazu, ist es für einen Neuling schwerer sich mit einem
> STM32 zurechtzufinden als mit einem 8bit AVR? Oder unterscheiden sich
> die Controller bei der Programmierung gar nicht so wesentlich?

Wenn Du in C programmieren willst, macht es kaum einen Unterschied. In 
die µC-Spezifik musst Du Dich sowieso einarbeiten, egal ob AVR oder 
STM32. Für AVR ist viel Literatur und Web auf deutsch verfügbar. Bei 
STM32 solltest Du in Englisch fit sein. Für beide gibt es unzählige 
EVA-Boards und Entwicklungssoftware, auch viele kostenlose Tools. 
Letztlich bleibt es Deine Entscheidung.

von (prx) A. K. (prx)


Lesenswert?

Matthias K. schrieb:

> Wenn Du in C programmieren willst, macht es kaum einen Unterschied.

Doch, in der Dicke vom Handbuch. Da ist der Unterschied gewaltig. Und 
obwohl die Reference der STM32 viel dicker ist als das Datasheet eines 
AVR, werden beim AVR nicht nur die Bits aufgelistet, sondern auch 
teilweise der Umgang erklärt. Beim STM32 eher nicht.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Michael N. schrieb:
> Ansonsten wunderst du dich beim durcharbeiten des Tutorials
> irgendwann wiso der UART nicht wie im Tutorial beschrieben funktioniert.
> Ich würd eher etwas in der Größe eines Atmega644 oder des guten ALTEN
> Atmega8 verwenden, wenn du beabsichtigst das Tutorial hier
> druchzuarbeiten.

Du hast Recht, das hatte ich nicht bedacht. Ich selber hab mit dem 
ATtiny13 angefangen, aber das Tutorial nicht ganz durchgearbeitet. Dann 
nimmt man wirklich am besten den alten ATmega8 oder einen größeren dazu 
kompatiblen, z.B. den ATmega328.
Der ATmega644 hat mehr Speicherplatz, ist aber nicht pinkompatibel zum 
ATmega8. Könnte zu ähnlicher Verwirrung kommen wie beim ATtiny13, wenn 
man das Tutorial das erste Mal buchstäblich durcharbeitet.

von Frank K. (fchk)


Lesenswert?

Roland schrieb:

> Was sagt ihr dazu, ist es für einen Neuling schwerer sich mit einem
> STM32 zurechtzufinden als mit einem 8bit AVR? Oder unterscheiden sich
> die Controller bei der Programmierung gar nicht so wesentlich?

Ich empfehle Dir den Einstieg mit einem PIC. Und zwar aus folgendem 
Grund:

1. Breite Produktpalette
PICs gibts von ganz klein 8 Bit 6 Pin bis ziemlich groß 32 Bit 100 Pin 
80 MHz. Alle aktuellen Bausteine kannst Du mit einer einzigen 
Debugger-Hardware (PicKIT3 für 50€) programmieren und debuggen. Die 
Entwicklungsumgebungen von Microchip (MPLAB 8 und MPLAB X, ich würde 
erstmal noch die 8'er Version nehmen, die X ist noch sehr neu) sind für 
alle Bausteine identisch, nur die Compiler (C18, C30 und C32 von 
Microchip, die Lite-Versionen bekommst Du dort kostenlos) musst Du Dir 
für 8 Bit, 16 Bit und 32 Bit jeweils separat nachinstallieren, je 
nachdem, womit Du arbeiten willst.

Heißt also: mit einmal Einarbeitung hast Du viel mehr Möglichkeiten.
Die 8 Bitter (PIC18F...) sind leistungsmäßig etwa mit den AVRs 
vergleichbar, die 16 Bitter sind durchschnittlich etwa Faktor 3-4 
schneller (aber nicht teurer als entsprechende AVRs), und die PIC32 sind 
in der gleichen Größenordnung wie die STM32.

2. Debugfähigkeit auch bei kleinen Prozessoren
Bei den AVRs kannst Du die kleinen Chips (z.B. Atmega8 oder Tiny2313) 
nur programmieren (sprich den Code hineinladen), aber nicht debuggen 
(sprich während des Betriebs in den Chip reinschauen, Einzelschritte 
ausführen, Speicher und Register anschauen etc). Bei Microchip kannst Du 
auch die kleinsten Chips per Zweidraht ICSP programmieren UND debuggen. 
Das macht die Sache am Anfang sehr viel einfacher und spart später Zeit. 
Andere Leute mögen hier anderer Meinung sein, aber ICH möchte darauf 
nicht verzichten. Plus: Für den Debugger musst Du nur 2 Pins 
reservieren. Bei AVR sinds 3 (ISP) oder 4 (JTAG), bei ARM mindestens 4 
(JTAG) oder bei den Cortex-Dingern auch 2 (SWD). Bei kleinen Gehäusen 
ist das schon praktisch.

3. Einheitliche Tools
Ich habe schon eine Menge Entwicklungsumgebungen und deutlich mehr als 
ein Dutzend verschiedener Architekturen in den letzten 30 Jahren in den 
Fingern gehabt. Ich denke, dass ein Anfänger mit den Microchip-Sachen 
schneller Erfolgserlebnisse haben wird, weil eben alles aus einer Quelle 
kommt und nahtlos ineinander greift. Woanders (z.B. bei ARM) hast Du 
einen Chip vom Hersteller A, ein JTAG-Modul von Hersteller B, eine 
Entwicklungsumgebung von C, Compiler von D und Bibliotheken (z.B. ein 
TCP/IP-Stack) von Anbieter E und ein Evalboard von F. Wenn Du mit PIC 
hantierst, ist A=B=C=D=E=F=Microchip, und Du hast nicht das Problem, 
verschiedene Sachen von verschiedenen Herstellern unter einen Hut zu 
bekommen. Mit etwas Erfahrung sind die meisten Probleme schnell zu 
lösen, aber ohne Erfahrung stehst Du auf dem Schlauch.

4. Vielfältige Peripherie
Microchip hat etwas über 900 verschiedene Controller im Programm, d.h. 
da findet sich fast immer etwas passendes, egal ob Du CAN, LIN, USB oder 
Ethernet oder einen LCD- oder TFT-Controller brauchst. Und: Microchip 
hat bislang noch nichts abgekündigt, Du kannst selbst die alten 
OTP-Typen von 1981 (PIC16C54, damals noch von General Instruments) noch 
kaufen.

Ich würde mit einem PIC24 anfangen, der ist einfach und billig und 
trotzdem für die meisten Sachen mehr als ausreichend. Wenn Du Papierware 
brauchst:

http://www.amazon.de/Programming-16-Bit-PIC-Microcontrollers-Learning/dp/1856178706

bzw für PIC32

http://www.amazon.de/Programming-32-Bit-Microcontrollers-Exploring-Technology/dp/0750687096

Die Bücher sind durchaus brauchbar.

fchk

von Jojo S. (Gast)


Lesenswert?

Ich habe mich diese Woche um einige Boards mit LPC1768/9 und STM32 
gekümmert die ich so aus Neugier gesammelt hatte. Die 32 Bitter reizen 
natürlich wg. deutlich mehr Power und Speicher. Klar, es gibt die AVR 
auch mit viel Speicher, vielen Ports und viel Takt, aber dann sind die 
Chips auch teuer und oft teurer als 32 Bitter.
Aber AVR und ARM sind eben wie Apfel und Birne, wenn du wissen willst 
wie Birne schmeckt brauchst du keinen Apfel zu probieren... Irgendwie 
sind µCs ähnlich, aber du wirst deine Zeit an kleinen Details verbraten, 
und die Fehler und Fallstricke sind alle µC spezifisch: da nutzt es nix 
wenn du AVR gut kennst und dann dein ARM sich nicht mehr flashen lässt 
weil du die PLL strubbelig konfiguriert hast. Oder du bist ARM Profi 
aber an deinem Mega32 funktioniert PortC nicht wie erwartet weil eine 
Fuse falsch gesetzt ist.
Also wenn konkrete Aufgaben zu lösen sind würde ich für neue Projekte 
auf Cortex M3 setzen und mit AVR nur anfangen wenn es wirklich einfache 
Steuerungen sein sollen oder der letzte ct in der Produktion gespart 
werden muss.

von Roland H. (batchman)


Lesenswert?

Die Frage ist, willst Du Deine Aufgabe schnell bewältigen oder ist das 
Thema längerfristig von Interesse. Im Eingangsposting liest sich das 
eher wie eine Pflichtaufgabe. Wie viele Jahre Erfahrung in 
SW-Entwicklung liegen vor? Macht diese Tätigkeit Spaß?

Im ersten Falle ist man für die genannte Aufgabe mit AVR attiny/atmega 
oder PIC vermutlich am besten bedient, da dort eher die Dinge aus einer 
Hand kommen, Arduino ist auch eine Option. Ich würde mir aber nach dem 
Abschluß des Projektes nochmals sehr genau überlegen wie es weitergeht.
Manche tun sich sehr schwer damit, später das Pferd zu wechseln.

Im anderen Falle würde ich sagen, es ist egal, welchen 32-Bitter Du 
nimmst, Hauptsache Du programmierst diesen mit C++ und Deine "IDE" heißt 
"make". Und im Falle von STM32 machst Du einen weiten Bogen um die 
Library.

Meine "Lehrzeit" begann zeitgleich mit attiny/atmega/atxmega und 
STM32F1. Beides hatte seine Tücken, unter dem Strich war es der gleiche 
Aufwand. Den Rückstand beim "Compiler besorgen" hat der ARM bei den 
"Fuses", "boot loader" und PROGMEM wieder eingeholt.

Was längerfristig bei AVR mit GCC nervt, ist das PROGMEM-Gebastel. Mal 
kurz einen AVR GCC kompilieren geht auch nicht.

Bei ARM Cortex gibt es eine riesige Auswahl, die PIC32 gibt es auch in 
DIP und mit Pinguino. Renesas RX ist auch OK, leider sind mir keine 
günstigen Einstiegsmodule bekannt. Wenn man im beruflichen Umfeld mit TI 
MSP430 zu tun haben wird, ist das auch eine Überlegung wert (auch wenn 
"nur" 16-Bit). Lassen sich alle wunderbar mit dem freien GCC ohne 
herstellerspezifische IDEs bedienen.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hier der Artikel STM32
Mit den groben Infos und vielen Links, auch Bezugsquellen.

Uneingeschränkt empfehlen kann ich den jetzt nicht für einen 
Neueinsteiger. Wenn jetzt noch Ethernet, USB und komplexe schnelle 
Regelungen geplant sind, dann braucht es wohl einen STM32 (Cortex-M3 
oder Cortex-M4).

Der große Vorteil vom STM32 ist die gute Möglichkeit für Upgrade auf 
mehr Flash, mehr Geschwindigkeit und mehr Peripherie, da STM32F1xx 
nahezu Pinkompatibel mit dem STM32F4xx ist.

Den STM32 programmiert man in der Regel nur in C. Geht zwar auch in 
Assembler, ist aber nicht wirklich einfach. Daher sind Assembler 
Kenntnisse die man mit einem AVR gewinnt nicht unbedingt wichtig.

Sollte das ganze beruflich genutzt werden, dann sollte man gleichen 
einen STM32 nehmen. Hier gab es schon diverse Threads, in denen die 
Verfügbarkeit von Atmel Prozessoren bemängelt wurden.

von Ralph (Gast)


Lesenswert?

Roland schrieb:
> Ich muss demnächst eine kleine Steuerung auf Mikrocontrollerbasis
> entwickeln.

Ist das eine kommerzielle Entwicklung mit Stückzahlen und langer 
Verfügbarkeit ?
Wird es weitere Entwicklungen geben ?

Ist es ein Einzelstück für den privaten Gebrauch , dann nimm dir einen 8 
Bitter, egal ob AVR, PIC oder 8051.....
Das wird schneller und einfacher gehen.

Wird eine eine kommerzielle Entwicklung musst du sehen das du den 
ausgesuchten Chip über die komplette Nutzungszeit der Schaltung 
nachgeliefert bekommen kannst.

Also kein Bastlerchip, sondern einen aus den Industriellen, oder 
Automotive Varianten aussuchen. Da wird die Luft bei den 8 Bittern schon 
etwas dünner.

Wird es in Zukunft weitere Schaltungen geben, die eventuell einen 
deutlich größeren Leistungsbedarf haben ?
Nimm direkt einen Cortex Mx. Hier bist du flexibler in der Auswahl der 
Leistungsklasse (Preis), ohne für jede Schaltung dann eine neuen 
Umgebung zu kaufen und wieder neu zu lernen wie der Chip funktioniert / 
programmiert wird.
Außerdem lassen sich Softwarefunktionen leichter von einem Chip auf den 
anderen übertragen da es die gleiche Architektur ist.

Einarbeitungsaufwand ist bei den Cortex etwas größer, weil diese einfach 
mehr Möglichkeiten bieten. Steht aber später ein Umstieg an ( wegen 
größeren Leistungsbedarf) macht es durchaus Sinn direkt mit Cortex 
anzufangen und dieses Einarbeiten nicht 2 mal zu machen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.