Microcontroller AVR 8 oder 8051 ?

  • Thread starter Reinhard Tarnick
  • Start date
R

Reinhard Tarnick

Guest
Hallo,

welche von beiden Schaltkreisfamilien ist besser geeignet
um zeitkritische Anwendungen zu programmieren?
Ich habe das ganze Wochenende das Internet durchstöbert
und kann mich einfach nicht entscheiden.
Der AVR scheint moderner zu sein, die 8051er Reihe
kann aber schneller getaktet werden. Nun habe ich gelesen,
bei den meisten 8051er wird der Takt intern geteilt, so das
sie effektiv langsamer sind. Bei den Neusten soll das nicht so
sein.
Nach dem was ich gefunden habe spricht für den AVR:
- 1 Takt entspricht fast immer einem Befehl
- einfach und im System programmierbar

für die 8051er Reihe:
- kann schneller getaktet werden (intern geteilt ???)
- da habe ich zwei Bücher
gegen den 8051:
- die meisten umständlich zu programmieren

Programmieren würde ich in Assembler und wie schon erwähnt,
schnelle Anwendungen. (CCD Zeilen Ansteuerung)
Also ich müßte schon immer wissen, wie lang ein
Befehlszyklus ist.


Gruß Reinhard Tarnick
 
Hi,

ich habe mal irgendwann mit den 8051ern angefangen - und bin dann auf
AVRs umgestiegen.
Ich muß gestehen, ich kenne nicht die aktuellen 8051er aber zumindest
war da mal ein Takt/Befehlsverhätniss von 12:1 d.h. ein Befahl hat 12
Takte benötigt.
Und damit waren die AVRs auf jeden Fall wesentlich Fixer.
Ich Persönlich mag auch den Befehlssatz der AVRs lieber - aber das ist
Geschmackssache.
Letztendlich kannst Du bei jedem Assemblerprogramm genau ausrechnen, wie
lange der Proz für die Abarbeitung braucht. Und wie viele Taktzyklen ein
Befehl braucht, findest Du in den Datenblättern.
Andere Entscheidungskritererien sollten aber nicht nur die Architektur,
sondern auch die Funktionen sein, die der Controller hat: Timer, PWM,
RAM, Flash, EEprom, Ext. Interupts, Serielle-Schnittstelle usw.
Die AVRs finde ich ziemlich gut ausgestattet.
Außerdem sind sie mit wenig Hardware-Aufwand zu programmieren und man
benötigt keine teure Programmer-Hardware. Das ist aber zumindest bei den
8051er Deriveraten von Atmel auch der Fall.
Als dritte Alternative solltest Du Dir evtl. noch die PICs anschauen. Zu
denen kann ich Dir allerdings nix sagen, da ich mich mit denen noch gar
nicht befasst habe. Weiß nur, daß es davon sau viele unterschiedliche -
und damit warscheinlich auch mit unterschiedlichsten Ausstattungen gibt.

Gruß
Michael
 
"Michael Koch" <astroelectronic@gmx.net> schrieb
- 1 Takt entspricht fast immer einem Befehl

beim Cygnal C8051F120 ist das auch so. 100 MIPS.
siehe www.cygnal.com

Hi!

die Dinger klingen ja ziemlich interessant.
Von diesen 8051 Derivaten hab ich ja noch nie was gehört :)
Die Ausstattung dieser MCs ist ja beachtlich ....

Nur WER in good old Germany hat diese Dinger in seinem Sortiment ?


cu Marc
 
Reinhard Tarnick wrote:

Hallo,

welche von beiden Schaltkreisfamilien ist besser geeignet
um zeitkritische Anwendungen zu programmieren?
AVRs
[...]

8051er wird der Takt intern geteilt, so das
sie effektiv langsamer sind. Bei den Neusten soll das nicht so
sein.
Generell gilt eine Teilung der Quarzfrequenz von 12, dh. 12 Takte des
Quarzes sind ein Maschinenzyklus. Da viele Befehle mehrere Zyklen haben,
ist nicht immer der schneller getaktete auch der mit der schnelleren
Befehlsausführung.


Programmieren würde ich in Assembler und wie schon erwähnt,
schnelle Anwendungen. (CCD Zeilen Ansteuerung)
Also ich müßte schon immer wissen, wie lang ein
Befehlszyklus ist.
Ich empfehle für sowas den AVR.

Robert
 
Hallo Reinhard,

- 1 Takt entspricht fast immer einem Befehl
beim Cygnal C8051F120 ist das auch so. 100 MIPS.
siehe www.cygnal.com

- einfach und im System programmierbar
auch bei Cygnal.

