Forum: Mikrocontroller und Digitale Elektronik 8051 Certified Embedded C - Seminar


von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hier der Link ist über die Eigenheiten des 8051.
Z.B  Schreibweise für: const int* const X
XDATA I-Data , halt das alte Intel-Derivat 8051.
######################################################
Fazit:
Da muss man den Compiler genau kennen.
Das Funktion Pointer -Konzept.
Keil Compiler 8051, Zilog 8051 ...

Embedded C - Seminar
Link:
https://www.youtube.com/watch?v=IJH4OhumN_U
Da ich ein USB Interface von SILABS habe.
Muss ich darüber informiert sein.
Evtl. hat jemand auch Interesse an 8051 MCU Systems.
Besonders die von SILABS mit USB Interface.
----------------------------------------------------

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hallo Forum:
Das Derivat C8051F32 ist der Ansatz für mein Project.
Die MCU C8051F32 Silabs ...

Link: Photo
Beitrag "ISL21400, Programmable Temperature Slope Voltage"
Frage: Hat einer Infos zu der Compiler Tool-Chain für diesen Chip
von SILABS. Oder setzt den gar sebst in einem Project ein.

Die USB JUNGO Treiber sind auch dafür nötig.

(Ähnlich der FTDI Treiber).

Ich finde kein Layer-Modell dazu.
Die Silab Homepage ist nicht so hilfreich für mich.
Frage: Hat einer einen Link dazu.

Ich würde mich über Tips freuen.

Gruss Holger.

von Viktor N. (Gast)


Lesenswert?

Den 8051 haben wir schon vor 10 Jahren drei mal erschossen und tief 
eingebuddelt. Nun soll er mit einem USB Rollator neu aufstehen... will 
man sich das antun? Scheint so. Und Gurgel hat nichts gebracht? Kaum zu 
glauben. Dann scheint der Aufwand hoch zu werden... Um welche Stueckzahl 
geht es denn?

von Ralf (Gast)


Lesenswert?

> Hat einer Infos zu der Compiler Tool-Chain für diesen Chip von SILABS.
SiLabs arbeitet in der Regel, was die C8051F-Familie angeht sehr stark 
mit der Fa.Keil zusammen und verwendet deren C51-Compiler.

Ralf

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

@Ralf, @Victor Danke super, die Keil Tools ist der Hint_#1:
Hier ist das erste Manifest.
Link:
http://www.silabs.com/products/mcu/Pages/USBXpress.aspx
--------------------------------------------------------
Frage: 1) Was ist USBExpress für ein Software-Teil dabei.
##########################################################
@Victor die wollen erst mal sehen ob unsere Firma als
second Source son Silabs USB Derivat handeln kann.
Es geht denen um ein Ref-Design.
Wie halt immer muss man erst was als Ref-Design haben und warten können.
########################################################################


Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ein Bild:
C8051F-Familie 51F3x
-------------------------------------
Derivat C8051F32

#####################################
Bild: Adapter für I2-C-Bus

Gruss Holger.

von Peter D. (peda)


Lesenswert?

Viktor N. schrieb:
> Den 8051 haben wir schon vor 10 Jahren drei mal erschossen und tief
> eingebuddelt.

Stimmt, eine Blink-LED ohne 32Bit sieht einfach scheußlich aus.

Ich finde den 8051 für Steuerungen ideal. Die Bit-Funktionen sind das 
effizienteste, was ich bisher gesehen habe. Man kann Logikgleichungen in 
Assembler direkt hinschreiben.
Und die 128 Byte DATA sind quasi 128 Register.
Erst wenn massenhaft XDATA benötigt wird, sind andere MCs besser.

Ich finds schon traurig, daß alles unter 32Bit nur noch verachtet wird, 
ohne jede Rücksicht auf die zu lösende (popel einfache) Aufgabe.

Bald wird keiner mehr bügeln können, wenn das Bügeleisen keinen 
Web-Server hat. Und ob der Mülleimer voll ist, wird ohne Webcam auch 
keiner mehr feststellen können.

von Ralf (Gast)


Lesenswert?

