mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR <--> 89C52


Autor: Axel (ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
was sind eigentlich die Unterschiede zwischen AVR- und 89C52- 
Kontrollern?

Ich kenne bissher nur AVR.
Ein 89C52 ist aber mit bis zu 33 MHz und viel mehr Anschlüssen (als mein 
4433) dazu noch billiger. Woran liegt das?

jo
Axel

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
33MHz? Laut Datenblatt geht der bis 24MHz. Aber egal, selbst wenn es 
eine 33er Version gibt gibt es schon ein paar Unterschiede.
Laß mich den 89C52 mal mit einem AT90S8515 vergleichen, das dürfte eher 
hinkommen als der 4433. Der 8515 erreicht bei 8MHz auch 8 MIPS, da er 
bei jedem Takt einen Befehl ausführen kann (bis auf ein paar Ausnahmen, 
die 2-4 brauchen). Der 89C52 erreicht bei 24 MHz bestenfalls 6 MIPS, da 
ein Befehl mindestens 4 Takte für die Ausführung braucht. Aber bei 
Taktfrequenzen, die jenseits von 20MHz sind, wird es für den 
Hobbybastler immer schwieriger, die zu beherrschen.
Der 89C52 braucht im Idel Mode mehr Strom (6,5mA) als der AVR im Betrieb 
(3mA). Bei Vollast genehmigt sich der 89C52 sogar 25mA.
Der Prozessorkern des 89C52 ist schon über 20 Jahre alt, er wurde 
lediglich dahingehend verbessert, das die Befehle schneller ausgeführt 
werden.
Und noch ein Vergleich der wichtigsten Funktionen:

8515:
8k Flash
512 Byte RAM
512 Byte EEPROM
2 Timer
UART
Watchdog
Analog Comparator
SPI Interface

89C52:
8k Flash
256 Byte RAM
3 Timer
UART

Wenn man sich jetzt noch anschaut, das der 89C52 einer der größeren 
dieser Familie ist, bei den AVR aber noch wesentlich größere verfügrbar 
sind (Mega128: 128kB Programmspeicher und bis zu 64kB Datenspeicher) 
sollte man vielleicht schon überlegen, ob man nicht in die Zukunft 
investieren solle, auch wenn der 8515 erstmal etwas teurer ist. Denn 
wenn man sich erstmal für einen Controller entschieden hat und dieser 
dann nicht mehr ausreicht muß man wesentlich mehr an Geld und Zeit 
investieren, um auf den neuen umzusteigen.

Naja, war vielleicht jetzt etwas zu philosophisch, aber so denke ich 
nunmal darüber.

Gruß
Markus

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, ganz nebenbei: mir ist beim Studium der Datenblätter gerade 
aufgefallen, das 89C52 und 8515 praktisch pinkompatibel sind. Es gibt 
wahrscheinlich nur ein paar Probleme mit externem Speicher, da sich das 
Speicherinterface der beiden geringfügig voneinander unterscheidet

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das mit den Frequenzen ist garnicht so schlimm.
Bei meinem HC08 wird der Takt auch intern geteilt.
Deshalb wird bei den Teilen auch nur von der Busfrequenz geredet. 
Jedenfalls gehen die 32 MHz nur vom Oszillator in die MCU. Das ist 
relativ unkritisch, wenn man das Signal nicht 3 mal über die Platine 
schleift sondern kurz hält. Der rest läuft alles mit wesentlich 
geringeren Frequenzen. Ich weiß jetzt nicht wie das beim 89C52 ist aber 
den HC08 kann man auch mit nem 32 kHz quarz betreiben und die Interne 
PLL sorgt dann für die hohen Frequenzen. Ist aber eiegntlich einfacher 
ein Hochfrequentes Signal zu verlegen als den Oszillator sauber 
aufzubauen.

Eckard

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Axel,

für den 8051 wird sehr oft ein 11,0592MHz Quarz verwendet, das ergibt 
etwa 0,9MIPS und ist fast immer ausreichend.

Die 8051 sind billiger, weil es so viele andere Hersteller (mindestens 
10) gibt, dadurch sind auch Lieferengpässe nicht so kritisch wie beim 
AVR.

Der kleinste 8051 ist von Cygnal (3*3mm²), also nicht zu heftig 
einatmen, wenn der auf dem Tisch liegt :-)

