Ich habe bei elektor gesehen dass sie Bücher 3 bändig zum Thema 8051
anbieten. Ich dachte dass dieser Technik mittlerweile veraltet ist! aber
ich irre mich vielleicht.
Meine Frage wäre : ich will C für Microcontroller von Grund lernen, und
dachte das die 8051 Architektur wäre nicht schlecht für den Anfang.
Ich habe aber ein MYavr Board mit Atmega8 liegen und weiss nicht ob ich
die Zeit direkt in AVr investiere oder mit 8051.
Viele sagen : lernen Sie die 8051 Architektur und später können Sie C
auf andere Microcontroller übertragen. stimmt das?
die Bücher, die ich gefunden habe sind auf folgende Seite zu sehen :
http://www.elektor.de/products/books/education/c-programmierung-fur-8051er-%281%29.7137.12460.lynkx
dort steht auch : Die dreiteilige Buchreihe vermittelt ein solides
Grundwissen und anspruchsvolle praktische Fertigkeiten im Umgang mit den
Mikrocontrollern der 8051er-Familie, am Beispiel von drei ausgewählten
Mitgliedern: 80C537 (Infineon), ADuC812 (Analog Devices), und T89C51CC01
(Atmel).
was sagt ihr dazu? ist es eine Investitionswert die 3 Bücher zu kaufen?
danke
>Viele sagen : lernen Sie die 8051 Architektur und später können Sie C>auf andere Microcontroller übertragen. stimmt das?
Das ist wohl ein Umfrageergebnis aus einer Seniorenresidenz :-)
Aus dem genannten Verlag würde ich kein einziges Buch kaufen.
Du hast ein MYAVR-Board, dann spiele damit 'rum. Es gibt keinen Grund
auf einen 8051 zu wechseln.
> Viele sagen : lernen Sie die 8051 Architektur und später können Sie C> auf andere Microcontroller übertragen. stimmt das?
Wozu so einen alten Schröngel lernen?
Den Grundschülern bringt man auch nicht zuerst Keilschrift bei.
Gleich einen Mega88 lernen und gut ist.
Axel
Wenn ich die Wahl zwischen 8051 oder AVR zu treffen hätten, nähme ich
einen 16 Bit PIC oder einen 32 Bit Cortex. Ansonsten kommt es natürlich
immer auf die Anwendung an.
8051 würde ich nur dann noch lernen, wenn du sie konkret benötigst, weil
z.B. dein Arbeitgeber noch damit entwickelt.
Wenn du nur zum Hobby programmierst oder keine konkrete Anwendung für
speziell 8051 hast dann konzentriere dich lieber auf eine der derzeit
gängigen Familien AVR AT oder PIC von Microchip.
Preiswert, vielfältig, überall Infos im Netz, kostenlose
Entwicklungsumgebungen, moderne Peripherie und und und.
Naja, die 8051er haben den Vorteil dass sie von mehreren Herstellern
verfuegbar sind. Kann ganz nuetzlich sein, wenn man sich mal die
aktuellen Lieferschwierigkeiten von Atmel anschaut.
Vorteil bei vielen 8051ern: sie haben einen integrierten Bootloader,
damit spart man sich den Programmer. Ausserdem gibt es keine Fuses, die
man verstellen koennte. Ein Einsteigersystem kann man sich fuer 10-20
Euro auf einem Breadboard zusammenstecken.
Wenn mal einen uC in C programmiert hat dann ist eine spaetere
Umstellung auch kein grosses Ding.
Elektor wuerde ich eher meiden. Im Netz gibt es genuegend Tutorials,
z.B. auf pjrc.com.
Martin schrieb:> Wenn ich die Wahl zwischen 8051 oder AVR zu treffen hätten, nähme ich> einen 16 Bit PIC oder einen 32 Bit Cortex. Ansonsten kommt es natürlich> immer auf die Anwendung an.
Verstehe ich jetzt nicht ganz: Du hast die Auswahl zwischen Audi und BMW
und entscheidest dich für einen Hubschrauber??
Bzgl 32 Bit Cortex. Wenn er anfängt zu programmieren und wir von kleinen
Anwendungen und Basteleien ausgehen, dann passt ein Cortex als ob du den
Learjet nimmst um bei Aldi einkaufen zu gehen.
Martin schrieb:> Wenn ich die Wahl zwischen 8051 oder AVR zu treffen hätten, nähme ich> einen 16 Bit PIC oder einen 32 Bit Cortex.
Ein Cortex ist natürlich eine super Idee für einen kompletten
Einsteiger. Der besorgt sich die Manuals, stellt fest, dass er einige
Tausend Seiten Englisch vor sich hat, die durchweg Vorkenntnisse
erfordern, versteht folglich nur Bahnhof - und verlegt sich danach aufs
Moped-Tuning.
Mit Fragen wie 8051 vs. AVR vs. PIC brichst Du unweigerlich
Religionskriege vom Zaun. Fundierte Antworten darfst Du dann kaum
erwarten.
Der 80C537 (Infineon) ist in der Tat ein veralteter 8051, er hat keinen
Flash und wird auch nicht mehr produziert.
Die anderen beiden sind aber nicht schlecht.
Infineons moderner 8051 heißt XC866.
Ist allerdings hier nicht sehr verbreitet, da Infineon völlig verpennt
hat, auf den Flash-Zug aufzuspringen. Da waren die anderen im Markt
schon etabliert.
Ob die Bücher was taugen, weiß ich nicht.
Peter
Da widerspreche ich dir aber auf das Heftigste. Die maßlose Übertreibung
von einigen tausend Seiten ist mehr als unpassend. Ob du dich in die
C-Materie via AVR oder Cortext einarbeitest macht keinen großen
Unterschied. Ganz im Gegenteil: für die Einarbeitung in die ARM-Welt
stehen ordentliche Entwicklungsumgebungen mit einem erstklassigen
Simulator (z. B. Keil) zur Verfügung. Mit der kostenlosen Demoversion
(Code bis 32 KByte) ist gerade ein Anfänger gut bedient. Schneller und
preiswerter kann man sich nicht einarbeiten.
Alex schrieb:> Meine Frage wäre : ich will C für Microcontroller von Grund lernen, und> dachte das die 8051 Architektur wäre nicht schlecht für den Anfang.
Mal eine ketzerische Frage:
Wie sieht es denn bei dir mit C auf Dektop-Systemen aus?
Hast du da schon einen gewissen Grundschatz?
Denn das wäre die weitaus bessere Alternative:
Zuerst erst mal einen Grundstock an C anhäufen (mit einem PC) und erst
dann auf die Spezialitäten in der µC Programmierung eingehen. Ausser ein
wenig C-Literatur, die du wahrscheinlich aber sowieso brauchen wirst,
kostet dir das erst mal gar nichts.
Martin schrieb:> Da widerspreche ich dir aber auf das Heftigste. Die maßlose Übertreibung> von einigen tausend Seiten ist mehr als unpassend.AVR:
- Datasheet.
STM32:
- Hitex-Intro.
- Datasheet vom Chip
- Family-Reference der STM32F10x
- Programming Manual (Thema Waitstates steht hier drin)
- Cortex-M3 Core Reference
Ich hab's nicht zusammengezählt, aber da kommt schon was bei raus. Und
die References setzen voraus, dass man über die Grundlagen der
Funktionsmodule bereits Bescheid weiss und nur die Details sucht.
Wer's krass will, der schaut sich die ARM7er von Analog Devices an.
Deren Doku ist zwar kurz, aber eben wirklich sehr sehr kurz. Da sollte
man schon mal hellsehen üben.
Ein Anfängertutorial vgl. dem für die AVRs hier auf dem Board ist für
solche Dinger auch nicht so leicht zu finden.
Ob 8051 oder AVR, es gibt auch neue 8051-er,
(ADuC bei Analog-Devices) ich entscheide das nach
der Anwendung, sprich was will ich erreichen. Mal
ist der eine mal der andere geeigneter.
Einem Anfänger würde ich eher zum AVR raten, schon
wegen der guten Tutorials hier und wenn du sowieso
schon ein Board mit dem alten ATMEGA8 (mußte sein)
rumliegen hast.
Für die GRUNDLAGEN in C sind die OK.
Für die Feinheiten, sprich die Baustein-typischen Befehle,
hilft erstens das Datenblatt und und zweitens die C-Doku
weiter. (Für die 8051 ist "Keils µVision" sicher eine gute
Wahl, (die Vollversion leider teuer).)
Und von wegen "Seniorenresidenz": Wenn schon alter µP
dann gleich der "RCA1802". Wird leider nicht mehr produziert,
war zu seiner Zeit was u.a. den Stromverbrauch anbetraf,
den anderen (8048) weit überlegen.
> Naja, die 8051er haben den Vorteil dass sie von mehreren Herstellern> verfuegbar sind. Kann ganz nuetzlich sein, wenn man sich mal die> aktuellen Lieferschwierigkeiten von Atmel anschaut.
Das stimmt nicht. Es gilt naemlich nur fuer steinalte Standard-MCS51.
Die moechte aber nun wirklich niemand verwenden weil sie doppelt so
stark veraltet sind wie die ebenfalls veralteten AVRs. :-)
Wenn man einen modernen MCS51 mit allen Schickimicki nimmt, sehen die
schon nicht mehr so schlecht aus. Aber dann hat es sich was mit
Secondsource.
Und wenn man in C programmiert ist es letztlich vollkommen egal welcher
Prozessor unten drunter liegt. Wichtig ist einzig die Qualitaet der
Entwicklungsumgebung. Gerade Anfaenger werden einen Debugger auf
Sourcecodelevel, wie z.B <floet> bei Renesas, sehr zu schaetzen wissen.
Man lernt doch eine ganze Menge wenn man nach jeder Programmzeile
pruefen kann ob Glaube und Wirklichkeit deckungsgleich sind.
Olaf
AVR-Fan schrieb im Beitrag #1966101:
> Für die GRUNDLAGEN in C sind die OK.
Für die Grundlagen der C-Programmierung stellt gerade der AVR mit seiner
--Verzeihung-- verkorksten Harvard-Architektur ein Problem dar, wie die
Unmengen an Threads in diesem Forum beweisen, in denen es mal wieder um
"pgmspace.h" und darin deklarierte Dinge geht. Und die MCS-51-Reihe
steht hier nicht besser da.
C programmiert sich auf von-Neumann-Maschinen einfacher, da genügt der
Gebrauch des Schlüsselworts "const" und Daten landen im Flash.
AVR-Fan schrieb im Beitrag #1966101:
> dann gleich der "RCA1802". Wird leider nicht mehr produziert,
Macht nix. Segor hat noch welche.
Und das schöne daran ist: Der hat unterstützt schon einen ggf. ROM-losen
Betrieb über einen seriellen Bootloader. Ok, die Schnittstelle dafür
muss man extern dranhängen, aber den kann man ohne viel Zirkus seriell
urladen, nur mit Schnittstellenbaustein, ohne jedes Programm. Das gab's
damals in der Klasse nirgends sonst.
Rufus Τ. Firefly schrieb:> C programmiert sich auf von-Neumann-Maschinen einfacher, da genügt der> Gebrauch des Schlüsselworts "const" und Daten landen im Flash.
Yep, und da willste auch nicht wieder weg von.
Nur muss manchmal sein, leider.
ich wollte eigentlich keinen Krieg auslösen :-) ich habe mich sogar für
C entschieden weil man flexibler ist als Assembler was Code-Migration
angeht, auch wenn das nicht wirklich 100% funktioniert!!
Avr-Studio hat anderen Headers als Mikroe-C Compiler, PIC oder 8051
haben wiederum andere Bibliotheken.
Ich dachte eigentlich dass 8051 ein Architektur wäre wo man unabhängig
ist ob AVR, PIC ist!! scheint aber nicht der Fall sein.
Zumindest habe ich das so verstanden wo auf der Elektor Homepage stand:
8051er Familie u.a: 80C537 (Infineon), ADuC812 (Analog Devices), und
T89C51CC01 (Atmel).
Also Atmel gehört doch zu 8051Familie? oder sind die Atmega und Xmega
nicht mehr drin?
Viele meckern auch wegen der internen Architektur des AVR dass die Daten
und Speicher Leitung nicht wie beim PIC getrennt sind.
Viele sagen dass die neuen 32Bit PIC Controller schneller als die AVR.
Ich will eigentlich nicht soweit gehen. Ich fange gerade an und wie
gesagt. Ich habe zwar den MYAVR Board zuhause aber ich fühle mich
irgendwie veräppelt!! Ich flasche die Hex Dateien und probiere halt ein
Bisschen und das war‘s erst mal. Die Doku bei Myavr sind schlecht, und
die bieten ein Buch (große Bedienungsanleitung) für 50euro!!! aber da
steht auch nicht alles drin.
Deshalb habe ich gehofft durch diese 8051 Bücher, dass ich solides
Wissen gewinne. Ob Die Platine die TFH-Core one was tauglich ist, weiß
ich nicht!!
Die Bücher und die Hardware sind sogar von der PAL für Ausbildung und
Weiterbildung empfohlen worden!
Links :
Empfehlung von PAl :
http://www.palmtec.de/PalmTec/8051er_-_World/P_A__L/p_a__l.htm
Weiterbildung von Elektor :
(auch mit 8051er und TFH Core-One Hardware)
http://www.elektor.de/academy/mikrocontroller-fernlehrgang-1-2.224772.lynkx
3 tägige Seminar mit C für mehr als 1000euro!!!! aber 8051er wird
beigebracht :
http://www.elektor.de/events/3-tagiges-seminar-c-programmierung-fur.1188238.lynkx
3 Bücher für 49euro bei elektor :
https://www.elektor.de/extra/3-bucher-fur-nur-49-90-eur.291149.lynkx
Ein Buch in Papierform würde ich Dir empfehlen: 'Programmieren in C' von
Kernighan/Ritchie. Darin stehen die Grundlagen ohne Schwafelei, wie sie
oft in anderen Büchern stattfindet, um die Seiten zu füllen.
Als 2. brauchst Du ein Problem, was Dir Spaß macht, es zu lösen. Sonst
hast Du keine Motivation, Dich auch in schwierigere Sachverhalte
einzuarbeiten.
Wenn Du ein AVR-Board hast, dann nimm es, und träume nicht davon, welche
anderen Prozessoren es noch gibt, die man auch noch nehmen könnte.
Was willst Du denn konkret programmieren? Welches Problem steht an?
> Ich dachte eigentlich dass 8051 ein Architektur wäre wo man unabhängig> ist ob AVR, PIC ist!! scheint aber nicht der Fall sein.
Nochmal langsam zum mitdenken:
Wenn man in C programmiert ist man erstmal unabhaengig von der
Architektur. Abhaengig ist man lediglich ueber die Art und Weise wie im
controller integrierte Hardware angesprochen wird. Aber da kann man
selbst innerhalb einer Architektur auf die Nase fallen weil es da auch
Unterschiede gibt. Aber das ist belangslos weil man dann einfach das
Datenblatt eines Prozessor liesst.
Die MCS51 haben einen gewissen herstelleruebergreifenden Ruf aus Zeiten
als es noch Leute gab die in Assembler programmiert haben. Die konnten
da einen Grossteil ihrer Arbeit einfach auf einen anderen Prozessor
mitnehmen. Aber auch da kann man auf die Nase fallen wenn der moderne
51er ploetzlich viel schneller ist.
> Also Atmel gehört doch zu 8051Familie?
Atmel ist ein Hersteller von ICs der sehr unterschiedliche Prozessoren
im Angebot hat. Dazu gehoeren auch MCS51er, aber auch AVRs und noch
verschiedenes anderes Zeugs.
> Viele meckern auch wegen der internen Architektur des AVR dass die Daten> und Speicher Leitung nicht wie beim PIC getrennt sind.
Richtig. Das kann manchmal nervig sein. Genauso wie die Abwesenheit von
IRQ Prioritaeten. AVRs sind aber bei Bastlern relativ verbreitet weil
sie vor vielen Jahren mal mit die ersten waren die Flashbausteine
angeboten haben. Damit haben sie gerade Bastlern das Leben sehr
vereinfacht.
> Ich flasche die Hex Dateien und probiere halt ein> Bisschen und das war‘s erst mal. Die Doku bei Myavr sind schlecht, und> die bieten ein Buch (große Bedienungsanleitung) für 50euro!!! aber da> steht auch nicht alles drin.
Was erwartest du? Wenn du etwas vernuenftig lernen willst dann geht es
nicht ohne Buch und fuer ein Buch wirst du auch mindestens 50euro auf
den Tisch legen muessen. Das sind ja keine Liebesromane! Darin steckt
vielmehr Arbeit und es gibt deutlich kleinere Stueckzahlen weil
Deutschland als Etechnikland nunmal auf dem stark absteigenden Ast ist.
Du lebst mittlerweile in einem Land wo es weniger Elektronikmagazine als
Angelmagazine gibt und wo mein Zeitschriftenladen vor ein paar Wochen
die Elektronikhefte (Elektor, Funkschau) aus dem Programm genommen hat
weil sie den Platz fuer Tittenhefte brauchten.
> Deshalb habe ich gehofft durch diese 8051 Bücher, dass ich solides> Wissen gewinne. Ob Die Platine die TFH-Core one was tauglich ist, weiß> ich nicht!!
Es gibt sicher gute Buecher fuer den MCS51, aber das gilt genauso fuer
AVR oder andere. Allerdings gibt es natuerlich auch viel Mist. Der
Unterschied zwischen klugen Leuten und weniger klugen liegt im Besitz
eines Buecherreiausweises. Dann kann man vor dem kauf mal testen. .-)
Olaf
Olaf schrieb:> Wenn man in C programmiert ist man erstmal unabhaengig von der> Architektur.
Nicht unbedingt, wenn man für kleine Controller programmiert. Da kommen
architekturbedingt oft ein paar Fisematentchen hinzu wie Einordnung von
Funktionen und Variablen in verschiedene Speicherbereiche und Banks und
Beschränkungen in der Verwendung von Funktionen und Variablen in
Interrupts.
Lieber Olaf, du hast alles schön geschrieben aber am Ende hast du
gescheitert ;-) warum schreibst du sowas oder wem meinst du damit?
"Der
Unterschied zwischen klugen Leuten und weniger klugen liegt im Besitz
eines Buecherreiausweises. Dann kann man vor dem kauf mal testen. .-)
Olaf"
Wenn du mich meinst, kann ich dir meine Ausweis Nummer mailen dann
siehst du dass ich 15 Bücher zum Thema Mikrocontroller habe, aber man
findet halt in Bibliotheken nicht alle Bücher!! also man kann auch nicht
alles testen!
deshalb man fragt ob jemanden die Bücher schon gelesen hat oder liest in
Feedbacks ob die Bücher was taugen.
Im konkreten Fall was die Bücher der 8051 angeht, gehen die Meinungen
sehr unterschiedlich, der eine gibt 1 Stern und sagt ist scheisse und
dann anderer User gibt 5 Sterne und sagt: bestes Buch überhaupt!!
Bei dieser Art Diskussion startest du immer einen Krieg :-)
Hier kannst du nach 8x51 Derivaten suchen:
http://www.keil.com/dd/search_parm.asp
Devices Found = 1063... daran kannst du erkennen das es kaum einen
anderen Prozessorkern gibt welcher derart verbreitet ist. Ich sehe daher
keinen Grund sich NICHT mit der 8x51 Familie zu beschäftigen.
Da du allerdings am Anfang bist gibts auch keinen Grund sich nicht mit
den AVR Typen zu beschäftigen. Für beide Architekturen gibt es freie
Software und ein Board im Eigenbau kostet kaum mehr als ~ 20 Euro.
Mein Rat, fang einfach mal an mit dem was du hast und gut ist.
Wie mein Vorredner schon sagte, es gibt 1063 Devices vom 8051.
Ich kann den 8051 jedem nur wärmstens empfehlen.
http://www.silabs.com/products/mcu/Pages/default.aspx
Der AVR µC ist ein RISC-Mikrokontroller mit einem recht spartanischen
Befehlssatz. (Naja, das besagt ja auch Reduced Instrunction Set
Computing)
Im gegensatz dazu ist der 8051 ein CISC.
Hier ist (für Assemblerfreunde) ein erstklassig durchdachter
Befehlssatz.
Es gibt zu hauf kostenlose Tools zum runterladen usw.
µC's mit AVR-Architektur haben weder einen einheitlichen Befehlssatz
noch eine einheitliche Pheripherie. Datenblätter sind also
notwendigerweise viele 100 Seiten lang. Viel Spaß beim lesen!
In 8051 wird man prima beraten, auch Anfängerfragen sind willkommen.
Beim AVR-Forum hingegen bekommt man immer nur zu hören:
Lies das Datenblatt . Siehe
Beitrag "Wie Baudrate einstellen"AVR-Projekte scheitern häufig an solchen Sachen wie:
Baudrate einstellen, Uhrenquarz anschließen etc. weil die Pheripherie
nicht einheitlich ist. So hat bei den AVR-Fans jeder seinen Lieblings
µC auf dem er sich halbwegs auszukennen glaubt. Dieses Wissen ist
natürlich mit Blut Schweiss und Tränen erworben... und jeder behält es
für sich.
Ich kann nur die Toolsticks von Silabs empfehlen:
http://www.silabs.com/products/mcu/Pages/ToolStick.aspx
Man bekommt für wenige Geld einen 8051 Controller und eine USB-Adapter
über den man sowohl programmieren als auch debuggen kann. Dazu würde ich
die Demo von Keil benutzen, die Beschränkung der Codegröße dürfte kein
Problem für kleinere Projekte sein.
Falls man irgendwann mal einen anderen Controller braucht, kauft man
sich einfach eine neue Daughter Card mit entsprechendem µC für weniger
als 10€.
Literatur kann ich grad keine empfehlen, das Datenblatt ist aber
eigentlich immer das hilfreichste.
Meine Meinung zum mcs-51 gegenüber AVR:
Kann Programmcode aus externem RAM ausführen +++ :)
SP nur 8 Bit -> weniger als 256 Bytes Stack in internen Registern ->
nicht so gut für Hochsprachen --- :(
Ich setze sie daher noch dort ein, wo Code oft geändert werden muss
(kleiner Bootlader im Flashrom, der das richtige Programm von SD-Karte
lädt).
Allerdings schreibe ich die Prog's nur in Assembler (Alfred Arnold's
AS).
mfG ingo
>Kann Programmcode aus externem RAM ausführen +++ :)
Wahnsinn!
Ich habe hier einen ST89C2051. Wie schließe ich das RAM an und wie
bekomme ich den Kot darein?
>Das ist ja auch kein MCS-51.
Ich hatte mich vertippt: AT89C2051.
Das ist ein moderner, erweiterter MCS-51 kompatibler Typ; siehe hier:
http://de.wikipedia.org/wiki/Intel_MCS-51
Flamewar... nun gehts los :-) Ich hol mir ne Tüte Popcorn.
Ketzer sagen, der wirkliche Nachteil eines 8x51 sind seine komplexen
Adressierungsmöglichkeiten.
Der Vorteil dieser Familie ist aber die komplexe Adressierung :-) Ich
glaube man ist gut beraten wenn man sich mit diversen Familien
beschäftigt.
> Ich hatte mich vertippt: AT89C2051.> Das ist ein moderner, erweiterter MCS-51 kompatibler Typ; siehe hier:
Also als erweitert würde ich ihn nun wirklich nicht bezeichen, sondern
gegenüber dem Grundtyp (8051) nur zusammengestrichen. Auch wenn ich ich
ihn, dort wo er sinnvoll war, gern eingesetzt habe. Aber gerade in
diesem Bereich (wenig Beinchen, wenig Speicher) sind die AVR's doch
vorteilhafter, auch wenn man etwas umdenken muss.
mfG ingo
> Ketzer sagen, der wirkliche Nachteil eines 8x51 sind seine komplexen> Adressierungsmöglichkeiten.
Komplex? Huestel...was ist denn daran komplex?
Also ich wuerde auch lieber einen MCS51 in Assembler programmieren als
einen AVR. Aber noch lieber wuerde ich einen Z80 in Assembler
programmieren und am liebsten einen 68k.
Aber am aller allerliebsten programmiere ich garnicht mehr in Assembler
sondern in C, und das wollte der OP ja auch so halten!
BTW: Am meisten hassen wuerde ich Assemblerprogrammierung auf einem SH2
weil die Befehle dort zumindest vom Compiler alle umsortiert werden und
gelegentlich auch schonmal ein NOP eingefuegt wird wenn es nicht anders
geht weil der Prozessor sonst wohl keine zwei Befehle gleichzeitig
ausfuehren koennte. Wenn ich mir vorstelle das man das selber erledigen
sollte, das waer doch wirklich zum abgewohnen.
Olaf