> Den 8051 haben wir schon vor 10 Jahren drei mal erschossen und tief
> eingebuddelt.
Dazu möchte ich mal anmerken dass ich ne Relaissteuerung mit 
DCF77-Empfänger inkl. Wochentagberechnung und Countdown- sowie 
Tagesprofil mit Ein-/Ausschaltzeiten, Display mit kompletter Menüführung 
und der Ausgabe einer Melodie im Countdown-Betrieb bei abgelaufener Zeit 
auf einem Standard-8051 implementiert habe - nahezu komplett in C. Nix 
mit kilobyteweise RAM, etc.
Sicher, ist kein allzu großes Projekt gewesen, aber es ist mit 256 Bytes 
RAM, von denen ein paar Bytes schon für Registerbänke und Stack 
draufgehen durchaus machbar...

>  Nun soll er mit einem USB Rollator neu aufstehen...
Glaub mir, der "Opa" überholt den "Flitzer", wenn du nicht gescheit 
programmieren kannst und/oder die Architektur nicht detailliert kennst.

Ralf

von Fitzebutze (Gast)


Lesenswert?

Tach,

der 8051 wird auch in 10 Jahre noch nicht tot sein. Für einige Dinge ist 
er einfach ideal, und es gibt Unmengen von Clones.
Wir programmieren so einige 8051-Derivate allerdings mit SDCC, der 
Keil-Kram ist einfach in manchen Dingen sehr unflexibel.
Ein schickes OpenSource-Projekt für die 8051 aus den China-Fotorähmchen, 
welches überdies die ganzen ROM images per Python zusammenlinkt findet 
man hier: http://sourceforge.net/projects/dpf-ax/

Da kann man sich auch für die Silab-USB-Dinger einiges abgucken. Den 
ganzen USB-Kram haben wir von Hand implementiert, ohne Jungo-Quatsch und 
zig unnötige Layer.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Fitzebutze schrieb:
> Da kann man sich auch für die Silab-USB-Dinger einiges abgucken. Den
>
> ganzen USB-Kram haben wir von Hand implementiert, ohne Jungo-Quatsch und
>
> zig unnötige Layer.

Ja das sehe ich auch so, mit dem Infineon 51 Core ist im Jahr 2009
noch was als "neues" Design aufgelegt worden.

Der 8051 ist halt wie ne Schraube, aber ne SPAX-SCHRAUBE für die
8051 Industrie.
Der Anwender muss die Syntax-Schreibweise, wie in dem Seminar oben
beschrieben können & genau auf die Constraints verwenden.
Sonst ......
Dan ist der schnell wie Hölle.
So einfach ist das 8051 Rad gestrickt. (INTEL halt)
Fazit:
Deswegen habe ich mich mal da eingelesen, damit ich die Spax-Schraube
genau kenne.
Ich hoffe das ich die short ADDR IRQ  variablen mit dem Bank-Switch
peile.
Da wird mir immer so mulmig bei. Atomarer IRQ C BANK ???

Erst mal "Danke" an alle für die Insider Infos.
###################################################################
SPAX geht durch alles.. Blech, Holz, ...
Ein Erprobtes Beispiel ist für mich besser, als jede obfuscate Doku.
###################################################################

Gruss Holger.

von Wilhelm F. (Gast)


Lesenswert?

Peter Dannegger schrieb:

> Ich finde den 8051 für Steuerungen ideal. Die Bit-Funktionen sind das
> effizienteste, was ich bisher gesehen habe. Man kann Logikgleichungen in
> Assembler direkt hinschreiben.

Der 8051 wurde schon vor 20 Jahren von Maulhelden gerne gestorben, und 
er lebt immer noch. Gäbe es nicht noch den ersten 8-bit-µC der Welt, den 
spartanischen Vorläufer des 8051, den 8048, und der wird sogar heute in 
Massenanwendungen immer noch gerne verwendet, dann wäre der 8051 der am 
längsten bisher lebende.

Ich verwende ihn auch seeeeeehr gerne. Der hat doch eine richtige 
Erfolgsgeschichte. Das hat Intel wirklich sehr gut gemacht.

von Bernd N. (Gast)


Lesenswert?

Klingt wie ein schweres traumatisches Erlebnis :-) der König ist tot, es 
lebe der König.

Auweia, man nehme den Controller welcher zur Aufgabenstellung passt und 
gut ist. Das Design den 8051 war genial und bleibt es sicherlich auch. 
Am Ende entscheidet der Preis und der Aufwand. Für ne USB Anwendung, wie 
hier dargestellt, reicht ein 8051 von Silabs locker aber ich würde in 
der Tat keinen 8 BIT Controller für ne Ethernet Anwendung verwenden. Da 
gibt es in der Tat heute bessere Controller.

