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.
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.
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.
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
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.
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.
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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.