Die größten 8051 mit internem Speicher haben 96KB bzw. bis zu 4MB extern 
anschließbar.

Die schnellsten 8051 haben bis zu 50MIPS bei 50MHz (100MIPS sind 
angekündigt).

An Peripherie gibt z.B. neben ADC, I2C usw. auch CAN, MP3, 
Ethernet(angekündigt) on Board.


Der größte Vorteil des 8051 gegenüber dem AVR ist aber der, daß 
mindestens 2, oft aber 4 verschiedene Interruptprioritäten unterstützt 
werden.
Gerade bei komplexeren Programmen ist das entscheidend.
Der 8051 kann dadurch wesentlich schneller auf Interrupts reagieren als 
der AVR auch wenn gerade noch andere Interrupts behandelt werden.


Der 8051 ist auch Weltmeister im Speicherverbrauch, d.h. ein C-Programm 
auf dem 8051 braucht nur unwesentlich mehr Programmspeicher als in 
Assembler.
Beim AVR ist der Unterschied wesentlich größer.
Ein 8051-Programm mit 64kB würde auf einem AVR etwa 80kB 
Speicherverbrauch entsprechen.

Beim Neuanfang, würde ich 8051 mit UART-Bootloader empfehlen (z.B. 
T89C51RD2, P89C668). Das ist wesentlich zuverlässiger, als das 
Programmieren des AVR über die parallele Schnittstelle und geht auch 
unter Linux.


Peter

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Peter,
also es mag ja schnellere und größere 8051 Clone geben, aber die sind 
doch für Hobbyelektoniker kaum zu bekommen, zu bezahlen und zu 
handhaben.
Das mit den IRQ's mag zwar stimmen, aber ich sehe das nicht ganz so 
kritisch.
Und das mit dem Speicher glaub ich nun gar nicht, es sein denn Deine 
Zahlen stammen vom AVR GCC. Da mag das sein. Aber vergleiche mal 
Compiler von professionellen Herstellern. Da schneidet der AVR deutlich 
besser ab. Schließlich ist der Core der AVR für Hochsprachen entwickelt 
worden. Durch die 32 Arbeitsregister (gegenüber 3 beim 8051) hat man 
sowohl Performance als auch Speichervorteile.
Wenn ich die Wahl hätte zwischen einem 16Mips AVR und einem 24Mips 8051 
wüsste ich, was ich nehme.

Aber ich glaube, wir sollten diese Diskussion hier mal beenden. Die sind 
eh fruchtlos weil jeder seine Favoriten hat. Ein objekiver Vergleich ist 
sowieso schwer, da es vom Anwendungsfall und vom Geldbeutel abhängt.

Gruß
Markus

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich die Wahl hätte zwischen einem 16Mips AVR und einem 24Mips 8051 wüsste 
ich, was ich nehme.
Ja klar, weil du nur die eine Seite kennst. Beide haben ihre 
Vorteile/Nachteile, aber das wurde ja schon diskutiert. Jeder soll 
selbst entscheiden. 8051 gibts auch in 15 Jahren noch. AVR auch?

Schmittchen.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

einen Vorteil, den der 8051 gegenüber dem AVR hat:

der 8051 kann Programme aus dem externen Speicher ausführen !

Dadurch braucht man keinen ICE ...