Ich hol mal Popcorn :-)

von Wilhelm F. (Gast)


Lesenswert?

Bernd N. schrieb:

> Auweia, man nehme den Controller welcher zur Aufgabenstellung passt und
> gut ist. Das Design den 8051 war genial und bleibt es sicherlich auch.

So ist es. Für viele Zwecke reichte sogar ein 4-bit-Controller, der nur 
mit bspw. 100 kHz oder weniger getaktet ist.

Aktuell kenne ich keinen 4-Bitter, aber es gab sie, und sie hatten noch 
einen hohen Marktanteil. Die ersten Taschenrechner ca. 1972 hatten so 
was.

LED blinken mit sowas: Lieber als mit einem ARM.

Aktuell heute Ostermontag bei mir Basteltag: PWM mit dem C515, auch ein 
8051-Derivat:

Beitrag "Re: PWM - Breite von 0"

von Peter D. (peda)


Lesenswert?

Holger Harten schrieb:
> Ich hoffe das ich die short ADDR IRQ  variablen mit dem Bank-Switch
> peile.

Das muß man auch nicht peilen, bis 64kB ist der 8051 linear adressiert.
Und wenn man mehr als 64kB Code benötigt, hat der 8051 keine Vorteile 
mehr.

Meine Projekte sind typisch <8kB, das größte 40kB. Banking habe ich 
daher nie gebraucht.

Nur Anfänger stellen den Compiler immer auf Large und Banking ein. Das 
ist quasi den Preßlufthammer nehmen, um auf der Platine die Löcher zu 
bohren.

von Wilhelm F. (Gast)


Lesenswert?

Peter Dannegger schrieb:

> Meine Projekte sind typisch <8kB, das größte 40kB. Banking habe ich
> daher nie gebraucht.

Keil unterstützt wohl automatisch Code-Banking, und ich sah schon 8051 
mit 1MB ROM.

Keil kostet ja auch etwas Geld, mehr als ein Trinkgeld in der Kneipe. 
Was sie aber machen, ist gut, da darf man etwas erwarten.

Mit anderen Compilern und Assemblern muß man das von Hand machen. Aber 
bis man 100kB Assemblercode hat, gute Nacht zusammen!

> Nur Anfänger stellen den Compiler immer auf Large und Banking ein. Das
> ist quasi den Preßlufthammer nehmen, um auf der Platine die Löcher zu
> bohren.

Aus Bequemlichkeit habe ich Projekte auf dem 80C517A gerade auf Large 
stehen. Der hat auch Vollausbau 64k ROM und RAM. Die Peripherals wie PWM 
laufen ja ohnehin autonom.

Kürzlich hatte ich aber eine Ausnahme, und mußte einen 80515 in 
Assembler programmieren. Der hatte nur 2kB ROM. Da hat man 
Speichermodelle wie Large und Small wiederum gar nicht.

von der_Alte (Gast)


Lesenswert?

Ich finde das neumodische Zeugs auch völlig überzogen. Das wäre ja, als 
wenn man mit Edlin seinen Code schreibt. Ich nehm da "copy con", das 
tuts schon lange und ist bewährt.

NFU ;-)

von Wilhelm F. (Gast)


Lesenswert?

der_Alte schrieb:

> Ich finde das neumodische Zeugs auch völlig überzogen. Das wäre ja, als
> wenn man mit Edlin seinen Code schreibt. Ich nehm da "copy con", das
> tuts schon lange und ist bewährt.

Öff, noch einer aus den frühen 80-ern. ;-)

von der_Alte (Gast)


Lesenswert?

Wilhelm Ferkes schrieb:
> Öff, noch einer aus den frühen 80-ern. ;-)

Jo, aus 8080 und Z80er(Mostek/Zilog) -Zeiten ;-)
Habe früher viel mit 8032 und 8051 gemacht, ist aber schon lange her. 
Waren (und sind immer noch) gute Prozessoren.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

