Hallo liebe Leute,
Ich will auf keinen Fall eine Diskussion PIC-AVR-MSP etc.. starten, aber
ich frage ganz anders.
- Auf der Homepage von Mikroe und Microchip, oder auch AVR wird mehrmals
über die neuen 32Bit Architektur berichtet.
Meine Frage ist:
-Lohnt sich für Anfänger direkt mit einem 32Bit MicroController zu
starten, oder muss man wirklich den Weg von unten nach oben erarbeiten?
-muss ich mit 8Bit,16Bit,24Bit und dann erst mit 32Bit anfangen?
Was ich bis jetzt weiß ist: 8 und 16Bit Microcontroller sind gut
geeignet für Messen, Steuern und Regeln Aufgabe.
die 32Bit Architektur ist eher um Daten zu verarbeiten, hier fängt sogar
die Überlegung ein Embedded Betriebssystem zu implementieren.
Wenn es so ist, dann fange ich doch lieber mit einem 32Bitler
Controller, dann habe ich alles was ich brauche! Messen, Steuern, regeln
und Daten verarbeiten. Man verliert kein Zeit und man ist State of The
Art..
Korrigiert bitte meine Vorgehensweise wenn ich mich irre!
Ich denke aber dass der einzige Nachteil an diese Geschichte ist : wenn
man mit 32Bit anfängt, wird meistens bei den Hersteller vorausgesetzt
dass man mit einem 8 oder 16Bit Controller sich vertraut gemacht hat.
Also die werden in der Beschreibungen nicht mehr über Timer, Interrupts
etc ausführlich berichten, ist es so?
Also, bitte halten wir diese Diskussion allgemein und Plattform
unabhängig, wobei wenn ich ein bisschen Subjektiv bin, dann kann ich
erzählen dass ich ein Artikel bei RS-Online über 32Bit Architekturen
gelesen habe, und dort wurde gesagt dass der PIC32Bit wäre eins der
schnellste Controller auf dem Markt, gegenüber seine Konkurrenten ;-)
wir wissen was sie damit meinen..
Also mit 8 und 16Bit anfangen? oder direkt mit einem 32Bit-ler ?
Danke :-)
Lauren schrieb:> Wenn es so ist, dann fange ich doch lieber mit einem 32Bitler>> Controller, dann habe ich alles was ich brauche! Messen, Steuern, regeln>> und Daten verarbeiten. Man verliert kein Zeit und man ist State of The>> Art..
Du wirst alle Zeit der Welt verlieren, da du nie schnallen wirst, was du
da machst. Warum fängst du nicht gleich mit dem 64-Bitter an, vor dem du
gerade sitzt? Der kocht auch nur mit Wasser.
mfg.
Lauren schrieb:> Also mit 8 und 16Bit anfangen? oder direkt mit einem 32Bit-ler ?
Oft ist es halt so: bei einem 32-Bitter brauchst du erst mal mehrere
hundert Befehle bis Du die Register initialisiert hast, damit Du
anfangen kannst um Deine LED blinken zu lassen.
-> bei einem 8-Bitter sind die ersten Erfolgserlebnisse sicher schneller
vorhanden da Du dort nur wenige Initialisierungsbefehle brauchst.
Gruß Anja
>der PIC32Bit wäre eins der>schnellste Controller auf dem Markt, gegenüber seine Konkurrenten ;-)
Ja, genau. Man kann das einfach mit Autos vergleichen: Eines der
schnellsten straßentauglichen Autos ist der Bugatti Veyron (~1000 PS,
~400 km/h, ~1E6 Euro). Deshalb fährt auch jeder, der schlau ist, mit
diesem Modell und nicht mit einem anderen.
Hallo,
es ist immer eine Frage was man will. Einen 32bitter im DIL8 Gehäuse
habe ich noch nicht gesehen. Ich finde die ARM Serie von Philips/NXP
schön a la LPC213x. Diese kann man schön ohne viel Hardware flaschen und
auch die Programmierung ist meiner Meinung recht simpel. Also hier kann
man auch eine LED zum blinken bringen ohne viel Programmieraufwand.
Allerdings gibt es diese Bauteile nicht in einem DIL8 Gehäuse wie einen
AVR Tiny22.
Gruß
Uli
Für den absoluten Anfänger ist es eigentlich am wichtigsten überhaupt
anzufangen. Mit welcher CPU oder Wortbreite ist dabei nebensächlich.
Du legst in Deiner Frage viel Wert auf Faktoren die eigentlich von
marginaler Bedeutung sind, gehst aber über andere hinweg, die viel
wesentlicher sind. Das ist OK. Dafür bist Du Anfänger.
Der Unterschied in den Wortbreiten (8, 16, 32) ist garnicht entscheidend
für die Konzepte die man lernen muss um zu programmieren. Sie sind zwar
dennoch zu berücksichtigen, aber wenn man die auftretenden Fragen einmal
geklärt hat ist nur dieses Wissen einfach auf andere Wortbreiten zu
übertragen. Das ist also in keinem Fall verlorene Zeit.
Du gehst von der Annahme aus, Hersteller würden voraussetzen, dass man
sich mit 8 Bit Prozessoren vertraut gemacht hat, bevor man mit 32 Bit
Prozessoren beginnt und insbesondere "in der Beschreibungen nicht mehr
über Timer, Interrupts etc ausführlich berichten". Die Basis für diese
Annahme beschreibst Du leider nicht.
Die Voraussetzung ist problematisch und der Schluss falsch. Einzelne
Mitarbeiter bei dem Hersteller werden vermutlich so denken, weil das der
gewöhnliche Weg ist, aber eine Firmenpolitik ist solch eine Annahme
nicht. Sie macht auch keinen Sinn. Vor allem aber wird kein Hersteller
bei seinen Beschreibungen Details auslassen, weil sie bei seinen 8-Bit
Varianten genauso sind. Beides liegt nicht im Interesse des Herstellers.
Er wird im Gegenteil nur voraussetzen, das Dir das Prinzip eines
Prozessor bekannt ist, sonst aber überhaupt nichts. Die Hotlines wären
so schlichtweg nicht zu bezahlen.
Du denkst hier schon an Betriebssysteme und willst am besten nur einen
kaufen, der alles kann. Die Prinzipien allerdings sind, mit einigen
Ausnahmen aber unabhängig von dem Prozessor oder seiner Wortbreite. (Es
gibt beispielsweise das uCOS für 8-Bitter).
Wenn Du das lernen willst, kannst Du das auch auf einem kleinen.
Auch Herstellerempfehlungen, will ich es mal nennen, sind für Dich im
Moment von eher geringer Bedeutung. Zum einen kannst Du hier
Marketinggeklingel garnicht von Fakten unterscheiden. Zum anderen spielt
für Dich erstmal die Schnelligkeit garkeine Rolle. Das ist als wenn
jemand der reiten lernen will auch gleich das schnellste Rennpferd haben
will. Das kann er garnicht beherrschen. (Das Beispiel hinkt natürlich
wie jedes andere auch).
Auch wegen der Timer oder der sonstigen Peripherie brauchst Du Dir keine
sorgen wegen Zeitverschwendung machen. Das Prinzip ist bei allen uCs das
selbe. Wenn Du das mal kannst ist es OK. Im Detail unterscheiden sie
sich aber doch so merkbar, das Du garkeine Möglichkeit hast einen zu
wählen mit dem Du alle anderen erschlägst. Du kannst auch kein Auto
wählen, wo Scheibenwischer, Klimaanlage und Radio nach identischen
Prinzipien bedient werden. Aber in der Regel sind die Grundlagen die
selben.
Der Schluss aber ist daraus, das Du Dir erstmal eine kleine Platine von
Watterott oder Pollin kaufst und einfach anfängst. Wo das alles auf
welche Weise hingeht, lernst Du dann schon. Dein Anspruch gleich am
Anfang die "richtige" Wahl zu treffen ist weder sinnvoll noch erfüllbar.
Welche Hardware Du brauchst und wie Du anfängst kannst Du hier in
Tutorials lesen.
Das Beispiel mit Bugatti finde ich aber nicht gerecht!
Warum soll ich 1,6Millionen ausgebe wenn ich auf Autobahn nur 120KMH
fahren darf und auf Landstrasse 90KMH ? Also das ist nur Status!!
Ich kaufe kein ARM oder 32Bit Controller um ein LED blinken zu lassen.
Ein Golf fährt auch ganz gut.
Deshalb Geschwindigkeit finde ich nicht immer ein Argument! sondern die
Periferie und was ein Microcontroller so alles on Board hat, wäre mir
viel lieber und interessanter.
Ich würde z.B zu ein MicroController tendieren, der onboard
USB-Controller hat. etc..
@Huch : danke für die ausführliche Antwort.
Ich denke einiges ist mir jetzt klarer geworden, wobei Interessant zu
wissen, warum hast du in deine Beschreibung keine Anwendungen genannt?
Viele Hersteller teilen deren Microcontroller in unterschiedlichen
Familien-Gruppen und empfehlen für bestimmte Bereiche (Automotive,
Motor-Steuerung, etc..) bestimmte Controller.
Vielleicht wäre meine Frage dann von Anfang an falsch formuliert!
Ich denke, ein modernes Fahrzeug hat mindestens 100Microcontroller unter
die Haube. Hier ist Klug zu wissen welche Aufgabe löse ich am
effizientesten, mit wenig Aufwand und Kosten, aber mit hohe
Zuverlässigkeit und Verfügbarkeit.
Deshalb wäre vielleicht doch nicht verkehrt mit 8Bit Controller
anzufangen.
Nach dem Motto: wenn ich ein LED blinken lasse, dann kaufe ich ein
Controller, der 2euro kostet.
>Ich denke einiges ist mir jetzt klarer geworden, wobei Interessant zu>wissen, warum hast du in deine Beschreibung keine Anwendungen genannt?
Warum sollte ich? Du wirfst in Deinem vorherigen Post selbst die Frage
auf: Vielleicht hast Du die Frage falsch gestellt.
Als Anfänger interssieren Dich Anwendungen erstmal überhaupt nur in
Deinen Phantasien. Tasten abfragen, PWM dazu, ein LCD ansteuern und noch
Ton ausgeben, davon träumst Du.
Tatsächlich aber fängst Du erstmal an, eine LED leuchten zu lassen, dann
blinken. Dann eine Taste abfragen, entprellen. Dann kämpfst Du mit dem
Problem gleichzeitig zu entprellen und eine LED blinken zu lassen. Dann
die PWM. Neue Probleme denn nun müssen drei Vorgänge über Timer
gleichzeitig laufen. Dabei lernst Du noch was über Zeichenketten, über
Kodierung, über Listen und Arrays. Du hast soviele Einzelheiten vor Dir,
das Dir nach spätestens einer Woche so einer Heizungssteuerung mit
Tasten, PWM und LCD und Ton völlig utopisch vorkommen wird, ein
unerreichbarer Traum. Das ist auch wieder übertrieben. Aber man fängt
klein an und nicht gross.
Du weisst noch garnicht was effizient ist und was nicht. Was man wofür
brauchen kann und wofür nicht.
Wenn Du aber Profi bist und einen Prozessor für eine konkrete Anwendung
aussuchst hast Du diese vielen kleinen Detailprobleme schon mindestens
einmal gelöst und weisst, das Firmen natürlich gerne einen
Anwendunsbereich hinschreiben, denn irgendwofür müssen die Dinger doch
gut sein und mit Google zu finden. Darüberhinaus sind solche Texte eher
für Entscheider geschrieben als für Techniker. Dem Techniker ist egal ob
da steht "für Kaffeemaschinen". Der kennt die Interna und weiss das man
mit dem Ding auch gut Tee kochen kann. Die einzige Ausnahme ist eine
spezielle Peripherie; etwa CAN für Automobile oder einen
Ladungsmengenzähler für Akku-Lader, aber da musst Du erstmal hinkommen.
Wenn Du anfängst fliegen zu lernen steigst Du auch nicht als erstes in
einen Jumbo. Als Klempner lernst Du erstmal ein Rohr schneiden, zwei
miteinander verlöten uswusf. und erst nach drei Jahren bist Du in der
Lage alle Arbeiten die in einem Haus anfallen zu erledigen. Aber noch
nicht dazu eine Gesamtinstallation zu entwerfen wo die Teile auch
zusammenarbeiten. Das macht dann ein Ing. oder so.
Du willst hier Entscheidungen treffen für die Grundlagen nötig sind, die
Du erstmal erwerben musst. Das kannst Du nicht abkürzen oder
überspringen.
Und lass Dich nicht von den Herstellerseiten so beeindrucken. Der
Flugschüler sitzt in seiner Chessna, wartet auf den Fluglehrer und
blätter in einem Firmenprospekt von Boing. Klar, tolle Maschine aber,
gosh, eine zehnmal höhere Anzahl von Knöpfen und Aggregaten. Dabei kann
er noch nichtmal landen. So ist Deine Situation.
Das heisst alles nur, das Du noch nicht so weit bist. Du kannst
natürlich soweit kommen. Aber das kostet Arbeit und ne Menge Kaffee. Der
Gedanke ist doch nicht neu. Man fängt am Anfang an und nicht am Ende.
Viel Erfolg.
Ich würde für den Einstieg 8 Bit AVR oder PIC nehmen.
Vielleicht eventuell noch MSP430. Aber mehr nicht.
Alles Andere ist mit Kanonen auf Spatzen geschossen.
Bei einem 32 Bit uC würde ich mir übrigens nicht mehr selbst die Arbeit
machen. Dann würde ich eins der fertigen uC Boards nehmen, Linux drauf
und fertig. Und dann ein normales Linux Script/Programm machen.
Ein paar GPIO's für einfache I/O Aufgaben haben die Dinger auch noch.
Ansonsten kann man immer noch mit nem kleinen 8 Bit AVR am RS232 eine
Erweiterung machen.
@Pat : mmmhh vielleicht hast du genau das geschrieben was ich meinte,
wobei der Unterschied ist : du weiß schon bereit welches Board und
welche Linux-Distribution.
Für mich wäre das schon ein Traum.
Ehrlich gesagt, ich wollte den Weg abkürzen und entweder mit Windows
oder Linux Embedded anfangen, aber vielleicht habt ihr recht!! man soll
das Fliegen mit kleinem Flugzeug lernen.
Ich finde nur in unsere Zeiten wo sowohl 8Bit als auch 32Bit Controller
für wenig Geld gibt, warum man nicht direkt mit so einem 32Bit
Embedded-System anfangen soll?
Vielleicht hatten die Ingenieure vor 20 Jahren nur 8Bit Controller und
deshalb mussten alle Aufgaben mit diesen Controller lösen.
Aber der Spruch " nicht mit Kanonen auf Spatzen schießen" gilt! und das
habe ich selber erkannt.
Aber wie gesagt, es ist verdammt hart sich für 8Bit Controller zu
entscheiden, wo die 32Bit überall gibt ;-)
Naja, es kommt halt immer drauf an, was man machen will.
Es gibt schon Sachen, da ist ein 8 Bit Controller genau das richtige.
Auch heute noch.
Warum nen dicken, bastlerunfreundlichen, teuren und stromfressenden ARM9
nehmen, wenns auch z.B. ein ATtiny tut?
Wenn du wirklich mit ARM und Embedded Linux anfangen willst: Es gibt
diese Embedded Boards mittlerweile an jeder Ecke. Oft wird das passende
Linux gleich mitgeliefert. Ansonsten halt selber kompilieren.
Kannst ja mal bei google suchen, da findest genug Händler für sowas.
danke PAT.
Noch vielleicht eine Frage : warum verbindet man oft ARM mit
Embedded-Linux? meistens auch ARM9, weil die doch 32Bit können? weil die
schnell sind?
hast du einen konkreten Vorschlag mit welchem board ich anfangen könnte?
Naja, Arm heißt nicht zwangsläufig Linux.
Es gibt auch noch andere Embedded OS. Und man kann die Dinger auch
komplett selbst programmieren, was jedoch ein Riesenaufwand wäre.
Außerdem ist ARM nicht die einzigste Embedded Prozessorplattform. Es
gibt beispielsweise auch noch MIPS. Und auch embedded x86 komplatible
Prozessoren, da kannst dann sogar ein "normales" PC Linux draufhauen.
Welches Board du kaufst, musst du entsprechend deiner Anforderungen
auswählen. Das kann man so pauschal eigentlich nicht sagen.
Wie ich schon schrieb:
>Für den absoluten Anfänger ist es eigentlich am wichtigsten überhaupt>anzufangen. Mit welcher CPU oder Wortbreite ist dabei nebensächlich.
Vielleicht solltest Du Dir erstmal überlegen, welche Anwendungen Du
programmieren willst.
So ein 8-Bitter ist in der Regel ein komplettes System in einem Chip.
Die minimale Außenbeschaltung ist ein 100nF Ablockkondensator und
natürlich die Versorgungsspannung.
Die AVRs laufen z.B. mit 1,8..5,5V, d.h. Du brauchst nichtmal einen
Spannungsregler.
Einfach 2*1,2V Akkus, ne 3V Lithiumzelle oder 4,5V Flachbatterie
ranpappen und er läuft.
Und er braucht auch keine elend langen Bootzeiten, nach etwa 16ms
internem Poweron-Reset rennt er los. Die 8..40-Pinner kannst Du einfach
in nen DIP-Sockel auf ne Uniplatine pappen.
Und zum Flashen kann man nen Bootloader reinprogrammieren, der braucht
dann nur einen IO-Pin und nen Widerstand zum COM-Port Deines PC.
So ein 32Bit-Linux-Board ist dagegen nen ordentlichen Zacken aufwendiger
und empfindlicher.
Früher hat man für ne Blink-LED nen 555 mit viel Außenbeschaltung
genommen.
Heute nimmt man z.B. einen ATtiny10. Schade, daß der keine Stromausgänge
hat, dann bräuchte man nichtmal mehr den LED-Vorwiderstand.
Peter
Peter Dannegger schrieb:> Schade, daß der keine Stromausgänge> hat, dann bräuchte man nichtmal mehr den LED-Vorwiderstand.
Könnte man das nicht auch über den Innenwiderstand der Batterie klären
(wie bei Billig-LED-Taschenlampen)?
Warum nicht 32-Biter?
Nunja, für mich die direkteste Antwort für den Anfang mit nem 8-Biter
...
Schau Dir mal die Außenbeschaltung an :)
Mitunter brauchen die großen Brummer 3 Spannungen um zu laufen,
sind von Hand kaum lötbar, geschweige denn mal einfach aufs Breadboard
gesteckt.
Vor nem ATMega oder PIC schweißt Du Dir nen einfachen Spannungsregler
7805, 4 Verbindungen für den Programmer, ne Batterie und ab geht die
Post.
Und sollte doch mal was schief gehen und der Controller die Fahne
wehen lassen, was solls, das Ding vom Breadboard gehebelt mit dem großen
Daumen nen Neuen reingedonnert und weiter gehts. ;)
Klar, die großen Jungs haben dann gleich 32 PWM Kanäle und 128 Timer on
board, aber was solls, für 90% der Anwendungen reicht jeweils einer und
zum lernen sowieso.
Ich denke, die 8-Bitter sind einfacher. Sicherlich ist das Prinzip das
selbe, aber die Peripherie ist einfacher zu überblicken.
Damit lassen sich auch viele schöne Sachen basteln.
Bei den ARMs, auf denen Du Linux laufen lassen kannst, bist Du in der
Regel auch schon auf fertige Boards angewiesen. Also wirklich selber
bauen ist da nicht.
Gruß
Jobst