( Ich spreche hier vom 80C154, mit dem ich mich in der Vergangenheit 
viel beschäftigt habe. Ich bin auf die AVR`s umgestiegen, da sie 
eindeutig besser sind !)


Gruß
Matthias

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus,

also da muß ich Doch widersprechen:

Die T89C51RD2 (3,3MIPS) sind gut zu bekommen und preiswert, sowie 
DS80C320 usw.. Den Cygnal gibt es zumindest als komplettes 
Entwicklungsboard (99,-$), aber ich mach nicht gerne was mit SMD.


Das mit den Interrupts ist wirklich der Hauptnachteil, warum ich den AVR 
nur für kleine Projekte einsetzen kann.
Bei komplexeren Anwendungen hat man eben immer Interrupts, die 
sauschnell sein müssen, aber nur kurz sind, sowie andere, die zwar nicht 
oft zu bedienen sind, aber ne Menge machen müssen. Und wenn dann ein 
Interrupt den anderen z.B. für riesige 1ms blockiert, wäre das der 
Todesstoß für fast alle meiner Anwendungen.


Beim Speichervergleich würde ich mich riesig freuen, wenn mir endlich 
einer das Gegenteil anhand einer praktischen Anwendung (nicht Sieb des 
Eratosthenes) aufzeigen könnte.
Der 8051 hat auch nicht 3 sondern 32 Register unterteilt in 4 Bänke.
Der 8051 punktet vor allem deshalb, weil man viele Operatione direkt in 
den unteren 128 Byte RAM ausführen kann und auch direkt im I/O-Space.
Deshalb sind solche praxisnahen Sachen, wie Ansteuern von LEDs, 
Displays, Relais, Abfrage von Schaltern, Software-UART, SPI, I2C, 
1-Wire, DCF-77 usw. wesentlich effizienter als beim AVR.

Ich hab z.B. schon mehrere Projekte mit dem AT90S2313 (2kB) angefangen 
und dann auf dem AT89C2051 (auch nur 2kB) fortsetzen müssen, weil 
einfach der Flash zu Ende war. Und siehe da, ich konnte die Programme 
fertigschreiben ohne das ich den AT89C4051 (4kB) nehmen mußte. Und der 
neue ATtiny26 hat ja wieder nur mickrige 2kB.

Hier hab ich mal was dazu geschrieben:

http://www.specs.de/~danni/compars/


Peter

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, was sagt und das? beim 8051 braucht man einen optimierten 33MHz Core 
um einen 8MHz AVR zu toppen. Ich blick zwar noch nicht ganz durch das 
Programm, aber ich bin sicher, das läßt sich noch optimieren.
Sorry, aber mit sowas bin ich nicht zu überzeugen. Mit 33MHz hat man 
einfach zuviele EMV Probleme und der Controller braucht Unmengen Strom.
Leider bockt die Maxim Seite derzeit und ich kann keinen Blick in das 
Datenblatt werfen.

Gruß
Markus

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie bereits oben beschrieben halten sich die EMV Probleme in Grenzen. 
Was den rest der Geschwindigkeit angeht sollte man die Interne Taktung 
als Grundlage nehmen. Der AVR teilt halt intern nicht mehr. Wichtig ist 
die Länge eines Maschinenzyklusses. Ansonsten habe ich mir mal die 
Datenblätter von so einem AVR angesehen. Die 8 Mips halte ich für ein 
gerücht. Es gibt genügent Befehle die mehrere Zyklen zur Verarbeitung 
brauchen. Bei Normalanwendungen halte ich da 5-6 Mips für realistisch.

Eckhard

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte eigentlich damit sagen, der AVR braucht mehr 
Programmspeicher.

Der Zeitvergleich ist nicht mehr aktuell, der DS80C320 ist ja älter als 
die AVRs.

Wie gesagt, ich arbeite meistens bei 0,9MIPS.
Aber wenn Du unbedingt 8MIPS brauchst, nimm doch einen 8051 von Cygnal 
am 8MHZ Quarz, die 50MHz sind ja nur der Maximalwert. Z.B. C8051F236

 Das die Cygnals max 50MIPS bei 50MHz können, heißt doch nicht, daß ich 
sie deshalb auch einsetzen muß.


Peter

Autor: Jens Gerdes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe die Diskussion interessiert verfolgt. Ich habe beruflich schon 
sehr viel mit den 8051 gemacht. Jetzt muss ich ein mittleres Projekt mit 
dem Mega16 machen (mit JTAGICE). Das erste, was mir negativ auffiel, ist 
das Fehlen von Interruptprioritäten. Man kann sich aber quasi zwei 
Ebenen schaffen, indem man in der niedrig priorisierten ISR sofort den 
globalen Interrupt wieder freigibt, in der hoch priorisierten aber 
nicht. Was mir aufgefallen ist: Es gibt für die AVR kein 
Entwicklungstool, das es annähernd mit der Keil Toolchain aufnehmen 
kann, auch nicht von IAR.
Ansonsten: Wer die 8051 für veraltet oder zu langsam hält, der soll sich 
für 99$ das Development Kit für den 8051F005 von Cygnal besorgen. Der 
Preis ist sensationell, da ein JTAGICE enthalten ist. Ich habe zwei 
Projekte mit dem Prozessor gemacht und bin begeistert. Der Nachteil ist 
der hohe Prozessorpreis bei kleinen Stückzahlen, so dass er für 
Hobbyzwecke leider ausscheidet.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: Ich hab deinen Vergleich mal mit AVR-GCC (ältere Version) 
kompiliert. Programmgröße mit ingelinetem PRG_RDB 78 Bytes (sonst 74), 
ungefähr 620 Cycles (ohne main()-Geraffel).
Kompiliert mit
avr-gcc -c -Os -save-temps main.c

Dass der Code bei einem Risc-Prozessor wie dem AVR größer ist als beim 
8051, war natürlich vorherzusehen. Aber dass AVR-GCC im Vergleich zum 
Keil nur 40% mehr Code produziert und SDCC sogar überrundet hat mich 
doch etwas überrascht.

Interessant wäre jetzt noch ein Vergleich mit Codevision.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Andreas,

vielen Dank für das Beispiel.

Werde es mir mal in Ruhe ansehen.

War wohl auch nicht so schwierig von 8051-C auf AVR-C zu portieren.

Ich finde ja auch nichts Schlimmes daran, daß RISC nun mal mehr 
Codespeicher braucht.
Kann man doch ruhig zugeben und dann einfach dem AT90S2313 eben 8kB 
spendieren, damit er mit dem AT89C4051 mithalten kann.

Und die ganze Sache wäre gegessen.


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch mein Senf. Den 8051 habe ich viele Jahre verwendet, heute 
setze ich ihn garnicht mehr ein: ein AVR bietet einfach mehr.
Die Prioritätsebenen beim 8051 als so großen Vorteil zu sehen, kann ich 
nicht nachvollziehen. Wenn es schnell gehen muß, ist sowieso 
Programmierung in Assembler angesagt. Und dann ist ein AVR mit der 
Interruptroutine schon fertig, wenn der 8051 den Int noch garnicht 
registriert hat. Der provokanten Aussage, daß ein 1ms Interrupt eine 
Anwendung verhindert, kann man in gleicher Weise entgegenhalten: der 
Int, der beim 8051 1ms dauert, dauert beim AVR 0,1ms; ferner wird man 
bei einem 'Trödel-Interrupt' nach Sichern des SREG, den globalen Int 
sofort wieder freigeben, damit 'wichtige' Routinen Vortritt haben. Aber 
das ist ja auch den 8051-Verfechtern bekannt.

Es ist klar, daß man mit diversen C-Compilern für AVRs schlechte 
Erfahrungen machen kann. Z.B. ICC-AVR:
void warten(){long n=50000;while(--n);}
Diese Routine verplempert ca. 100 Byte Code und wartet richtig lange. 
Bei anderen Compilern darf man z.B. keine Switch-Anweisung verwenden, 
wenn man auf Codegröße und RAM achten muß. Andere PUSHen (ich schreib's 
'mal besser so) bei jedem Int grundlos alle Register. Andere verwenden 
dafür noch Subroutinen: grauenhaft!
Man muß bei der Programmierung eben doch auf den verwendeten Compiler 
Rücksicht nehmen.

Es schadet nicht, den 8051 zu kennen; aber vom AVR auf einen 8051 zu 
Wechseln, kann ich niemand empfehlen.

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe auch schon beide Controller programmiert, und setze auch beide 
noch ein.
Für kleinere Anwendungen den 2313, wenns A/D braucht, dann den 4433. Bei 
größeren Anwendungen greife ich aber gern auf den 80535 zurück - ist ein 
"großer" 8051.
Ich habe am 80535 ein kleines 8K-Boot-Rom mit einem Monitor am Laufen, 
dadurch wird die Programm-Entwicklung zum Kinderspiel, weil man die 
Programme einfach im RAM ausführt. Außerdem kann ich mit Hilfe des 
Monitors einzelne Port-Bits auch mal von Hand modifizieren, um die 
Reaktionen der externen Schaltung zu sehen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael

"...nach Sichern des SREG, den globalen Int sofort wieder freigeben..."

Das ist doch Mumpitz !

Du must GIMSK, TIMSK, USR usw. sichern, dann alle niedrig priorisierten 
Interrupts sperren und dann erst den globalen Int wieder freigeben. Und 
am Ende das Ganze wieder rückwärts.

Da das ne Menge Code werden kann, lohnt es sich durchaus, diese beiden 
Funktionen als Unterprogramme zu schreiben. Sie müssen ja in jedem 
niedrig priorisierten Interrupt gemacht werden.

Z.B. wenn Du für eine schnelle Software-UART INT0 und T0 am höchsten 
priorisieren must.

Es bleibt aber jedem selbst überlassen, ob er sich damit belasten will 
oder das bequem der Hardware eines 8051 überläßt.


"...Wenn es schnell gehen muß, ist sowieso Programmierung in Assembler 
angesagt...."

Gilt nicht für den Keil 8051 C-Compiler, der macht auch Interrupts 
äußerst effizient. Da brauch ich dann gar nicht erst Assembler und C zu 
mixen.

Auch switch() Anweisungen setze ich gerne ein und kann nicht sagen, daß 
da viel Overhead entsteht.


"...aber vom AVR auf einen 8051 zu Wechseln, kann ich niemand 
empfehlen...."

Ich schon, besonders, wenn man wie ich, viel mit dem CAN-Bus macht (z.B. 
T89C51CC01 mit internem CAN).
Man hat einfach die größere Auswahl an On-Board-Peripherie, z.B. auch 
8-Kanal 24Bit-ADC (Gain 1..128), 16Bit-PWM beim MSC1210.


Peter

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Die globale Aussage nach dem Sichern des SREG die globalen Interrupts 
beim AVR wieder freizugegen ist mit Sicherheit Mumpitz. Das ich aber in 
jedem Fall die Interrupt Flag bzw. Mask-Register sichern muss trifft 
aber auch genau so wenig zu. Es kommt immer auf die jeweilige Anwendung 
an.

Jede Prozessor-Familie sei es nun AVR, 8051 und Derivate, MPS430, M16C 
um nur einige zu nennen, hat ihre Vor- und Nachteile. Beim 8051 ist es 
ein entscheidender Vorteil, daß es zumindest bei den Standard-Type 
mehrere Hersteller gibt und somit durch Wettbewerb dieser auch bei 
kleinen Stückzahlen sehr preiswert ist. Für den 8051 ist die Keil 
Entwicklungsumgebung wohl eine der leistungsfähigsten für 
Mikrocontroller, allerdings der Preis dürfte wohl jeden Hobby-Etat 
sprengen. Den "optimalen" Mikrocontroller für alle Anwendungen gibt es 
mit Sicherheit nicht. Egal welche Familie man wählt, irgend eine 
Schwäche oder "Macke" hat jeder. Beim AVR sehe ich den Vorteil, daß 
recht brauchbare Entwicklungstools kostenlos und preiswerte Starterkits 
verfügbar sind.
Bedingt durch sein Architektur verfügt dieser über ein recht 
übersichtliches Timing. Bei Bit-Operationen  ist der 8051 allerdings 
wieder im Vorteil. Daher mein Resümee: es gibt nicht "den 
Mikrocontroller".

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

so langsam bekomme ich aber trotzdem den Eindruck, das es sich bei AVR 
um eine Sekte handelt.


Eckhard

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: Wenn ich den globalen Interrupt freigebe, geht es mir nicht 
darum, andere Interrupts zu sperren. Nachher soll ich auch noch die 
Timer sichern ? nee.
Von Keil habe ich von 2.12 - 5.0 die Versionen durch. In 8051-Projekten 
finde ich immer wieder .A51-Quellen, die ich schreiben mußte, weil in C 
eben doch nicht alles so gut war. Wenn es heute diverse Derivate vom 
8051 gibt, so findet man sicher schöne Peripherie, aber es gibt keinen 
Typ der alle Vorzüge gleichzeitig hat; folglich muß man summa summarum 
wieder Abstriche machen. Einen 24bit-ADC mit Gain128 auf einen 
Controller ist m.E. Augenwischerei! 24 Kanäle mit 8bit bringen 
wahrscheinlich genausoviel. Genug gestänkert.

Auf Anregung von Jens (s.o.) habe ich mich bei Cygnal umgesehen. Die 
Daten der Chips sind zunächst beeindruckend, und für spezielle 
Anwendungen sind die Teile optimal. Andererseits zeigt sich aber auch, 
das die Architektur des Kerns veraltet ist. Jedes Rechnen - und ist es 
noch so schnell erledigt - muß über einen einzigen Accu laufen ! Der 
Stackpointer, wenn ich es richtig überschlagen habe, ist immer noch 8bit 
breit. Der Programmspeicher (128kB beim xx124) wird in Segmenten 
angesprochen. Irgendwie erinnert mich das an einen 8086, der noch im P4 
steckt.
Bei den 'erhaschten' Preisen muß man z.B. den C8051F124 mit 16/32bit 
Controllern vergleichen, die vielleicht 'nur' 20Mips machen, wo ein 
ADD.L R1,R2 auch nur einen Takt braucht, die 8051er aber viele, viele 
Takte mehr. Beim Mips-Vergleich - und auch bei der Codegröße - muß man 
beachten, was in einem Takt passiert.

Die 8051-Familie ist über 20 Jahre alt, die AVRs sind wesenlich jünger. 
Vielleicht gibt es übermorgen einen AVR, der mit 100MHz rennt ?
Letzlich soll jeder den Chip einsetzen, wo Leistung, Preis und 
Stromverbrauch (in dieser Reihenfolge) stimmen. Bei mir ist da kein 8051 
mehr aufgetaucht.

Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mikki,

"...es gibt nicht "den Mikrocontroller"..."

Dem stimme ich voll zu.

Ich setze auch den AVR ein für die kleinen Sachen, z.B. den ATtiny15L.
Und für die dicken Brocken (TCP/IP, Devicenet usw.) ist eben der 8051 
mein Arbeitspferd.


@Michael,

wenn Du keine anderen Interrupts sperrst, hast Du doch wieder das 
gleiche Dilemma, jeder auch niedrig priorisierte Interrupt funkt Dir 
dazwischen. Schlimmer noch, der Interrupt kann sich sogar selbst 
unterbrechen -> Chrash Bum Bang.

Der Weg muß prinzipiell so wie beschrieben sein, man kann natürlich je 
nach Fall etwas wegoptimieren.


Den MSC1210 habe ich nur gerade in einem anderen Posting gesehen. Ist 
eine Entwicklung von Burr-Brown und die haben ihren Analogkram 
eigentlich immer gut im Griff gehabt.
Das ist ja auch ein integrierender  ADC, d.h. die HF der CPU wird 
wegintegriert.


Wie gesagt, bei typischen Steuerungsaufgaben ist der I/O-Zugriff am 
häufigsten notwendig. Gerechnet wird eher selten, d.h. daß das nur der 
ACCU kann, wirkt sich auf die gesamte CPU-Zeit bezogen, absolut minimal 
aus.
Und für die auch oft benötigten switch() Anweisungen gibts ja "CJNE" 
bzw. "JMP @A+DPTR".


Bei den MCU-Auswahlkriterien sehe ich die Reihenfolge etwas anders:

Als erstes kommen die Fertigkeiten, d.h. möglichst schnell möglichst 
optimal und zuverlässig zu programmieren. Und das geht umso besser, je 
besser ich mit einer MCU und deren Entwicklungsumgebung vertraut bin.

Dann kommt der Preis und die Beschaffbarkeit. Der Stromverbrauch aber 
nur da, wo es auch eine Rolle spielt.

Das Alter einer Familie sehe ich jedenfalls nicht als Kriterium an, 
solange sie nicht abgekündigt ist.

Im Gegenteil, wenn sie sogar immer noch ständig weiterentwickelt wird, 
dann muß doch was dran sein, oder ?


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: ich glaube, wir reden genau aneinander vorbei. Wenn ich einen 
Int hoher Priorität bearbeite, lasse ich das Int-Flag gesetzt, sodaß 
global alles gesperrt ist. Nur bei einem Int, der nicht so wichtig ist, 
gebe ich alles wieder frei. Daß ein Int durch eine neue Anforderung 
ausgelöst wird, bevor er beendet ist, läßt sich ganz einfach durch 
vorübergehendes Löschen des Enable-Flags verhindern. Daß die interne 
Struktur des 8051 besser sein könnte, da wirst Du mir doch nicht 
widersprechen ? Jetzt ist aber Schluß.

Michael

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael
In einem Punkt muss ich Peter recht geben, wenn es darum geht 
konkurrierende Interrupt korrekt zu bearbeiten ist beim AVR schon etwas 
Überlegung angesagt. Eine konsequente Nutzung ist nicht unbedingt was 
für Anfänger. Wenn man heute eine neue CPU entwickeln würde, sehe deren 
Struktur mit Sicherheit anders aus als zu Entwurfszeiten eines 8051 oder 
AVR. Damals war ja jede Gatterfunktion noch wesentlich teurer als heute. 
Allerdings haben viele Second-Source Hersteller, darunter auch 
ATMEL/TEMIC eine Menge am doch recht lahmen UR 8051 verbessert.
@Peter
Es gibt mit Sicherheit ganz tolle 8051 Derivate die sehr schnell sind 
und auch über sehr leistungsfähige zusätzliche Peripherie verfügen, aber 
hier kriege ich oftmals bei den Lieferzeiten für eine Kleinserie 
Bauchschmerzen, denn die ist teilweise noch wesentlich schlechter als 
bei Atmel. Auch finde ich solche Aussagen wie von z.B. von Cygnal von 50 
bzw. Mips reichlich übertrieben. Welches Flash oder SRAM verkraftet 
Zykluszeiten von 10 bzw. 20 ns. Hier sollte man doch eher die Zeiten 
berücksichtigen, mit denen sich reale Systeme problemlos realisieren 
lassen.

Autor: leenders (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@thkaiser
Ich habe am 80535 ein kleines 8K-Boot-Rom mit einem Monitor am Laufen,
dadurch wird die Programm-Entwicklung zum Kinderspiel, weil man die
Programme einfach im RAM ausführt. Außerdem kann ich mit Hilfe des
Monitors einzelne Port-Bits auch mal von Hand modifizieren, um die
Reaktionen der externen Schaltung zu sehen.

Ich habe jemanden der sich für so ein Programm interessiert
könntest Du das einstellen ?

Paul

Autor: terminate (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur falls da noch mal jemand reinschaut nach so vielen Jahren, (wie ich 
z.B. gerade), der Vollständigkeit halber ...

89C52 und Kompatible wirds wahrscheinlich auch noch in 10 Jahren geben, 
da sie in Millionen von Geräten verbaut sind.

Was die Taktfrequenz angeht, die meisten 89C52 haben einen Teiler von 
12, (ein paar Modelle auch 6), d.h. jeder Maschinenbefehl braucht zur 
Ausführung immer 12 , (manche Befehle auch 24), Oszillatortakte.

Also wenn ein 89C52 mit 24 MHz getaktet wird bringt er maximal eine 
Leistung von 24000000/12 = 2000000 Millionen Befehlen pro Sekunde, 
(=2MIPS).
Ein mit der gleichen Frequenz getakteter aktueller AVR-RISC Prozessor 
würde stattdessen eine Leistung von 24000000 Millionen Befehlen pro 
Sekunde, (=24MIPS), bringen.

Also 12 zu 1 für den AVR-Mikrocontroller allein was die Geschwindigkeit 
angeht!
Zudem verfügen die meisten AVR im Gegensatz, zu den 89C52 Controllern, 
(es gibt ein paar Ausnahmen), über eingebaute AD-Wandler, 
PWM-Generatoren und mehr internes RAM.

Tja da lässt sich nicht viel dran rütteln aber die 8051-Kompatiblen 
gehören zu den rüstigen Rentnern! Was natürlich nicht heißt, dass man 
nicht jeden Tag mit der Situation konfrontiert werden könnte, sich mit 
so einem Teil beschäftigen zu müssen. Aber keine Sorge das macht auch 
Spaß!
Also am besten gleich mal den alten, defekten VHS-Rekorder aus den 90ern 
zerlegen, da ist bestimmt einer drin und mit einem externen EPROM oder 
RAM lässt er sich wieder zum Leben erwecken!

Autor: terminate (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das muss natürlich anstatt Millionen:

2000000 Befehle pro Sekunde =(2MIPS)

und

24000000 Befehle pro Sekunde =(24MIPS)

heißen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.