www.mikrocontroller.net

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

Autor: Axel (ojojo) (Gast)
Datum: 25.11.2002 09:15

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: 25.11.2002 10:53

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: 25.11.2002 10:56

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: 25.11.2002 11:07

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 (Gast)
Datum: 25.11.2002 12:14

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: 25.11.2002 12:37

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: 25.11.2002 13:10

> 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: 25.11.2002 13:39

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 (Gast)
Datum: 25.11.2002 13:45

@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: 25.11.2002 14:21

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: 25.11.2002 15:34

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 (Gast)
Datum: 25.11.2002 15:34

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: 25.11.2002 16:16

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 (Gast)
Datum: 25.11.2002 16:49
Dateianhang: avr.zip (1,6 KB, 18 Downloads)

@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 (Gast)
Datum: 25.11.2002 17:39

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: 25.11.2002 18:22

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: 25.11.2002 19:11

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 (Gast)
Datum: 26.11.2002 09:21

@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: 26.11.2002 10:10

@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: 26.11.2002 10:25

Hi,

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


Eckhard
Autor: Michael (Gast)
Datum: 26.11.2002 10:29

@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 (Gast)
Datum: 26.11.2002 11:08

@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: 26.11.2002 14:13

@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: 26.11.2002 15:08

@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: 29.10.2005 16:05

@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: 29.04.2008 13:43

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: 29.04.2008 13:49

Das muss natürlich anstatt Millionen:

2000000 Befehle pro Sekunde =(2MIPS)

und

24000000 Befehle pro Sekunde =(24MIPS)

heißen.

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net