Hallo,
ich möchte mich mehr mit Microkontrollern beschäftigen und würde gerne
wissen ob es sich mehr lohnt AVR Microkontroller oder der 8015 Reihe zu
arbeiten.
Oder spielt es keine Rolle?
Ich habe bisher nur ein paar kleine Projekte mit einem Arduino Bausatz
gemacht um mich an das Gebiet ranzutasten und würde mich gerne weiter in
die Microkontroller Programmierung einarbeiten.
Ich hoffe auf ein paar hilfreiche Antworten mit guten Argumenten
Eine kurze Suche im Forum bringt Dir etliche Threads zum Thema.
Das wurde bereits erschöpfend diskutiert.
Oder ist das nur der übliche Freitags-Provokationsversuch?
Dr. MIPS schrieb:> Oder ist das nur der übliche Freitags-Provokationsversuch?
Nein das ist eine ernsthaft gemeinte Frage, ich konnte in der Suche
nichts finden und frage deshalb :)
Ich hab gedacht das es hier bestimmt den ein oder anderen qualifizierten
Rat gibt ;)
Nina schrieb:> ich möchte mich mehr mit Microkontrollern beschäftigen und würde gerne> wissen ob es sich mehr lohnt AVR Microkontroller oder der 8015 Reihe zu> arbeiten.
Schau in die jeweiligen Datenblätter und Referenzmanuals und triff dann
deine Entscheidung selbst. Manche mögen dies, andere das.
W.S.
Du hast Arduino Erfahrungen. Also solltest du mit den AVR Typen
weitermachen, denn du kannst die vorhandenen Werkzeuge nutzen.
Auch, wenn hier ab und an Glaubenskriege geführt werden, der CPU Typ ist
relativ unwichtig für die meisten Projekte.
Wenn man in Assembler reinschnuppern will, dann ist der 8051 die erste
Wahl. Gegen so einen durchdachten, kompakten und einfachen Befehlssatz
kommen PIC und AVR lange nicht an.
Mächtige Befehle für Bitmanipulationen, schön kompakte Befehle für
Schleifen, Verzweigungen und Tabellenzugriffe, sogar Mul und DIV gibt es
und die meisten Befehle gehen direkt im RAM bzw. auf IO-Register.
Auch die 4 Interruptprioritäten sind sehr nützlich. Z.B. kann man das
zeitkritische 1-Wire in SW implementieren, ohne das andere Interrupts
das Timing stören.
Von den Compilern gibt es Demoversionen mit Codelimit.
Für die Silabs 8051 kann man sogar den Keil als Vollversion bekommen,
wenn man sich registriert.
Da die 8051 sich nur im Includefile unterscheiden, kann man mit jedem
C51-Compiler auch jeden anderen 8051 programmieren bzw. simulieren. Nur
das Debuggen bzw. Codebanking (>64kB) ist für die Derivatfamilien
speziell.
Peter D. schrieb:> Wenn man in Assembler reinschnuppern will, dann ist der 8051 die erste> Wahl. Gegen so einen durchdachten, kompakten und einfachen Befehlssatz> kommen PIC und AVR lange nicht an.
Mir gefällt der Akku nicht. Da war der AVR mit seinem 32er-Registersatz
eine helle Erleuchtung...
> Mächtige Befehle für Bitmanipulationen, schön kompakte Befehle für> Schleifen, Verzweigungen und Tabellenzugriffe, sogar Mul und DIV gibt es> und die meisten Befehle gehen direkt im RAM bzw. auf IO-Register.
Allerdings fällt man dann auf die Nase, wenn man diesen Befehlssatz
auf eine andere, moderne Architektur ummünzen muß.
Lothar M. schrieb:> Mir gefällt der Akku nicht.
Der Akku wird ja fast nur für die Grundrechenarten (+-*/) gebraucht und
das ist in Steuerungen selten die Hauptsache. Daher habe ich das nicht
als Flaschenhals bemerkt, sondern viele Variablenoperationen direkt in
Registern bzw. SRAM durchgeführt.
Lothar M. schrieb:> Allerdings fällt man dann auf die Nase, wenn man diesen Befehlssatz> auf eine andere, moderne Architektur ummünzen muß.
Wer vorhat, mehrere Architekturen zu benutzen, der sollte C nehmen.
Ich meinte mit "reinschnuppern" auch eher, um mal zu verstehen, wie so
ein MC tickt.
Ich rate heutzutage keinem mehr, größere Projekte in Assembler zu
schreiben, das ist vergeudete Zeit.
Ein Admin eröffnet den GK?
Na denn, AVR und 8051 sind alte Kamelen. Die alte Timerei vom 8051 und
die veralteten Programmier- und Debugmethoden vom AVR sprechen Bände.
Nimm was modernes, nimm was Vernünftiges: ARM Cortex, MS430.
Verwundert schrieb:> Ein Admin eröffnet den GK?
Admin != Moderator
Und nur wer unbedingt gegen irgendwas oder für irgendwen kämpfen will,
eröffnet einen Krieg.
Mir ist es nicht wert, um eine uC Architektur zu kämpfen. Dazu habe ich
schon zu viele verschiedene verwendet und bin mit jeweils jedem uC zum
jeweiligen Ziel gekommen...
> Na denn, AVR und 8051 sind alte Kamelen
Aber genau nach diesen beiden uC hat der TO gefragt.
Nina schrieb:> Ich habe bisher nur ein paar kleine Projekte mit einem Arduino Bausatz> gemacht um mich an das Gebiet ranzutasten und würde mich gerne weiter in> die Microkontroller Programmierung einarbeiten.
Man kann sogar damit und mit einem vernünftigen Programmierstil etwas
sinnvolles machen. Allerdings sind gefühlte 95% der im Netz
herumfliegenden "Arduino-Programme" die Bits nicht wert, die sie im
Speicher belegen. Ich sage z.B. meinen daraufhin sichtlich schockierten
Praktikanten: ein "delay()" ist ein Programmfehler!
Peter D. schrieb:> Ich meinte mit "reinschnuppern" auch eher, um mal zu verstehen, wie so> ein MC tickt.
Da stimmt es allerdings, wenn es ums Verstehen geht: der 51er mit seiner
überschaubaren Peripherie ist leichter zu kapieren.
Wenn es aber um den Nutzen geht: alle modernen Architekturen sind wie
der AVR registerorientiert.
>> Na denn, AVR und 8051 sind alte Kamelen> Aber genau nach diesen beiden uC hat der TO gefragt.
Na und, bestimmt kennt der TO die richtig guten uC gar nicht. Die
meisten setzen hier Atmel mit AVR gleich, ein beschränkter Horizont
halt. Den gilt es zu erweitern. Und daher muss man auf bessere moderne
uC Hinweisen, die speziell für Anfänger weniger Fehler Potential,
komfortablere Handhabung bieten
Verwundert schrieb:>>> Na denn, AVR und 8051 sind alte Kamelen>> Aber genau nach diesen beiden uC hat der TO gefragt.
Dann schmeiße ich mal diesen hier in die Runde: STM32F030
Ein kleiner Cortex-M0. Günstig, schnell, kostenlose IDE in Massen (ja,
auch Keil MDK-ARM gehört dazu), zahlreiche Debugger (der ST-Link ist für
den Anfang sicherlich nicht schlecht), moderne Architektur, etc.
Nina schrieb:> Oder spielt es keine Rolle?
Jepp. Wenn man gewillt ist was zu lernen, so ist die Architektur relativ
egal. Kennt man einen sehr gut, so fällt der Umstieg auf andere ziemlich
leicht.
Nina schrieb:> Ich habe bisher nur ein paar kleine Projekte mit einem Arduino Bausatz> gemacht um mich an das Gebiet ranzutasten und würde mich gerne weiter in> die Microkontroller Programmierung einarbeiten.
Schon mal ein guter Anfang. Pass nur auf, dass der Arduino nicht deinen
(noch nicht wirklich entwickelten) Programmierstil für immer versaut.
Wärst nicht der Erste, dem das passiert.
Claus M. schrieb:> Dann schmeiße ich mal diesen hier in die Runde: STM32F030
Aber nicht, um die Grundlagen zu erlernen.
Der Tip mit dem 8051 ist schon ganz gut. Ebenfalls ganz gut - wenn auch
ein bissel "anders" sind die kleinen PIC's, also 16Fxyz.
Bei beiden Architekturen kann man sehr gut die Grundlagen und Assembler
lernen. Das ist wichtig.
Ja wichtig.
Man sehe sich in diesem Forum mal um: all diejenigen, die Probleme haben
mit dem Grundverständnis und sogar mit simpelsten Konstrukten in C sind
diejenigen, die noch nie ihre Nase mal in Assembler gesteckt haben.
Geschweige denn in die Manuals zu ihren Bastelobjekten. Es fehlen halt
die Grundlagen.
Aber Maschinenbefehle und Assembler für ARM ist denn doch für den
Einstieg nicht das geeignetste. Ist zwar alles durchaus logisch
aufgebaut, aber dennoch für den Anfang zuviel.
W.S. schrieb:> Bei beiden Architekturen kann man sehr gut die Grundlagen und Assembler> lernen. Das ist wichtig.
Watt ein Blödsinn, watt ein Gefasel der ewig gestrigen. Die Erde dreht
sich weiter und heute programmiert man in Hochsprache.
Hallo,
Verwundert schrieb:> W.S. schrieb:>> Bei beiden Architekturen kann man sehr gut die Grundlagen und Assembler>> lernen. Das ist wichtig.>> Watt ein Blödsinn, watt ein Gefasel der ewig gestrigen. Die Erde dreht> sich weiter und heute programmiert man in Hochsprache.
eigetnlich warte ich auf den Tag, wo es keine neuen Prozessoren und
Compiler mehr gibt, weil kein Programmierer den Kram, der da erzeugt
wird, mehr lesen kann.
Vermutlich gibt es dann aber Transistoren, die nicht nur 0 und 1 als
Zustand können sondern auch geschweifte Klammern.
Gruß aus Berlin
Michael
Verwundert schrieb:> W.S. schrieb:>> Bei beiden Architekturen kann man sehr gut die Grundlagen und Assembler>> lernen. Das ist wichtig.>> Watt ein Blödsinn, watt ein Gefasel der ewig gestrigen. Die Erde dreht> sich weiter und heute programmiert man in Hochsprache.
Es geht ja auch nicht darum, nachher alles in Assembler zu schreiben,
sondern darum, zu verstehen, wie der Prozessor so arbeitet. Aber ich
merke auch schon, dass tieferes Verständnis heutzutage total out ist.
Merkt man auch öfters mal in Autowerkstätten, wo dann nur noch per
Diagnose Fehler ausgelesen und darauf basierend dann irgendwelche Teile
getauscht werden, ohne wirklich mal zu suchen, was die tatsächliche
Ursache ist. Oder die Diagnose meldet keinen Fehler, also ist da per
Definition auch keiner.
Michael U. schrieb:> Vermutlich gibt es dann aber Transistoren, die nicht nur 0 und 1 als> Zustand können sondern auch geschweifte Klammern.
Hochsprachenelemente in Silizium zu giessen wurde schon gelegentlich
versucht, war aber letztlich nie auf Dauer erfolgreich. Es erwies sich
als sinnvollere Arbeitsteilung, den Prozessoren die Grundoperationen der
eingesetzten Technik beizubringen, und den Compilern die Hochsprachen zu
überlassen.
Du wirst nicht wünschen, dass die Werkstatt mit Ahnung ein Pleul
tauscht. Denn das möchtest du nicht bezahlen.
Die breite Masse der Hobbybastler braucht kein asm. Wer Spaß hat, sich
auf genau eine Archtektur zu versteifen, kann ja den Befehlssatz
auswendig lernen. Für die jenigen, für die der uC nur Mittel zum Zweck
ist, die interessante Projekte umsetzen, ist am überflüssig.
Verwundert schrieb:> Für die jenigen, für die der uC nur Mittel zum Zweck> ist, die interessante Projekte umsetzen, ist am überflüssig.
Grundkenntnisse in Assembler sind beim Debugging durchaus hilfreich. Man
muss dafür nicht in Assembler programmieren können, sollte aber in der
Lage sein, vom Compiler erzeugten Code leidlich lesen zu können.
Hannes L. schrieb:> Schwachsinn, man muss ihn verstehen und auch anwenden können.
Das ist jetzt nicht dein Ernst, oder? Der Befehlssatz ist vom Hersteller
vorgegeben. Du kombinierst ihn, um daraus deinen Ablauf, deine
Berechnungen, ... Zu erzeugen. Dafür musst die Befehle kennen,
auswendig. Was gibt es beim add oder sub zu verstehen? Musst du ein +
oder- auch verstehen?
Macht doch bitte Selbstverständlichkeiten nicht so wichtig.
Verwundert schrieb:> Was gibt es beim add oder sub zu verstehen? Musst du ein +> oder- auch verstehen?
Das kann aber einfacher oder komplizierter sein. AVR ist dahingehend
(meist) ziemlich einfach lesbar, Cortex M0 ebenso. Wer die kennt, der
kann zur Not auch MIPS Code einigermassen lesen, ohne sich allzu lange
damit befassen zu müssen
8-Bit PICs hingegen verwenden eine Mnemotechnik und Zusammenhänge, sich
nur Eingeweihten erschliessen. Die liegen damit ziemlich quer zum Rest
der Welt und die Kenntnis anderer Akkumulator-Architekturen wie 8051
hilft auch nur begrenzt weiter.
Verwundert schrieb:> Die breite Masse der Hobbybastler braucht kein asm.
mmhhh nö gerade weil asm so einfach ist und nur das ausführt was man
eingibt, finde ich es genial. Vor allem als Anfänger sind die
Randbedingungen recht klein gehalten im Gegensatz zu Hochsprachen.
> Wer Spaß hat, sich> auf genau eine Archtektur zu versteifen, kann ja den Befehlssatz> auswendig lernen.
Naja so viel unterschiede gibs dort nun auch nicht ob nu AVR, Pic, 8051
- Asm ganz ehrlich recht leicht zu erlernen und man muss sich nicht nur
auf eine Achitektur versteifen.
Verwundert schrieb:> Und deshalb schreibt man einfach + in Hochsprache.
Und ohne Nachzudenken vor und hinter diesem "einfachen" + ein float oder
noch besser (weil genauer) ein double.
Und dann wundert man sich, warum der uC so langsam ist. Ich hätte schon
solche Bacheleranden und Masteranden. Und erst nachdem Ich die
struktuellen Fehler mal aufgezeigt hatte und die behoben waren, war
auf einmal sogar noch Rechenzeit für Anderes...
Du hast die ganzen Programme auf asm umgestellt? Wenn nicht, triffst du
genau den Kern: Immer schön auf die Aufgabe konzentrieren und nicht aufs
Werkzeug.
Die Masse hier dürfte einen Akkuschrauber nutzen. Aber ein paar Prediger
raten ab und schwören auf den mehrfach angeschliffenen Schraubendreher
mit Holzgriff.
> Die Masse hier dürfte einen Akkuschrauber nutzen. Aber ein paar> Prediger raten ab und schwören auf den mehrfach angeschliffenen> Schraubendreher mit Holzgriff.
Nein, Lothar meint nur, daß es gut wäre die Bits (beim Akkuschrauber)
unterscheiden zu können.
Meine Frau benutzt auch einen Akkuschrauber, wird aber nie den
Unterschied zwischen Phillips und Pozi verstehen, da sie Schrauben nicht
interessieren. Und jemand anderer die vermurksten Dinger ausbohren darf.
Nina schrieb:> Ich habe bisher nur ein paar kleine Projekte mit einem Arduino Bausatz> gemacht um mich an das Gebiet ranzutasten und würde mich gerne weiter in> die Microkontroller Programmierung einarbeiten
Dann bleib beim Arduino also AVR, den du schon hast, so lange er dir
reicht.
Der 8051 steckt zwar in vielen Systemen als embedded Chip drin (z.B.
FTDI232R den die Leute hier so gern benutzen und der auch auf dem
Arduino sitzt) aber wenn es keinen Grund gibt sich mit 8051 zu
beschäftigen, versäumst du nichts.
Und ARM Cortex STM sind zwar leistungsfähiger, aber wenn es nur um
Leistungsfähigkeit geht tut es auch dein PC.
Der AVR ist gut zum übrr, als Arduino über USB zu programmieren, und
reicht für Vieles aus.
Carl D. schrieb:> Nein, Lothar meint nur, daß es gut wäre die Bits (beim Akkuschrauber)> unterscheiden zu können.>> Meine Frau benutzt auch einen Akkuschrauber, wird aber nie den> Unterschied zwischen Phillips und Pozi verstehen, da sie Schrauben nicht> interessieren.
Genau das schreib ich doch: Hochsprache nehmen und sich um die
Aufganstellung kümmern. Natürlich muss ich die Hochsprache können,
wissen wie man den Akku lädt und die Bits tauscht.
Und wer die falschen Bits nimmt, nimmt auch den falschen
Schraubendreher. Ist also kein guter Vergleich.
MaWin schrieb:> Und ARM Cortex STM sind zwar leistungsfähiger, aber wenn es nur um> Leistungsfähigkeit geht tut es auch dein PC.
Äpfel, Birnen.... Hmmmm. Aber egal, jeder hat so seine Meinung.
Falk B. schrieb:> Warum soll man heute noch des kleine 1x1 und Kopfrechnen lernen,> wo es doch Computer und Smartphones gibt?
Macht man ja auch nicht mehr. Die Kids fangen früher mit den
Taschenrechnern an und die Dinger können viel mehr als früher. Eine ganz
normale Entwicklung, wie bei den uC auch.
Ach ja, rechnest du noch alles mit Logarithmustabelle und Messschieber?
Weil dem PC und Smartphone misstraust? Die App werden nicht in ASM
geschrieben. ;-)
Verrwundert schrieb:> Falk B. schrieb:>> Warum soll man heute noch des kleine 1x1 und Kopfrechnen lernen,>> wo es doch Computer und Smartphones gibt?>> Macht man ja auch nicht mehr. Die Kids fangen früher mit den> Taschenrechnern an und die Dinger können viel mehr als früher.
Nur die Kinder nicht ... :-^
Die Welt dreht sich weiter, mit euch, ohne euch und ASM hat an
Stelkenweert verloren, wurde durch Hochsprachen ersetzt.
Und nein, ich kann heute nicht mehr mit einem Rechenschieber umgehen.
Ich habe auch nie vermisst.
Hallo,
Verrwundert schrieb:> Ach ja, rechnest du noch alles mit Logarithmustabelle und> Messschieber?> Weil dem PC und Smartphone misstraust? Die App werden nicht in ASM> geschrieben. ;-)
Man muß dem PC und dem Smartphone genauso mißtrauen können wie
Logarithmustabelle und Rechenschieber.
Man muß sich daran erinnern können, weshalb es sinnvoll ist einen
Überschlag zu machen, die Fehlergrenzen einschätzen zu können usw.
Genauso wie man auf einen kleinen AVR wie auf einen PC losgehen und dann
weder Geschwindigkeit noch Speicherplatz reichen, genauso kann man eine
tolle Formel in den Taschrechner tippen und dem Ergebnis blind
vertrauen.
Auf einem AVR ein wenig Assembler zu prgrammieren zeigt schnell, daß man
eben auf diese Grenzen achten muß. Dann denkt man auch auf einem
größeren und in C über Registergrößen und Speicherplatz und
Geschwindigkeit nach.
Ein 64 Bit Shift auf einem AVR in ASM ist keine Problem, in C mit dem
GCC funktioniert es nur noch irgendwie.
Ist für einen 8-Bitter auch eher eine Zumutung wie auch ein paar andere
Sachen. Genau das trifft aber auf alle µC oder SoC zu. Man kann einen
anderen nehmen, aber nicht wie beim PC einen schnelleren Prozessor und
ein paar GB Ram mehr und dann das Programm einfach darauf laufen lassen.
Wird heute aber gern gemacht. Dann gibt es TVs mit Reaktionszeiten im
"Ewigkeitsbereich" oder Smartphones, die nach einem Update praktisch
unbenutzbar werden, weil kritiklos jeder Unfug unbedingt noch ins System
mußte.
Gruß aus Berlin
Michael
Wenn der AVR so klein ist, dass ich auf jede Zeile Code achten muss,
dass ich die Befehle abzählen muss, dass ...
Dann habe ich das falsche Design gewählt!
Die gleiche Diskussion gab es bei der PC Programmierung, bei OOP, bei
...
Nina schrieb:> Oder spielt es keine Rolle?
Managment summary:
Spielt keine Rolle.
Detailed explanation:
Da Du anscheinend gerade anfängst ist jeder uC erst mal brauchbar.
Sollte es irgendwann nicht mehr reichen, dann hast du aber mehr
Erfahrung um Dir einen Anderen zu suchen.
Erfahrungsgemäss reichen aber die "ollen Kamellen" ziemlich lange, wenn
man (mit zunehmendem Wissen) die implementierten Lösungen optimiert.
ASM oder nicht? Meiner Meinung nach sind Kenntnisse in Assembler für
seriöse SW Entwicklung, zumindest im Embedded Bereich, unverzichtbar.
Und auch ziemlich spannend.
Am Ende des Tages sollte es Dir (als Hobby-Programmierer) aber est mal
Spass machen.
Und "falsch" geht da eigentlich fast garnicht.
Grüße
Andreas
Andreas H. schrieb:> Erfahrungsgemäss reichen aber> die "ollen Kamellen" ziemlich lange,
Sind aber schwerer handzuhaben als modernere! (Darauf bezieht sich der
Ausdruck)
Zum 8051 sollte man sich auch gleich noch einen Strick hinzubestellen.
Die 8051 Architektur ist veraltet, die von AVR oder PIC doch schon ein
Stueck neuer. Das erkennt man daran, dass schon der ASM Code sehr viel
kompakter ist.
Falls AVR, vergiss die Tiny, die sind fuer sehr hohe stueckzahlen. Als
Bastler gewinnt man nichts, wenn man 1 Euro an einem controller spart.
> PIC doch schon ein Stueck neuerPICs sind aelter als Braunkohle.
Zum Lernen und Kennenlernen ist der 8051 gut geeignet.
Und: in vielen Consumergeraeten werkelt auch heute
im Hintergrund ein 8051-Core der z.B. den Hardware-MPEG2-
Dekoder konfiguriert und bei Laune haelt...
Da wird man kaum PIC- oder AVR-Cores finden.
Man macht also mit 8051 nichts grundsaetzliches verkehrt.
Verrwundert schrieb:> Andreas H. schrieb:>> Erfahrungsgemäss reichen aber>> die "ollen Kamellen" ziemlich lange,> Sind aber schwerer handzuhaben als modernere! (Darauf bezieht sich der> Ausdruck)
Für Dich ist ja auch ein "+" einfach nur ein "+".
Solange man die uC nur soweit einsetzt bis sie das erste Mal "warm"
werden, ist man mit modernen uC natürlich länger auf der sicheren Seite.
Aber wo bleibt da denn der Spass?
Anyway. Der TO fängt gerade an. Da ist das was er schon hat genau das
Richtige. Alles andere wäre mMn. Overkill.
Grüße
Andreas
Uli, der Wilde schrieb:> Zum 8051 sollte man sich auch gleich noch einen Strick hinzubestellen.> Die 8051 Architektur ist veraltet, die von AVR oder PIC doch schon ein> Stueck neuer.
Immer wieder derselbe Käse der hier behauptet wird.
Der PIC ist älter als der 8051.
Diesmal ohne Beleg, ich bin zu faul sie zum zehnten Mal rauszusuchen,
such selber.
Und der ARM älter als der AVR, aber ich weiss, dass das nicht gefragt
wurde.
MaWin schrieb:> Uli, der Wilde schrieb:>> Zum 8051 sollte man sich auch gleich noch einen Strick hinzubestellen.>> Die 8051 Architektur ist veraltet, die von AVR oder PIC doch schon ein>> Stueck neuer.>> Immer wieder derselbe Käse der hier behauptet wird.>> Der PIC ist älter als der 8051.>> Diesmal ohne Beleg, ich bin zu faul sie zum zehnten Mal rauszusuchen,> such selber.
Ist ursprünglich von General Instruments - einer Firma, die
zwischenzeitlich vom allseits beliebten Donald Rumsfeld geleitet wurde.
Die Mikroelektroniksparte wurde abgespalten und nannte sich:
Microchip...
Den ersten PIC gab es auf jeden Fall schon 1977, den 8051 erst 1980.
> Und der ARM älter als der AVR, aber ich weiss, dass das nicht gefragt> wurde.
Der erst ARM kam so um 1983 rum.
MaWin schrieb:> Uli, der Wilde schrieb:>> Die 8051 Architektur ist veraltet, die von AVR oder PIC doch schon ein>> Stueck neuer.>> Immer wieder derselbe Käse der hier behauptet wird.>> Der PIC ist älter als der 8051.8051 geb. 1980
PIC geb. 1976
@ Verrwundert (Gast)
>> Warum soll man heute noch des kleine 1x1 und Kopfrechnen lernen,>> wo es doch Computer und Smartphones gibt?>Macht man ja auch nicht mehr. Die Kids fangen früher mit den>Taschenrechnern an und die Dinger können viel mehr als früher. Eine ganz>normale Entwicklung, wie bei den uC auch.
Eine ganz normale Fehlentwicklung, in der Tat. Tasten drücken und blind
dem Taschenrechner vertrauen, ohne zu wissen das da im Prinzip im
mHintergrund abgeht. Das war zu meiner Zeit schon ein Problem, heute ist
es das noch viel mehr.
Nein, ich propagiere keinen Rechenschieber und auch kein ASM. Aber
Grundlagenwissen!!!
Jeder Compiler erzeugt als Zwischenschritt Assembler. Und bisher
brauchte ich diese Stufe bei jeder Architektur, weil bisher noch kein
Compiler fehlerfrei war.
Man kann Assembler ignorieren so wie man eine Dichtung im Wasserhahn
auch ignorieren kann. Aber trotzdem ist er ganz alltäglich. Und wenns
drauf ankommt ist es gut, zu wissen, wie man die Dichtung ersetzt...
Verwundert schrieb:> Die Masse hier dürfte einen Akkuschrauber nutzen. Aber ein paar Prediger> raten ab und schwören auf den mehrfach angeschliffenen Schraubendreher> mit Holzgriff.
Ich rate dazu, zu erkennen, für welche Aufgabe welche Schraube die
richtige ist. Die stolzen Akkuschrauberbesitzer schrauben dann mangels
weitergehenden Interesse alles mit ihren Spax zusammen, nur wiel sie
nicht wissen, wofür die M10 Maschinenschrauben sind...
Oder andersrum: wer nur einen Hammer kennt, für den sieht die ganze Welt
wie ein Nagel aus.
Verwundert schrieb:> Du wirst nicht wünschen, dass die Werkstatt mit Ahnung ein Pleul> tauscht. Denn das möchtest du nicht bezahlen.
Naja, ob das so viel teurer ist, als von jemandem, der keine Ahnung hat,
sukzessive den halben Motor tauschen zu lassen, bis der Fehler weg ist?
> Die breite Masse der Hobbybastler braucht kein asm. Wer Spaß hat, sich> auf genau eine Archtektur zu versteifen, kann ja den Befehlssatz> auswendig lernen.
Es ist zwar ein gängiges rhetorisches Mittel, die Argumente des Gegners
völlig zu übertreiben, um sie als absurd hinzustellen, aber man muss
aufpassen, dass man sich damit nicht lächerlich macht. Es wurde bereits
erwähnt, dass das, was du da schreibst, nicht nötig ist-
> Für die jenigen, für die der uC nur Mittel zum Zweck ist, die interessante> Projekte umsetzen, ist am überflüssig.
Das mag sein. Für viele ist der µC aber der Zweck. Sie haben Spaß daran,
ihn zu programmieren und zu verstehen, was da unter der Haube
passiert.
Hier im Forum kannst du gut erkennen wohin das führt. Die Jungs kennen
nur avr und verteidigen die Dinger gegen alles und jeden. Vor einem
halben Jahr gab es hier die cortex vs avr Threads. 32bit wurden als
völlig überflüssig angesehen, nur was für Androiden und Co. und jetzt?
Die Dinger sind hier total normal und finden immer mehr Interesse. Der
avr zubehörkrams wird verkauft und man widmet sich moderner Technik.
Aber wenn der Weg das Ziel ist ...
Du müsstest dann aber einen echten Prozessor empfehlen, alles extern
anschließen, damit man jede Einzelheit versteht. ???
Verwundert schrieb:> Hier im Forum kannst du gut erkennen wohin das führt. Die Jungs kennen> nur avr und verteidigen die Dinger gegen alles und jeden.
Ich glaube da unterschätzt Du das Forum.
Viele dürften das Problem haben, einige Sachen hier einfach nicht
ausdiskutieren zu können, weil da irgendwann auch
Firmeninteressen/Know-How ins Spiel komt.
Darum halten sich die Leute da zurück und begrenzen sich nur auf das,
was sie auch im Hobbybereich benutzen.
Grüße
Andreas
Nö, hier sind auch Profis unterwegs. Aber auch ganz viel Halbgares.
Und es zählt ja nur was hier steht, nicht was einer vielleicht unter
Umständen eventuell beitragen könnte, ...
Verwundert schrieb:> Die Jungs kennen nur avr und verteidigen die Dinger gegen alles und> jeden.
Es bringt dann aber auch nichts, die ARM Cortex uC als alleiniges
Allheilmittel anzupreisen. Oder gar für den Anfänger. Die kapieren ja
schon den NVIC nicht...
> Die Jungs kennen nur avr und verteidigen die Dinger gegen alles und> jeden.
Ich brauchte letzthin einen uC, den man parasitär über einen 10k Pullup
eines Eingangssignals versorgen konnte: ATtiny9
Und ich brauchte einen, der einfach ein Display ansteuern kann: STM32F4
Fazit: man nimmt den uC, der die Aufgabe am besten packt.
Verwundert schrieb:> Aber wenn der Weg das Ziel ist ...> Du müsstest dann aber einen echten Prozessor empfehlen, alles extern> anschließen, damit man jede Einzelheit versteht. ???
Genau darum gehts!!!!!!!!!!!!!!!!!!!! Um Wissen zu schaffen und es zu
verstehen.
Verwundert schrieb:> Hier im Forum kannst du gut erkennen wohin das führt. Die Jungs kennen> nur avr und verteidigen die Dinger gegen alles und jeden.
nope hier kennen viele ne Menge mehr und nutzen, das was man einfach
hand haben kann. Habe z.B damals mit AVR angefangen und in der
Ausbildung musst PIC programmiert werden. Habe beides gerne ausprobiert
und stellte fest das ein 16f... nicht das wahre ist mit irgendwelchen
Umschaltungen. Also blieb ich beim AVR da dieser auf allen AVR's zu 95%
ähnlich war. Und jetzt erklär mal wenn man diesen Vorteil für sich, nur
für sich, erkannt hat nicht nutzen soll??
MMhhhh vllt sollte man gleich mit nem Smartphone anfangen denn da brauch
ich nur in den Appstore gehen und mir das was ich brauche ziehen denn
insten kann jeder....
Dat Mädel möchte aber tiefer in die Programmierung einarbeiten als wäre
es definitv falsch mit Smartphones anzufangen wenn jegliche Grundlagen
fehlen.
UND NUR DARUM GEHTS!!!!!!!!!!!! GRUNDLAGEN LERNEN DIESE WERDEN EINEN
NIVHT IN DIE WIEGE GELEGT.
Lothar M. schrieb:> Es bringt dann aber auch nichts, die ARM Cortex uC als alleiniges> Allheilmittel anzupreisen.
Tja, du hast den GK eröffnet. Aber es geht nicht um: welchen uC für
welches Projekt?
Es geht um: Ich bin Anfänger, wie kann ich (heutzutage) problemlos
einsteigen?
Und da sind AVR nun mal nicht in der ersten Reihe. Das kannst du
wunderschön hier im Forum erlesen.
Durch deinen das Thema verfehlenden GK hast du jetzt die AVR-Lemminge
geweckt.
chris schrieb:> Habe beides gerne ausprobiert> und stellte fest das ein 16f... nicht das wahre ist mit irgendwelchen> Umschaltungen. Also blieb ich beim AVR da dieser auf allen AVR's zu 95%> ähnlich war.
Er kennt nix ausser AVR, er kennt nicht die einfache Handhabung anderer
moderneren uC und gibt großspurige Tipps für Anfänger, nicht nur in
diesem Thread.
Tolle Beratung! ;-(((
verwundert schrieb:> Er kennt nix ausser AVR, er kennt nicht die einfache Handhabung anderer> moderneren uC und gibt großspurige Tipps für Anfänger, nicht nur in> diesem Thread.> Tolle Beratung! ;-(((
Achtung das ist eine persönliche Erfahrung jeder hat das Recht sich...
nein falsch muss es selbst entscheiden.
Doch 8051er ,Microchip, STM, Cortex, usw usf aber sie fragte explizit
nach 8051 VS AVR und AVR bietet definitiv eine leichten Einstieg. Es ist
doch egal mit welchen man vom Prinzip her anfängt, viel wichtiger ist
die Erkenntniss nach der Einarbeitung das die Dinger unterm Strich
irgendwie ähnlich aufgebaut sind und mit diesem Wissen würde ich mir
auch zutrauen nen Cortex oder wie dat heißt zu programmieren. Aber als
Hobby einfach ne Nummer zu groß. BERUFLICH würde ich eher dann schon auf
32bitter gehen aber auch dort müssen die Grundlagen sitzen und 8bit
bietet eine verdammt übersichtliche Möglichkeit.
Hinweis PIC musste ich troztdem programmieren ;)
verwundert schrieb:> Es geht um: Ich bin Anfänger, wie kann ich (heutzutage) problemlos> einsteigen?>> Und da sind AVR nun mal nicht in der ersten Reihe. Das kannst du> wunderschön hier im Forum erlesen.
... und nochmal es geht um GRINDLAGEN....
W.S. schrieb:>>Claus M. schrieb:>> Dann schmeiße ich mal diesen hier in die Runde: STM32F030> Aber nicht, um die Grundlagen zu erlernen.>> Der Tip mit dem 8051 ist schon ganz gut. Ebenfalls ganz gut - wenn auch> ein bissel "anders" sind die kleinen PIC's, also 16Fxyz.>> Bei beiden Architekturen kann man sehr gut die Grundlagen und Assembler> lernen. Das ist wichtig.>> Ja wichtig.> Man sehe sich in diesem Forum mal um: all diejenigen, die Probleme haben> mit dem Grundverständnis und sogar mit simpelsten Konstrukten in C sind> diejenigen, die noch nie ihre Nase mal in Assembler gesteckt haben.> Geschweige denn in die Manuals zu ihren Bastelobjekten. Es fehlen halt> die Grundlagen.>> Aber Maschinenbefehle und Assembler für ARM ist denn doch für den> Einstieg nicht das geeignetste. Ist zwar alles durchaus logisch> aufgebaut, aber dennoch für den Anfang zuviel.
PUNKT W.S. hat damit alles gesagt.
@verwundert mich würde mal interessieren wie dein Einstieg war
Plattform/Sprache denn auch dein Wissen musstest du erlernen.
chris schrieb:> das ist eine persönliche Erfahrung
Deine einzige Erfahrung, dir fehlen Vergleichsmöglichkeiten.
chris schrieb:> wie dein Einstieg war> Plattform/Sprache
Ich kenne noch die Zeiten der Emulatoren mit Bond-Out-Chip oder auch nur
für ROM. Als die ersten Flash-Controller für die breite Masse kamen, gab
es mehr Skeptiker als Befürworter: neuer Stapel an Tools (meist
Kommandozeile), lange Lösch- und Programmierzeiten, begrenzte
Programmierzyklen, ...
Ist genau wie heute: Was anders (neu) ist, ist erst einmal schlecht.
;-)))
verwundert schrieb:> chris schrieb:>> das ist eine persönliche Erfahrung> Deine einzige Erfahrung, dir fehlen Vergleichsmöglichkeiten.
Hä ließt du mal was durch??? Trollstatus wird höher....
Von dir kam bisher ja uch nischt gescheites
> chris schrieb:>> wie dein Einstieg war>> Plattform/Sprache> Ich kenne noch die Zeiten der Emulatoren mit Bond-Out-Chip oder auch nur> für ROM. Als die ersten Flash-Controller für die breite Masse kamen, gab> es mehr Skeptiker als Befürworter: neuer Stapel an Tools (meist> Kommandozeile), lange Lösch- und Programmierzeiten, begrenzte> Programmierzyklen, ...>> Ist genau wie heute: Was anders (neu) ist, ist erst einmal schlecht.> ;-)))
Die Kunst ist es, alt und neu optimal zu nutzen.
Ab jetzt verfehlts die Aufgabenstellung.
Lothar M. schrieb:> Ich sage z.B. meinen daraufhin sichtlich schockierten> Praktikanten: ein "delay()" ist ein Programmfehler!
Angenommen ich möchte ein einfaches 1602-LCD im 4-Bit-Parallel-Modus
betreiben: Abgesehen davon, dass die korrekte Initialisierung eines
Timers selbst für Datenblatt-Virtuosen einen Mehraufwand bedeuten
dürfte, sehe ich hierdrin eine ziemliche Verschwendung der gegebenen
Hardwareressourcen. Alles wird unnötig verkompliziert und
unübersichtlicher.
Sicher setzen die meisten "Arduino-Coder" die Funktion an den falschen
Stellen zu falschen Zwecken ein, aber von pauschalisierenden
Rundumschlägen würde ich trotzdem lieber Abstand nehmen.
@ Timer0 (Gast)
>Lothar M. schrieb:>> Ich sage z.B. meinen daraufhin sichtlich schockierten>> Praktikanten: ein "delay()" ist ein Programmfehler!
Jaja, die liebe Schwarz-Weiß Malerei . . .
>Sicher setzen die meisten "Arduino-Coder" die Funktion an den falschen>Stellen zu falschen Zwecken ein, aber von pauschalisierenden>Rundumschlägen würde ich trotzdem lieber Abstand nehmen.
Me too! Auch ich nutze regelmäßig die "bösen" delay-Funktionen,
allerdings dort, wo es sinnvoll und unkritisch ist. Einfaches Beispiel.
Wenn ein Startbildschirm für ein paar Sekunden angezeigt werden soll,
macht man das sicher NICHT mit einem Timer, denn die CPU hat in dem
Moment so oder so nichts zu tun. Anderes Beispiel. Wenn man einen
DMX-Datenstrom sendet, muss man immer wieder ein BREAK erzeugen. Das
kann man mit einem Timer oder dem UART selber machen, muss man aber
nicht. Ich habe dafür mehrfach ein _delay_us(100) genutzt, und das sogar
in einem Timer-Interrupt!!! Jehova, Jehova!
> Ich habe dafür mehrfach ein _delay_us(100) genutzt, und das sogar> in einem Timer-Interrupt!!! Jehova, Jehova!
_delay_us aus der AVRlibc läuft auch nur im Kreis, wärend die
Arduino-Variant wohl per TimerInterrupt eine Variable hoch(runter)
zâhlt. Das ist zwar etwas genauer, da keine ISR die Wartezeit
verlängert, geht aber bei gesperrten INT's z.B. innerhalb einer ISR
nicht.
Falk B. schrieb:> Jaja, die liebe Schwarz-Weiß Malerei . . .
Wenn schon jedes Wort auf die Goldwaage gelegt werden muss, hier eine
leicht überarbeitete Variante:
1
Ein _delay_ms() im Programmablauf ist fast immer ein Programmierfehler.
Oder andersrum:
1
Neun von zehn _delay_ms() sind unnötig.
Das waren dann auch genau die delay(), die ich den Praktikanten
angekreidet und wegoptimiert habe. Es ist ja nicht "schlimm", wenn in
der Initialisierung mal 50ms gewartet wird. Aber wenn sowas in jedem
Durchlauf der Hauptschleife passiert, dann ist das nur kostspielige
Rechezeitvernichtung.
Wie? Das Programm hat gar keine Hauptschleife? Das ist in 99% der Fälle
auch ein Programmfehler. Oder eher ein Konzeptfehler...
> Me too! Auch ich nutze regelmäßig die "bösen" delay-Funktionen,> allerdings dort, wo es sinnvoll und unkritisch ist.
Mir scheint, dir ist die Problematik eines delay() bekannt.
Einigen anderen aber offenbar nicht, denn sonst käme nicht wöchentlich 2
mal die Frage nach dem "abbrechbaren delay()".
@ Lothar Miller (lkmiller) (Moderator) Benutzerseite
>> Jaja, die liebe Schwarz-Weiß Malerei . . .>Wenn schon jedes Wort auf die Goldwaage gelegt werden muss, hier eine>leicht überarbeitete Variante:
Nun ja, du bist ja auch bei anderen Dingen für ABsolutismen bekannt, ich
sag nur Entkoppelkondensator . . . 8-0
>Ein _delay_ms() im Programmablauf ist fast immer ein Programmierfehler.>Neun von zehn _delay_ms() sind unnötig.
Damit kann man sich schon eher anfreunden. ;-)
>> Me too! Auch ich nutze regelmäßig die "bösen" delay-Funktionen,>> allerdings dort, wo es sinnvoll und unkritisch ist.>Mir scheint, dir ist die Problematik eines delay() bekannt.
Gerade so.
>Einigen anderen aber offenbar nicht, denn sonst käme nicht wöchentlich 2>mal die Frage nach dem "abbrechbaren delay()".
Was zumindest ICH mit dem immer gleichen, weil immer gültigen Hinweis
auf den schönen Artikel Multitasking beantworte.
Lothar M. schrieb:> Wie? Das Programm hat gar keine Hauptschleife? Das ist in 99% der Fälle> auch ein Programmfehler. Oder eher ein Konzeptfehler...
Nö. Bei Systemen mit (RT)OS gibt es entweder nur eine irgendwo im
Scheduler o.ä. versteckte oder sogar gar keine echte Hauptschleife. Bei
vielen Anwendungen mit kooperativem Multitasking sollte man es auch
tunlichst unterlassen, auf Anwendungsebene Hauptschleifen zu
implementieren, z.B. in SPS-Programmen.
Andreas S. schrieb:> z.B. in SPS-Programmen.
Und gerade ein SPS Programm ist das Beispiel für eine Hauptschleife
schlechthin. Dort wird nämlich das Programm an sich als Teil so einer
Schleife ausgeführt. Und zwar möglichst schnell, ohne auf irgendwas zu
warten (das nennt sich dann Zykluszeit). Natürlich darf man da nicht
zusätzlich eine "eigene" Hauptschleife einführen, weil man dann ja das
implizite Prozessabbild (Lesen und Schreiben der EA) komplett umgeht.
Am besten gefällt mir hier, dass SPS Programmierer (oft ohne es zu
wissen) mit Zustandsautomaten arbeiten (die heißen dann Merkerketten).
Falk B. schrieb:> Nun ja, du bist ja auch bei anderen Dingen für ABsolutismen bekannt, ich> sag nur Entkoppelkondensator . . . 8-0
Es gibt für auch für Absolutismen eine Ausnahme. Allerdings muss man die
dann auch jeweils gut begründen können. Und das kann man erst dann, wenn
man den zugrunde liegenden Mechanismus verstanden hat.
Man könnte z.B. Fahranfängern sagen: fahre nur auf geteerten Wegen! Wenn
dann die letzten 100m unbefestigt sind, dann darf er die mit gutem Grund
mal "ausnahmsweise" fahren um sein Ziel zu erreichen. Aber wenn er
sofort nach dem Losfahren über den nächten Feldweg in einen Wald fährt,
dann darf er sich nicht wundern, wenn es recht schnell holprig wird...
;-)
Und mit dem Verstehen sind wir wieder beim 8051 und dem AVR: diese wenig
komplexen Controller kann man noch relativ leicht überblicken und
begreifen. Und wenn man die dann kapiert hat, dann kann man sich nach
Großem recken und sich mal den Registersatz eines I.MX6 oder auch nur
die DMA oder den NVIC eines ARM zu Gemüte führen.
Lothar M. schrieb:> Andreas S. schrieb:>> z.B. in SPS-Programmen.> Und gerade ein SPS Programm ist das Beispiel für eine Hauptschleife> schlechthin.
Dann solltest Du mich nicht sinnentstellend zitieren!
> Natürlich darf man da nicht> zusätzlich eine "eigene" Hauptschleife einführen, weil man dann ja das> implizite Prozessabbild (Lesen und Schreiben der EA) komplett umgeht.
Genau. Bei einer S7 muss auch der OB1 einfach durchlaufen.
> Am besten gefällt mir hier, dass SPS Programmierer (oft ohne es zu> wissen) mit Zustandsautomaten arbeiten (die heißen dann Merkerketten).
Für SPS-Programme in SCL/ST haben wir uns ein paar Vorlagen für
Zustandsautomaten gebaut, die dann in den meisten FB verwendet (und dann
durch OB aufgerufen) werden.
> Und mit dem Verstehen sind wir wieder beim 8051 und dem AVR: diese wenig> komplexen Controller kann man noch relativ leicht überblicken und> begreifen. Und wenn man die dann kapiert hat, dann kann man sich nach> Großem recken und sich mal den Registersatz eines I.MX6 oder auch nur> die DMA oder den NVIC eines ARM zu Gemüte führen.
Einer meiner Favoriten für das Erlernen akkumulatorbasierter
Architekturen/Befehlssätze wäre der Z80. Anschließend vergleicht man
solch einen Ansatz mit registerbasierten Prozessoren. Ebenfalls sehr
hilfreich ist zu späteren Zeitpunkten die Beschäftigung mit Prozessoren,
die eine sehr strenge Trennung der Adressräume für Daten und Programme
haben, d.h. Harvard-Archikturen. Die krasseste Ausprägung dieser
Trennung hatte ich bei einem Philips PCB5011 erlebt, der vier separate
Adressräume mit völlig voneinander getrennten externen Bussen hatte:
Programm, X-Daten, Y-Daten, ROM-Koeffizienten. Für Programm und
ROM-Koeefizienten gab es nicht einmal Schreibbefehle. Die
Daten-Datenbusbreite betrug 16 Bit, die Programm-Datenbusbreite 40 Bit.
Mit solch einem Prozessor konnte man nicht wirklich gut arbeiten,
weswegen er wohl auch keine nennenswerte Verbreitung erzielt hat. Das
grundlegende Konzept findet man aber wiederum in VLIW-Architekturen
wieder, d.h. in einem Programmwort befanden sich sechs Befehle, die
blockierungsfrei gleichzeitig ausgeführt wurden.
NEIN, ich empfehle NICHT den Aufbau und die Programmierung eines
PCB5011-basierten Rechners für jedermann!
verwundert schrieb:> Es geht um: Ich bin Anfänger, wie kann ich (heutzutage) problemlos> einsteigen?>> Und da sind AVR nun mal nicht in der ersten Reihe. Das kannst du> wunderschön hier im Forum erlesen.
Man muss bei solchen Aussagen wirklich "verwundert" sein.
Du empfiehlst also einen µC zum Einstieg, der so komplexe Peripherie
beinhaltet, und einen komplexen Befehlssatz hat, dass die notwendigen
Dokus dazu schnell mehr als 500 Seiten ausmachen, dass alleine Errate
Sheeets größer als 40 Seiten sind.
Und das empfiehlst du als "Einstieg"?!
Ich nehme an wenn dich eine verzweifelte Mutter fragt wie sie ihrem
Sprössling in Mathe 4. Klasse helfen kann so dass er die
Gymnasialempfehlung erhält, dann empfiehlst du ihr/ihm auch den Papula
Band 1-3?
Kopfschüttel
@Lothar
Es gibt noch andere für den Einstieg bessere uC, moderner und einfacher
handzuhaben. Perfekt für Anfänger, ohne Fallstricke, ...
Aber wir drehen uns im Kreis.
Der Andere schrieb:> Und das empfiehlst du als "Einstieg"?!
Ja, kennst du überhaupt den MSP? Ich denke nicht.
Und für ARM gibt es gute Einführungen. Warum hältst du die Neebees für
so dumm, das ist nicht fair.