Programmieren würde ich in Assembler und wie schon erwähnt,
schnelle Anwendungen. (CCD Zeilen Ansteuerung)
Also ich müßte schon immer wissen, wie lang ein
Befehlszyklus ist.
Steht im Datenblatt, Tabelle 12.1

Gruss
Michael
 
Hallo,

mit dieser ganz unscheinbaren Frage wurden bereits unzählige
Glaubenskriege in den Foren begonnen.
Jedenfalls werden alle drei Typen (Pic, 8051 und AVR) heutzutage noch
produziert und verkauft. Weshalb ich davon ausgehen würde, dass alle
auf dem neuesten Stand der Technik sind.

Die Frage der Echtzeitfähigkeit hängt hier ausschliesslich vom
Einzelfall, also deinen Algorithmen ab. Wenn du viel Zeit hast,
könntest du also deine zeitkritischen Routinen für beide Typen in
Assembler schreiben, und dann die Zahl der nötigen Taktzyklen
abzählen.
Natürlich gibt es manchmal auch Benchmarks. Leider stammen diese oft
von herstellernahen Organisationen, und sollten daher nicht so ernst
genommen werden. Ich weiss das aus erster Hand *schäm*.

Bei den schnellen Cygnus-Teilen bin ich anderer Meinung:
Wenn jemand mit 8Bit Micros arbeitet, dann meistens deshalb, weil sie
klein, billig sind und man herstellerunabhänig ist. Dies sind für
Bastler eher untergeordnete Eigenschaften, aber für Serienfertigung
wichtige. Wenn sich also nun herausstellt, dass man mit normalen
(=billigen) 8Bittern hart an der Performancegrenze liegt, dann kann es
sinnvoll sein, auf speziell getunete 8 Bit Typen umzusteigen. Diese
sind dann jedoch sehr viel teuerer.
Ich glaube, dass man hier mit Standard 16/32 Bit Typen günstiger
wegkommt. Die arbeiten sowieso mit höheren Taktfrequenzen, und sind im
Gegensatz zu Spezial 8 Bittern Massenware.

Die Bezugsquellen für die Mikrocontroller sagen dir die Hersteller, da
sie nicht direkt verkaufen.
Schau also mal auf die Homepages von Atmel, Philips, Microchip,
Cygnus, Infineon ...

Viel Erfolg bei der Auswahl,
Christian
 
Hallo Marc,

Nur WER in good old Germany hat diese Dinger in seinem Sortiment ?
entweder direkt in USA bestellen und mit Kreditkarte
bezahlen, oder www.retronic.de

Gruss
Michael
 
Hallo,

8051er wird der Takt intern geteilt, so das
sie effektiv langsamer sind. Bei den Neusten soll das nicht so
sein.
Generell gilt eine Teilung der Quarzfrequenz von 12, dh. 12 Takte des
Quarzes sind ein Maschinenzyklus.
das gilt nicht generell. Es gibt Ausnahmen:

einige neuere Philips Typen: 6 Zyklen
Dallas C320 u.ä.: 4 Zyklen
Dallas C420: 1 Zyklus
alle Typen von Cygnal: 1 Zyklus

Gruss
Michael
 
Hallo Christian,

Ich glaube, dass man hier mit Standard 16/32 Bit Typen günstiger
wegkommt. Die arbeiten sowieso mit höheren Taktfrequenzen, und sind im
Gegensatz zu Spezial 8 Bittern Massenware.
Der F120 von Cygnal hat 100MIPS und kostet ca. 30 EURO bei 1
Stück. Welcher Standard 16/32 Bit Controller ist schneller
UND billiger?

Gruss
Michael
 
On Mon, 8 Dec 2003 12:04:02 +0100, "Marc Keller" <marc.keller1@gmx.de>
wrote:

"Michael Koch" <astroelectronic@gmx.net> schrieb

- 1 Takt entspricht fast immer einem Befehl

beim Cygnal C8051F120 ist das auch so. 100 MIPS.
siehe www.cygnal.com


Hi!

die Dinger klingen ja ziemlich interessant.
Von diesen 8051 Derivaten hab ich ja noch nie was gehört :)
Die Ausstattung dieser MCs ist ja beachtlich ....

Nur WER in good old Germany hat diese Dinger in seinem Sortiment ?
Die grossen Händler sollten die haben.
Ich beziehe die immer bei Farnell, sind leider in "Privat-"Stückzahlen
recht teuer.
 
On Mon, 8 Dec 2003 09:54:53 +0100, "Reinhard Tarnick"
<RTarnick@t-online.de> wrote:


welche von beiden Schaltkreisfamilien ist besser geeignet
um zeitkritische Anwendungen zu programmieren?
Ich habe das ganze Wochenende das Internet durchstöbert
und kann mich einfach nicht entscheiden.
Der AVR scheint moderner zu sein, die 8051er Reihe
kann aber schneller getaktet werden. Nun habe ich gelesen,
bei den meisten 8051er wird der Takt intern geteilt, so das
sie effektiv langsamer sind. Bei den Neusten soll das nicht so
sein.
Richtig, es gibt jede Menge Varianten mit bis zu 1:1 Zyklen.

Nach dem was ich gefunden habe spricht für den AVR:
- 1 Takt entspricht fast immer einem Befehl
- einfach und im System programmierbar
Trifft auch auf die modernen 8051er zu.

für die 8051er Reihe:
- kann schneller getaktet werden (intern geteilt ???)
- da habe ich zwei Bücher
gegen den 8051:
- die meisten umständlich zu programmieren
Wieso das denn? Der Befehlssatz ist sicherlich beim AVR logischer,
dafür hat der AVR keine Interrupt-Level, was ihn für komplexere
Projekte praktisch ausschliesst, da so etwas (rechenzeit-)aufwendig in
Software nachgebildet werden muss, was dann auch noch fehlerträchtig
ist.

Programmieren würde ich in Assembler und wie schon erwähnt,
schnelle Anwendungen. (CCD Zeilen Ansteuerung)
Also ich müßte schon immer wissen, wie lang ein
Befehlszyklus ist.
Das steht bei jedem Controller, egal von welchem Hersteller, im
Datenblatt.
 
Michael Koch wrote:

Hallo,

8051er wird der Takt intern geteilt, so das
sie effektiv langsamer sind. Bei den Neusten soll das nicht so
sein.
Generell gilt eine Teilung der Quarzfrequenz von 12, dh. 12 Takte des
Quarzes sind ein Maschinenzyklus.

das gilt nicht generell. Es gibt Ausnahmen:
Richtig, aber der Standard-8051 hat diese Teilung by 12. Die von dir
genannten Ausnahmen sind vorhanden, aber meiner Erfahrung nach teurer.

Was kostet ein Dallas im Vergleich zu einem AVR? Und wie gut ist er
erhältlich?

Robert
 
Hallo Jochen!
gegen den 8051:
- die meisten umständlich zu programmieren

Wieso das denn? Der Befehlssatz ist sicherlich beim AVR logischer,
Genau, und für C-Compiler wegen seiner Registerarchitektur deutlich
einfacher zu handhaben.

dafür hat der AVR keine Interrupt-Level, was ihn für komplexere
Projekte praktisch ausschliesst, da so etwas (rechenzeit-)aufwendig in
Software nachgebildet werden muss, was dann auch noch fehlerträchtig
ist.
Naja, so aufwändig ist das wohl nicht, oder wieviele IRQ-Level hättest
du gerne? Zwei erreichst du schon dadurch, das du in der
Interupt-Routine weitere IRQs zuläßt, oder eben nicht...

Gruß
Thorsten
--
Kunst kommt aber von 'können',
nicht von 'kennst du schon den neuesten trick?'
Gunther in oecher.computer zum Thema "Gutes Webdesign"
 
beim Cygnal C8051F120 ist das auch so. 100 MIPS.
siehe www.cygnal.com

- einfach und im System programmierbar
Hallo Michael,

besten Dank für Deine Antwort.
Der Tip ist wirklich gut, die Dinger haben ja eine
erstaunliche Rechenpower und eine prima
Ausstattung.
Bisher habe ich mich mit dem Gebiet noch nicht beschäftigt
aber bei manchen Sachen kommt man mit einzelnen IC's
einfach nicht weiter.


Gruß Reinhard
 
Michael Koch wrote:
Hallo Christian,

Ich glaube, dass man hier mit Standard 16/32 Bit Typen günstiger
wegkommt. Die arbeiten sowieso mit höheren Taktfrequenzen, und sind
im Gegensatz zu Spezial 8 Bittern Massenware.

Der F120 von Cygnal hat 100MIPS und kostet ca. 30 EURO bei 1
Stück. Welcher Standard 16/32 Bit Controller ist schneller
UND billiger?
Kommt auf die Anwendung an. Wenn viel mit 32-Bit Zahlen zu rechnen ist
dürfte jeder 32 Bitter schneller sein. Aber die Diskusion ließe sich ewig
fortsetzen. Für jede Anwendung muß man sich eben individuell entscheiden was
für einen ľC man verwendet. Und da spielt nicht nur Leistungsfähigkeit eine
Rolle sondern für den Hobbyisten auch solche Dinge wie:

-Beschaffbarkeit
-Gehäuse (DIP ist nicht schlecht)
-aktzeptabler Preis
-Verfügbarkeit eines günstigen C-Compilers
....