der_Alte schrieb:
> Habe früher viel mit 8032 und 8051 gemacht, ist aber schon lange her.
>
> Waren (und sind immer noch) gute Prozessoren.
Genau ich finde das auch.
Der (PSW) hat das REG-BANKING gemanaged. Reg:R0..R7;
Damit hat der IRQ den Register-Push R0..R7 nicht machen müssen.
 Aber die IRQ C schreibweise kenne ich nicht mehr, und ist auch
bei IARC anders als bei Keil.
Und dann noch bit-Variablen TRUE/FALSE weiss ich auch nich mehr.
Man sollte sowas halt horten.
Aber die ziehen immer um, und weg ist das Spezi-Wissen.
Gruss Holger.

von Ralf (Gast)


Lesenswert?

@Fitzebutze:
> Den ganzen USB-Kram haben wir von Hand implementiert, ohne Jungo-Quatsch
> und zig unnötige Layer.
Hast du dazu mehr Details? Habt ihr die OS-internen Treiber verwendet 
(CDC, etc.)?

Ralf

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Wilhelm Ferkes schrieb:
> Der 8051 wurde schon vor 20 Jahren von Maulhelden gerne gestorben, und
>
> er lebt immer noch. Gäbe es nicht noch den ersten 8-bit-µC der Welt, den
>
> spartanischen Vorläufer des 8051, den 8048, und der wird sogar heute in
>
> Massenanwendungen immer noch gerne verwendet, dann wäre der 8051 der am
>
> längsten bisher lebende.
>
>
>
> Ich verwende ihn auch seeeeeehr gerne. Der hat doch eine richtige
>
> Erfolgsgeschichte. Das hat Intel wirklich sehr gut gemacht.

----------------------------------------
Genau die haben jetz sogar einen Zilog mit Crypto Engine.
Oder als reinovated Watch-Dog-Analog-Frontend.
Die alte 8051 Spax-Schraube von Intel.
Gruss Holger.
Video dazu.
http://www.youtube.com/watch?v=1eYdfVa21dw

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Holger Harten schrieb:
>
>> Ich hoffe das ich die short ADDR IRQ  variablen mit dem Bank-Switch
>
>> peile.
>
>
>
> Das muß man auch nicht peilen, bis 64kB ist der 8051 linear adressiert.
>
> Und wenn man mehr als 64kB Code benötigt, hat der 8051 keine Vorteile
>
> mehr.
Siehe Bild. Mit 4 States-Bits in (PSW). 00,01,10,11;
http://www.mikrocontroller.net/attachment/175002/MC_8051_Bank_s4.PNG
Nee Nee mir geht es nicht um Speicher-Modelle und grösser
64 KByte gedönse bzw. Tiny,Med, Large..
Nee ich meine die 4-Fache Reg-Bank. Siehe die
Spez. REG-Bank via Register Statz R0.. R7
mit Reg.(PSW)  ... Core Architektur 8051

Ich meine die Register-Bank R0,R1,R2...R7.
Die musst du sonst alle in der IRQ Routine Pushen .. bzw danch wieder
Poppen. (kostet also Zeit )
Das braucht man aber nicht zu machen wenn man via (PSW) im IRQ eine
seperate autarke Reg-Bank hat (Arbeits-Register R0..R7).
Bingo_>
Hier kommt noch der Atomic IRQ mir volatile variablen.
Die atomic zum main-Prog sind.
-IRQ
   do IRQ stuff
+IRQ

Embedded Systems Programming Lesson 7: Arrays and Pointer Arithmetic
http://www.youtube.com/watch?v=pQs8vp7JOSk
Stelaris hat zwei Busse geschaffen. (HPB) und (AHB)
--------------------------------------------------------------------
Gruss Holger.

von Peter D. (peda)


Lesenswert?

Holger Harten schrieb:
> Ich meine die Register-Bank R0,R1,R2...R7.
> Die musst du sonst alle in der IRQ Routine Pushen .. bzw danch wieder
> Poppen. (kostet also Zeit )

Ne, das sieht nur in der Theorie gut aus. In der Praxis geht das ganz 
schnell gegen den Baum.
Mit dem Using sagst Du dem Compiler, kümmere Dich nicht um die 
Registersicherung. Wenn Du dann aber Unterfunktionen ohne Using callst 
oder Interrupts anderer Priorität die gleiche Bank benutzten, krachts.
Auch wird vom Compiler immer die ganze Bank reserviert, wenn z.B. nur 2 
Register benötigt werden. Du verlierst also kostbaren DATA-Speicher für 
Variablen.