Deswegen würde ich entweder zum AVR (vom 8 Pinner mit 1k Flash bis zum 64
Pinner mit 128k Flash alles da, GCC) oder zum 8051 (breite Angebotspalette,
SDCC) greifen.

Einen 16-Bitter kann man dann immer noch später einsetzen wenn man einen
Anwendungsfall dafür hat.



--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
 
gegen den 8051:
- die meisten umständlich zu programmieren

Wieso das denn? Der Befehlssatz ist sicherlich beim AVR logischer,
dafür hat der AVR keine Interrupt-Level, was ihn für komplexere
Projekte praktisch ausschliesst, da so etwas (rechenzeit-)aufwendig in
Software nachgebildet werden muss, was dann auch noch fehlerträchtig
ist.
Hallo Jochen,

da habe ich mich falsch ausgedrückt.
Ich meinte damit, das Programm läßt sich bei den älteren nicht
ohne ein aufwendiges Programmiergerät in den Schaltkreis
übertragen.
Habe inzwischen mitbekommen, daß das bei den neueren
Typen einfacher ist.

Besten Dank.

Gruß Reinhard
 
Hallo Allerseits,

vielen Dank für die vielen Tips !
Also, ich werde es mit einen AVR Controller versuchen.
Von den Daten her bin ich zwar von den Cygnal Typen
beeindruckt, aber zu den AVR Controllern gibt es jede
Menge Internetseiten und Tutorials auf Deutsch.
Mein englisch ist äußerst mangelhaft und als ich mal in
die 170seitige Beschreibung zu einem Cygnal Controller
reingeschaut habe, da hat mich das blanke Entsetzen gepackt.
So groß ist die Investition ja auch nicht, wenn ich gut
klarkommen sollte, kann ich ja immer noch umsteigen.



Beste Grüße, Reinhard
 
Jochen Giese <Jochen.G@hotmail.com> wrote:

... dafür hat der AVR keine Interrupt-Level, was ihn für komplexere
Projekte praktisch ausschliesst, da so etwas (rechenzeit-)aufwendig
in Software nachgebildet werden muss, was dann auch noch
fehlerträchtig ist.
Eigentümlicherweise scheint mir dieses Argument immer wieder vorrangig
von denjenigen ins Feld geführt zu werden, die noch nie einen AVR
benutzt haben. Was spricht dagegen, die ISRs einfach kurz genug zu
haben, daß man gar keine geschachtelten Interrupts braucht?
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Reinhard Tarnick <RTarnick@t-online.de> wrote:

welche von beiden Schaltkreisfamilien ist besser geeignet
um zeitkritische Anwendungen zu programmieren?
Darauf gibt es keine einfache Antwort. Wenn man einfach bloede
runterprogrammiert duerfte ein AVR performanter sein. Wenn man aber
die drei Zaehler eines 8052 gut ausnutzt und die einstellbaren
Prioritaeten bei den IRQs einem gut ins Konzept passen dann kann es
sein das der MCS51 einen AVR locker abhaengt.

Es haengt also stark von der Aufgabe ab.

Ich habe mit einem 8052 schon zwei Schrittmotoren gleichzeitig
gesteuert, inklusive Rampen und Positionsberechnung und gleichzeit von
einem Hostrechner noch Kommandos ueber die RS232 entgegengenommen. Ich
glaub das haette ich mit einem AVR nicht geschafft.

Olaf


--
D.i.e.s.S. (K.)
 
Hallo!

Ich habe mit einem 8052 schon zwei Schrittmotoren gleichzeitig
gesteuert, inklusive Rampen und Positionsberechnung und gleichzeit von
einem Hostrechner noch Kommandos ueber die RS232 entgegengenommen. Ich
glaub das haette ich mit einem AVR nicht geschafft.
Naja, bei mir steuert ein AT90S8515 bei 8 MHz vier Schrittmotoren,
berechnet noch die Zündzeitpunkte für eine Lampendimmung mit Triac und
filtert seine Steuerdaten ebenfalls aus einem seriellen Datenstrom
herraus.
Es spricht ja auch nichts dagegen die Timer des AVRs zu benutzten :)
Wobei ich zugeben muss, dass das Beschleunigungsverhalten der
Schrittmotoren noch nicht ideal ist, was vermutlich aber an der noch
nicht perfekten EEPROM Tabelle liegt...
Hast du da vielleicht ein bischen Erfahrung mit "Schrittmotoren und
glatten Bewegungen" ? Dann hätte ich da nämlich mal ein paar Fragen...
:)

Cu, Michael
 

Welcome to EDABoard.com

Sponsor

Back
Top