Als Anfänger fährt man daher am besten, wenn man solche dirty Tricks 
vermeidet und als Profi eigentlich auch. Die Spezialfälle, wo Using 
wirklich was bringt, muß man schon mit der Lupe suchen.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Ne, das sieht nur in der Theorie gut aus. In der Praxis geht das ganz
>
> schnell gegen den Baum.

@Peda
Danke das du dich noch mal gemeldet hast.
Danke das ich das von einem Profi erfahre.

Ich habe mir jetz einen Silabs c8051F330 u ..939 Kit in der Bucht
geholt. Mal sehen ob ich da was machen kann. Keil Demo, aber
ich fange mal damit an. Praxis

10.5.2. Split Mode without Bank Select
Das ist das Banking für Xdata  ... nicht zu verwechsen
mir R0.R1.R2 ... R7  Register Banking.
Link:
http://www.keil.com/dd/docs/datashts/silabs/c8051f93x-92x.pdf
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Wenn Du dann aber Unterfunktionen ohne Using callst
>
> oder Interrupts anderer Priorität die gleiche Bank benutzten, krachts.
>
> Auch wird vom Compiler immer die ganze Bank reserviert, wenn z.B. nur 2
>
> Register benötigt werden. Du verlierst also kostbaren DATA-Speicher für
>
> Variablen.
Ah, OK. Jetzt dämmert es mir wieder nach so langer Zeit.
Ich habe auch noch so einen Source-Code mal auf dem Schreib-Tisch
für Source-Code Analyse ...

Da war der AT9051 .. der Programmierer hatte gekündigt, und das
med. Lungen-Inhalator Teil hatte Ausraster..W-DOG kloppte das wieder 
gerade..
Der Code hatte keien Stack-Call weil das Ram ganz knapp war, ging alles
über globale Variablen bzw Bit.Var , flg ...

Das verstehe ich jetzt, Danke.
Gruss Holger.

von Peter D. (peda)


Lesenswert?

Holger Harten schrieb:
> Der Code hatte keien Stack-Call weil das Ram ganz knapp war, ging alles
> über globale Variablen

Das Verwalten der Variablen ist Sache des Compilers, nicht des 
Programmierers.
Nimm daher lokale Variablen, wenn möglich. Der Compiler kann sie besser 
optimieren und vor allem, er macht dabei keine Fehler.

Die Compilerbauer sind keine Anfänger, die haben Optimierungstricks 
drauf, da klappt Dir die Kinnlade runter.
Laß also den Compiler einfach seine Arbeit machen und konzentriere Dich 
nur auf den Algorithmus, den Du programmieren willst.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Holger Harten schrieb:
> Ich habe auch noch so einen Source-Code mal auf dem Schreib-Tisch
>
> für Source-Code Analyse ...

@Peda
Oh da habe ich mich missverständlich ausgedückt.

Ich meine die Funktions_Parameter einer C Funktion
z.B Regeln_1( int min, int max, struct *ptr  ect.pp );

Der C Source Code den ich bekommen habe(super schräg noch mit
Compiler "option " use # Bank gespickt...)
ist obendrein noch ohne jegliche Funktions-Parameter geschrieben.
Was ich persönlich ich einfach nicht leiden kann.
 Keine Struktur Übergabe-Parameter usw.
 Kein sprechender Code.

(Wie sich in den etlichen Dokus des exProgrammierers fand, ich habe 
alles
in Code mit globalen Variablen gemacht, da der Pram-Stack Ram benötigt )
Und Ram hatte er recht wenig von den 128Byte über.

So versuche ich auch noch die Kaufleute da mit ins Boot zu bekommen,
das wir in ferner Zukunft ein Preis Vergleich Redesign machen dürfen.
Ohne sone App-Killer Konstrukte usw.
Wenn da immer die Vapo-Regelung duchdreht, und die Membrane zerstört,
kostet das ja Ausfallzeit Immageverlust & Geld.
So soll mir meine private Test-Hardware dienen ein 8051 
Certificate-Manifest darüber zu
schreiben.


Besten Dank für die sogar mir einleuchtenden Argumente über diese
spezielle 8051 Architektur.
Gruss Holger.

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.