Forum: Mikrocontroller und Digitale Elektronik Vor- bzw. Nachteile AVR / 8051


von SchillJo (Gast)


Lesenswert?

Noch was: Was ist empfehlenswerter, AVR oder 8051?? Wo liegen Vor- bzw. 
Nachteile??? Wo liegen die wesentlichen Unterschiede???

Viele Fragen...sorry ;)

Gruss
SchillJo

von Peter D. (peda)


Lesenswert?

Mit dem 8051 kannst Du nichts falsch machen.

Es gibt etwa 500 verschiedene Varianten von über 30 Herstellern.

Egal, ob MP3, IDE/ATAPI, Ethernet, CAN on Board, für alles gibts nen 
passenden 8051-er (ADC, DAC, SPI, I2C, USB, usw. natürlich auch).

Mit meistens 4 Interruptprioritätsstufen ist er auch für komplexere 
Anwendungen geeignet.

Nach oben hin liegen derzeit die Leistungsgrenzen bei 100MIPS und 4MB 
Programmspeicher.

Nur nach unten hin ist der AVR besser, den gibts ab 8-Pin-Gehäuse. Der 
kleinste 8051 hat 14 Pins.


Peter

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der große Vorteil der AVRs ist, dass es einen sehr guten kostenlosen 
C-Compiler gibt (avr-gcc). Der sdcc ist nach dem was ich bis jetzt 
gehört habe im Vergleich zum gcc ziemlich bescheiden, deshalb sind die 
8051er für mich keine Alternative.

Gruß
Andreas

von Michael (Gast)


Lesenswert?

Viele Fragen - eine Antwort: nimm einen AVR !

von crazy horse (Gast)


Lesenswert?

allgemein kann man das so nicht sagen, es kommt auf die Anwendung an.
Sogar ich als erklärter PIC-Nicht-User habe einen PIC in einer Serie 
drin (Batteriebetrieb, der geforderte Strom war weder mit nem AVR noch 
mit nem 8051 erreichbar).

von mikki merten (Gast)


Lesenswert?

Über die Architektur dieser beiden Familie könnte man fast endlos 
diskutieren. Wesentlich ist wohl, dass es für die AVR Prozessoren keinen 
Zweithersteller gibt und ATMEL teilweise recht vollmundig Produkte 
ankündigt und dann nicht liefern kann. Obwohl ich persönlich die AVR 
Architektur bevorzuge, kann die mangelnde Lieferfähigkeit bzw. fehlende 
Ausweichmöglichkeit auf einen Zweithersteller bei Serienprodukten 
entscheidend sein.

von Hilel (Gast)


Lesenswert?

AVRs lassen sich im System programmieren. Das ist ein grosser Vorteil 
gegenüber 8051. Gerade in der Entwicklungsphase, wenn das auszuführende 
Programm ständig erweitert und korrigiert werden muss. Nur mit den 
Interrupt-Prioritäten, da kann der AVR gar nicht mithalten. Da würde ich 
mich für 8051 entscheiden. Wie crazy horse gesagt hat, es kommt auf die 
Anwendung an. Die Lieferzeit bei Atmel ist allerdings nicht ohne.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Es gibt auch einige 8051er mit ISP-Funktion.

von Bernhard T (Gast)


Lesenswert?

Hallo SchillJo,
ich geb' jetzt auch mal meine Meinung (Senf) ab:
viele x51er  können Programcode über den Adress/Daten Bus ansprechen und 
ausführen.
AVR's können das grundsätzlich nicht.
8051er verbrauchen wohl meist etwas mehr Strom ??.
Für AVR gibt es einen sehr guten kostenlosen C-Compiler WINAVR, und auch 
der Programieradapter kostet fast nichts. Der sehr gut Keil-Compiler für 
x51er ist nicht gerage billig (>1000 oder 2000 EURO)
Ich finde das die AVR's einfach sehr wenig Geld und Einarbeitung 
brauchen. Aber es stimmt schon.. 8051 ist Industriestandard  (Die 
Auswahl an x51er'n ist schon beeindruckend).

Gruß Bernhard

von Meiserl (Gast)


Lesenswert?

Problem bei den AVRs sind die verschiedenen Bauteiltypen.
Man muß sich gut überlegen wieviel Flash die Anwendung benötigt.
Benötigt man im Laufe der Entwicklung doch mehr Speicher ist meist eine 
Layoutänderung nötig da es  selten pinkompatible Typen gibt.

Für kleinere Projekte verwende ich die AVRs und genieße ISP-Programming 
und andere Features.

Sonst verwende ich eher die 51er Serie mit Keil Compiler.
Hier gibts Auswahl wie Sand am Meer und man sucht sich genau dieses 
Derivat aus das man benötigt.

Ist ja auch komisch das Atmel einen MP3 Dekoder mit 51er Kern rausbringt 
oder sehe ich das etwa falsch?

Aber wie schon erwähnt man hat halt überall seine Vor und Nachteile.

von Michael (Gast)


Lesenswert?

Da wir dieses Thema hier schon öfter hatten, habe ich 'mal die Beiträge 
dazu gesucht aber leider nicht gefunden.
Vorweg: die Auswahl eines Prozessors sollte sich immer am Bedarf 
orientieren. Einem Anfänger, der seine Anforderungen (noch) nicht 
formulieren kann, empfehle ich zum Einstieg einen AVR. Mit seinen vielen 
internen Registern ist er zeitgemäßer und schneller in der 
Programmausführung. Beim 8051 muß sich alles durch den Flaschenhals 'A' 
zwängeln. Ein Vergleich einfacher Rechenoperationen Add./Sub./Vergleich 
von 32-Bit Zahlen zeigt, daß diese beim AVR elegant und schnell erledigt 
werden. Der 8051 hat z.B. nicht einmal einen compare-Befehl. Bei 
gleicher Taktfrequenz ist ein AVR ein Vielfaches schneller als ein 8051; 
dies nutzt insbesondere bei der Interruptverarbeitung.

Das Argument militanter 8051-Verfechter ist dann zumeist: 32-Bit Zahlen 
braucht man nicht; oder es wird die Keule ausgegraben, eines der vielen 
Derivate - zu denen auch kein second-source Lieferant existiert - 
welches angeblich 100MIPS leisten soll. Bei näherer Betrachtung würde 
sich vermutlich zeigen, daß eine andere MPU trotz weniger MIPS 
leistungfähiger und kostengünstiger wäre. :-)

Meine Empfehlung für den Einstieg: AT90S8515. Dieser ist pinkompatibel 
zum 8051 ! Weitere Typen: AT90S4433 als Komplettlösung für kleinere 
Aufgaben, oder die Nachfolger ATmega8 oder ATmega16. Alle Typen gibst im 
DIL-Gehäuse - Schaltungen lassen sich einfach aufbauen.

@Bernhard wg. Industriestandard:
Ich glaube, die 68HCxx haben eine noch höhere Verbreitung; aktuelle 
Zahlen liegen mir momentan aber nicht vor.

von Meiserl (Gast)


Lesenswert?

@Michael

Angenommen du nimmst für ein Projekt (Serienprodukt)
einen AT90S4433.
Im Laufe der Enwicklung werden dir die 4k zu wenig.
Baust du in solchen Projekten (Software wächst meist von Version zu 
Version) gleich nen großen Mega ein?
Also wenn ich bei einiger meiner 8051er Projekte nen AVR genommen hätte 
dann hätte ich sicher schon 3 mal das Layout überarbeiten müssen.
(Codegrösse von ca 6k. auf ca. 48k gewachsen)

Ich würde mich nicht als 8051-Verfechter sehen.
Jeder Controller hat halt seine Vor und Nachteile.

In manchen Anwendungen ist die Geschwindigkeit auch überhaupt kein 
Thema.
z.b. bei einer Pumpensteuerung würde sogar eine Zykluszeit von einer 
Sekunde genügen.

von Peter D. (peda)


Lesenswert?

@Michael,

der einzige, der hier militant ist, bist Du.

Es ist ja keine Schande, wenn Du den 8051 nicht kennst, aber dann hör 
doch bitte damit auf, lauter Unwahrheiten über ihn zu erzählen !


Z.B. hat er sehr wohl einen Vergleichsbefehl und der kann sogar indirekt 
im Speicher vergleichen, z.B. um in einem String ein bestimmtes Zeichen 
zu suchen:
CJNE @R0, #Wert
Der AVR muß alles erst umständlich in Register laden.


Auch wenn ich mir die AVR/8051-Projekte so ansehe, sind es vorwiegend 
Steuerungsaufgaben und da ist Bit testen, setzen und Statemachines der 
Hauptteil des Programms.

Wenn dann doch mal Rechnungen benötigt werden, ist die benötigte 
CPU-Zeit weit unter 1%, so das es unwichtig ist, wenn der 8051 da etwas 
langsamer ist.

Ich nehme der Bequemlichkeit halber of gleich floating-point Zahlen 
obwohl die mehr CPU-Zeit brauchen als 32-Bit Integer.
Aber der Mensch will ja Meßwerte auch ablesen können und da sind 
Ausgabezeiten nicht schneller als 2-5 Meßwerte/s ergonomisch. D.h. ich 
habe alle Zeit der Welt zur Berechnung.


Und die ganzen logischen Verknüpfungen, die für Steuerungen so wichtig 
sind, kann er mit jedem Port oder SRAM-Byte direkt machen, ohne den Accu 
(ORL, ANL, XRL und auch INC, DEC, DJNZ).


@Meiserl,

ich vermute mal, die Wahl des 8051 für MP3 hat mit den möglichen 
verschiedenen Interruptprioritäten zu tun. Man kann dann dem Transport 
der MP3-Daten die höchste Priorität zuordnen und braucht trotzdem für 
die ganze Bedienerführung nicht darauf Rücksicht zu nehmen. D.h. alle 
anderen Interrupts laufen auf einem niedrigeren Level und die MP3-Daten 
geraten niemals ins Stocken.


Peter

von mikki merten (Gast)


Lesenswert?

@peter
Ich glaube kaum, dass für die MP3 Lösung die Interrupt-Steuerung 
ausschlaggebend gewesen ist, sondern eher die Vorgaben des potentiellen 
Kundenkreises mit Abnahmemengen >100k. Zumal der DAC-Teil ja nicht auf 
dem Chip integriert ist.

Bei einem 8051 Design stehen halt viele Hersteller zur Verfügung. Auch 
kann ich von diesen bei entsprechenden Stückzahlen ein Custom Design 
bekommen.

Obwohl das Design des 8051 schon etwas "angestaubt" ist, hat man bei der 
Konzeption spätere Erweiterungen besser berücksichtigt. Beim AVR dürfte 
wohl mit dem MEGA128 die Grenze erreicht bzw. schon überschritten sein. 
Für kleinere Anwendungen ist ein AVR durchaus ok. Kostenlose recht 
komfortable Entwicklungsumgebung und kurze Einarbeitungszeit sind hier 
entscheidende Vorteile. Wenn man mal über den Tellerrand hinausschaut 
gibt es auch leistungsfähigere Prozessoren anderer Hersteller z.B. M16C 
oder Z8encore. Diesen haftet aber auch der Makel an, dass kein 
Zweithersteller vorhanden ist.
Den 8051 produzieren viele Hersteller, nur Entwicklungstools gibt's für 
diesen eben nicht von den Herstellern zum Nulltarif, sondern nur gegen 
entsprechend viele Euros.

von Markus Burrer (Gast)


Lesenswert?

IMHO hat der AVR zwei Haupnachteile, den unflexiblen Programmspeicher 
und die schlechtere IRQ Behandlung.
Aber wer im laufe der Zeit Speicherprobleme bekommt ist selber schuld. 
Wenn er mit nem 2333 anfängt und damit irgend ne Mega Anwendung mit 
Display, Motorsteuerung und was weiß ich was noch alles vorhat ist 
selber schuld. Mittlerweile gibt es genügend Auswahl an Controllern, die 
Pinkompatibel zueinander sind. z.B. 2333, 4433, Mega8 oder 8535, Mega16, 
Mega32. man muß halt vor dem Layouten schon wissen was rauskommen soll.
Vorteil des 8051 ist halt, das man ein Programm auch mal in ein externes 
RAM laden und dort ausführen kann. Das geht bei den AVR leider nicht. 
Man muß ein Programm immer per ISP oder Bootloader in den Flash proggen. 
Dadurch hat man beim 8051 aber nur insgesamt 64kB für Programm und 
Datenspeicher (neue, teure und schwer zu erhaltene Exoten vielleicht 
ausgenommen), beim AVR gehts bis 128kB Programmspeicher und 64kB 
Datenspeicher

von mikki merten (Gast)


Lesenswert?

@Markus
Wo macht den bei einem Mikrocontroller Programm-Code im RAM Sinn. Dieser 
soll doch im allgemeinen eine bestimmte Aufgabe erfüllen. Und Flash 
Memory, welches ich ohne Probleme min. 10000 mal per ISP oder Bootloader 
programmieren kann ist doch eine sinnvolle Lösung.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

@peter:
Das Hauptargument für die 8051er ist wohl die Unabhängigkeit vom 
Hersteller und die große Auswahl an verschiedenen Typen mit CAN, USB, 
MP3 usw. Allerdings darf man nicht übersehen, dass man sich sobald man 
irgendeine dieser Erweiterungen nutzt genau wie beim AVR an einen 
Hersteller bindet.

@Meiserl:
Wenn man ein Projekt z.B. mit einem AT90S4433 beginnt und plötzlich 
Hunger auf mehr Speicher bekommt, dann kann man doch einfach auf den 
mega8 umsteigen. Hab ich zwei Tage vor der Fertigstellung meiner 
Facharbeit so gemacht: 90S2333 raus aus dem Sockel, mega8 rein, ein paar 
kleinere Änderungen am Programm, fertig.

von Michael (Gast)


Lesenswert?

Ist es nicht schön ? Ein Ruf und Alle kommen :-)

@Peter:
Von einem compare-Befehl erwarte ich, daß er zumindest einen Vergleich 
auf >, < und = liefert. Den Befehl CJNE würde ich eher einer bedingten 
Verzweigung zurechen, als daß er zu einem Vergleich zweier Zahlen > 1 
Byte tauglich wäre. Wenn Atmel einen MP3 Dekoder mit 51er Kern macht, 
dann wahrscheinlich, weil dieser Kern auf Grund geringerer Fähigkeiten 
ein bißchen kleiner ist und weniger kostet.
Beim AVR wird nichts umständlicherweise in Register geladen, sondern 
vorzugsweise in Registern gehalten: das macht die Programme schnell. Du 
hast natürlich Recht, für einfache Anwendungen braucht man keinen 
schnellen Rechenknecht; das ist durchaus ein Argument für 8051. Sobald 
man aber 'float' rechnen muß, zeigen sich wieder deutlich die Vorteile 
des AVR mit seinen vielen internen Registern. Ich wäre mir auch nicht 
sicher, ob 4-Byte-float nennenswert langsamer als 32-Bit Integer ist. Es 
sind ja nur 24-Bit Mantisse zu rechnen.

@Meiserl:
Man sollte vorher wissen, was man braucht und was man will, sofern man 
in die Zukunft sehen kann. Ich habe über 10 Jahre 8051er + Derivate 
eingesetzt, aber auch die wurden mir irgendwann zu klein und zu langsam. 
Für die kleinen Aufgaben finde ich die ATmega 8,16 und 128 sehr gut, 
weil alles 'on board' ist, selbst der Taktgenerator: Spannung anlegen 
und fertig !

@Micki:
Der Zweithersteller ist ein wichtiges Argument. Da es aber nicht 'den' 
8051 gibt, der all die oben aufgeführten Eigenschaften besitzt, landet 
man doch wieder bei nur einem Hersteller, der gerade den benötigten 
Typen produziert. Das Risiko hat man letztlich bei allen 'wichtigen' 
Bauteilen. Von Schlüsselbauteilen lege ich mir zumeist den 
1/2Jahresbedarf auf Lager - auch wenn irgendwann welche davon übrig 
bleiben werden. Falls es klemmt, ist Zeit genug, um zu reagieren.

von Markus Burrer (Gast)


Lesenswert?

@mikki
manchmal vermisse ich das irgendwie. bei den AVR hat man in der 
Entwicklungsphase doch irgendwie die maximale Beschreibbarkeit des 
Flashes im Hinterkopf, auch wenn die bei den neuen AVR jetzt bei 10000 
liegt. Bei den 8051 kann man das mal schnell ins RAM downloaden. Und 
PonyProg ist beim Downloaden ja auch nicht gerade der schnellste. Bei 
8kB geht das noch, aber arbeite mal mit nem Mega128.

Nichts desto trotz, die Wahl des Controllers hängt von den persönlichen 
Vorlieben und Anforderungen ab und meine Vorlieben und Anforderungen 
haben mich eben zu den AVR getrieben ;) und ich habs bisher noch nicht 
bereut

von Meiserl (Gast)


Lesenswert?

@Michael

>>> Man sollte vorher wissen, was man braucht und was man will, sofern man in die 
Zukunft sehen kann......

Nicht immer kann man in die Zukunft denken.
Wer hätte vor einigen Jahren daran gedacht das man SMS absetzen kann 
(GSM, TAP), Fernwartungen über GSM usw.
So kann man z.b. eine "alte" Anlage mit z.b. 89c51 auf 89c55 updaten 
ohne irgendeine Hardwareänderung.

>>>> Für die kleinen Aufgaben finde ich die ATmega 8,16 und 128 ........

Was verwendest für die großen Aufgaben?

von Michael (Gast)


Lesenswert?

@Meiserl:
Ich hatte es auch hier schon mal erwähnt: H8S und ein Link dazu 
www.mino-elektronik.de/chip_2352/chip_2352.htm.
Die Umstellung war viel Arbeit; es hat sich dennoch gelohnt. Die Kosten 
für die Hardware liegen nicht wesentlich höher als für einen MEGA128. Es 
gibt einen GNU-C-Compiler, der bei diesen Prozessoren seine Stärken 
zeigen kann.

von thkaiser (Gast)


Lesenswert?

Das wird ja hier ein richtiger Glaubenskampf...
Da ich beide Prozessoren kenne und programmiert habe, kann ich die ganze 
Diskussion auf einige wenige Punkte zusammenfassen:
Die Atmels sind für kleinere Anwendungen ideal. Ich habe noch nie 
größere als den 4433 / mega-8 eingesetzt - da ist für mich der Punkt, wo 
der MCS-51 dann einsteigt, da ich dann sowieso mit externem Speicher 
arbeite. Den Vorteil, Programm in den RAM zu laden und dort auszuführen, 
sollte man nicht verachten - ich habe mir einen kleinen Monitor 
geschrieben, mit dem ich ruck-zuck programme rüberladen, ausführen, 
Parameter verändern und abfragen kann. Diese Funktion fehlte mir schon 
so manches mal beim Atmel. Seine Vorteile spielt der Atmel bei ein-Chip 
Lösungen aus. Ich habe es sogar schon geschafft, beide Controller auf 
einem Board zu vereinen - der MCS-51 ist der Hauptprozessor, und der / 
die Atmel(s) arbeiten ihm zu (Signalverarbeitung).
Und wer dann immer noch nicht zufrieden mit den Controllern ist schaut 
euch mal diesen Link an:

http://mycpu.mikrocontroller.net/

von Peter D. (peda)


Lesenswert?

Ich halte es auch so wie thkaiser. Die AVRs machen das kleine, die 
8051-er die großen Sachen.

Z.B. habe ich jetzt den Einsatz des TINY26 vor.
Da es aber öfters in den Foren Klagen gibt, daß die AVRs gegenüber den 
8051 weniger störfest sind, werde ich sicherheitshalber 2-gleisig 
fahren. D.h. ich werde sowohl den TINY26 als auch den P87LPC762 
vorsehen. Mit dem TINY26 kann ich leichter entwickeln, da er mehrfach 
programmierbar ist. Aber sobald es Probleme geben sollte, kommt einfach 
der LPC762 rauf. Dann muß eben der 300$ teure Emulator gekauft werden.


Als Hauptcontroller in einem größeren Gerät habe ich z.B. den DS80C390 
verwendet mit 64kB Code und 64kB Daten. Hauptgrund waren die beiden 
CAN-Interfaces. Die erweiterte Adressierung (4MB Code / Daten) habe ich 
nicht verwendet, da ich noch einen älteren Keil Compiler benutze, der 
das nicht unterstützt.


Angenehm ist schon, daß die meisten Hersteller bei den 40- und 
44-Pinnern die gleichen Anschlußbelegung haben. D.h. von 4kB bis 64kB 
kann man bequem umrüsten ohne Layoutänderung.


Wenn man spezielle Hardware verwendet, legt man sich schon ein kleines 
bischen fest.
Z.B. wenn es wider Erwarten Beschaffungsprobleme mit dem DS80C390 geben 
sollte, kommt eben ein anderer 8051 mit 2 externen SJA1000 drauf. Dann 
muß ich nur den CAN-Treiber anpassen, der ganze andere Code aber kann 
bleiben.
Da der DS80C390 bisher immer kurze Lieferzeiten hatte, habe ich das im 
Layout aber noch nicht vorgesehen.


Und wenns wirklich mal haufenweise schnelle Arithmetik zu tun gibt, dann 
ist weder der 8051 noch der AVR ein Kandidat. Dann muß eben ein DSP her, 
keinen Frage.


@Michael,

mit CJNE kannst Du genauso gut auch 16-Bit Vergleiche machen.
Es macht Vergleichen und Springen in einem Abwasch, spring einfach in 
die nächste Zeile und schon bleibt nur der Vergleich übrig.
Mein Beispiel bezog sich auf Strings und wohl keiner wird z.B. einen 
UART-Puffer in den Registern anlegen, sondern im SRAM. Und dann mußt Du 
schön alles wieder in ein Register laden um irgendwas damit zu machen.

Wenn Du 10 Jahre mit dem 8051 Erfahrung hast, warum haßt Du ihn dann so 
?
Ich habe ihn mit der Zeit dagegen immer besser gefunden. Die Intel-Leute 
hatten alles richtig clever durchdacht und nicht so verrückte 
Spielereien, wie daß beim AVR manche Bits gesetzt werden müssen, um sie 
zu löschen.

Ich habe auch fast nie Zeitprobleme, so daß ich mit den üblichen 
11.0592MHz weit unter dem Maximum bleibe (die Atmels können ja 
24..33MHZ).

Kannst Du was über die Anwendungen sagen, wo der 8051 zu langsam war.

Zu Anfang meiner 8051-Arbeit hatte ich auch oft Zeitprobleme. Aber dann 
habe ich gemerkt, daß mit einem besseren Konzept oftmals sogar massig 
Rechenpower übrig war.
Man muß bloß eben nicht gleich stur die Befehle einhacken, sondern 
erstmal einen Stift und einen Packen Papier nehmen und gründlich planen. 
Dann sieht man auch sofort, wo es eng werden könnte. Und erst, wenn ich 
überall mindestens 50% Reserve habe (Speicher und Zeit), fange ich an 
den Code zu schreiben. Ich versuche zumindest, es immer häufiger zu tun, 
es lohnt sich auch schon bei kleinen Projekten. Manchmal ist bloß die 
Versuchung groß, sofort Spaghettikode einzuhacken.


Peter

von Michael (Gast)


Lesenswert?

@Markus:
Wegen der von Dir erwähnten Programmierdauer habe ich 'mal einen Mega103 
mit 101KB gefüttert: 32 Sek. fürs Programmieren und 25 Sek. für den 
abschließenden Vergleich. Die Zeiten sind meines Erachtens passabel; ich 
verwende einen Prommer am LPT-Port eines PC. Neulich hatte hier jemand 
von 8 Minuten für den Vergleich erzählt, daß wäre dann schon recht 
heftig.

von Markus Burrer (Gast)


Lesenswert?

Immerhin gut eine Minute. Wenn man grad am Testen ist und schon mit den 
Fingern auf der Tischplatte rumtrommelt eine lange Zeit ;)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Über einen seriellen Bootloader wird das auch nicht schneller gehen.

von Michael (Gast)


Lesenswert?

Das mit der Programmierdauer, sehe ich mir noch einmal näher an. Ich 
verwende Turbo-C++ 1.0 (1990) und habe zunächst einen der vielen 
outportb() entfernt; damit komme ich auf 35 Sek.(10+15) für 101KB. Der 
outportb() dauert immer 1,5us, was mir sehr lange vorkommt. Daher werde 
ich sr_out() und sr_in() 'mal in Assembler machen, wenn ich x86 noch auf 
die Reihe bekomme.
Bei den AT90xxxx hat die Übertragungszeit keine Rolle gespielt, da der 
Programmierimpuls deutlich länger sein mußte.

von Arne K. (Gast)


Lesenswert?

Hallo,

die Beliebtheit der AVRs fällt mir im Netz immer mehr auf. Leider habe 
ich den Umgang damit immer noch nicht erlernt, da er gegen meine 
Arbeitsweise spricht. Wenn ich programmiere, lädt ein weiteres Programm 
automatisch das generierte Hex- oder Bin-File sofort in die Aplikation, 
um es dort auch testen zu können. Ich verwende einen EPROM-Simulator am 
LPT der mit 32k in nur knapp 2sec geladen ist und auch automatisch die 
externe Aplikation resetet. 1000 und auch 10.000 Schreibzyklen sind mir 
zu schnell erreicht. Auch ist mir das ewige hin und her beim maskieren 
der MC's zu umständlich und zeitaufwendig. Beim fertigstellen, d.h. 
maskieren des MC's oder ext. ROMs läßt es sich halt nicht vermeiden, mal 
20sec und mehr zu warten.

Zum lernen von Bus-Architekturen (z.B. Speicher: Harvard oder Von 
Neuman, d.h. getrennter oder gemeinsamer Program und Daten-Speicher) ist 
der 8051er echt gut.

Fremde 8051er(obwohl programmiert und nicht löschbar) lassen sich 
dennoch weiterverwenden und mit PRG's aus dem externen ROM füttern. So 
kann man aus einigen alten Festplatten, Scannern, Videorecordern oder wo 
auch immer, diese MC's ausschlachten und verwenden. Fällt beim AVR wohl 
flach... ;-)

Der Aufwand zum ersten 8051er ist (ohne ISP) jedoch recht groß. Dennoch 
ist RAM-Speicher kein Thema, wenn man ihn in Blöcke à 64k aufteilt. Nur 
ein Port zusätzlich mit 8Bit und man kommt schon auf 2^24, d.h. max. 
16MB! Wer braucht soviel?

Obwohl ich Hobbyist mir alle Werkzeuge zu Lernzwecken selbst gebaut 
habe, Board mit Sockel für MC in DIP40Pol, AdressLatch, 32k ROM und 32k 
RAM, UART-Treiber-Modul, seperater Epromsimulator, Epromlader für Dos 
und Win, Logiktester und Spannungsversorgung (Ausnahmen: 
Assembler-Entwicklungsumgebung für Win), bereue ich es jedenfalls nicht, 
mir zuerst den 8051er ausgesucht zu haben. Später baute ich ebenfalls 
einen Progger für MC's und EProms. Als nächstes ist für mich ein DSP 
interessant, da für Audio mit 16Bit (besser 24) ein AVR kaum reichen 
wird - ist aber auch noch ein langer Weg... .

Gruß,
Arne

von Michael (Gast)


Lesenswert?

Um meine Geschwindigkeitseinschätzung grob in Zahlen zu fassen, habe ich 
einen AVR (Mega103) und einen 8051 (jeweils auf 12MHz umgerechnet) 
rechnen lassen: fmul(a*b)+fdiv(a/b) (a=98.7654321, b=1234567.89) sowie 
longmul(a*b)+longdiv(a/b) (a=987654321, b=123456789).  Vergleichsweise 
dazu noch einen H8S_2352/20MHz/ext. RAM 16 Bit.

Hier die Zeiten in uS (mul/div):
AVR (IAR V1.xx) float (<50/<50); long (<50/<50)
8051 (Keil C51 V3.40) float (400/720); long (160/1030)
H8S (IAR ICCH83) float (17/32); long (6/18); short (2/2)

Jetzt kann man natürlich sagen, das bräuchte man nicht - kein Problem, 
das soll jeder für sich entscheiden. Ich brauche es !

von thkaiser (Gast)


Lesenswert?

Warum wird hier in Sekunden und Flops gesucht? Beide Controller haben 
ihre Berechtigung. Ich verstehe nicht, warum hier so viel Wind um die 
Sache gemacht wird ;-)

von mikki merten (Gast)


Lesenswert?

@michael
Bitte nicht solche hinkenden Vergleichen mi irgendwelchen Benchmarks die 
zum einen mit wenig aktuellen typischen Prozessor-Varianten zumindet 
beim 8051 und AVR und mit irgendwelchen Steinzeit-Versionen von 
C-Compilern für diese gemacht wurden. Oder kriegst du von einem 
Hersteller Provision?
Da muss in thkaiser zustimmen, dass jeder Controller seine 
Daseinsberechtigung hat. Da Vielzahl von Lizenznehmern bei 8051, 68xx 
und ARM sagen wohl auch einiges über die Verbreitung und Akzeptanz in 
der Industrie.

von Matthias (Gast)


Lesenswert?

Hi

ich bin ganz deiner Meinung mikki. Die AVR's und die 51er haben beide 
ihre Berechtigung. Problem bei den AVR's ist einmal das sie nur von 
einem Hersteller kommen (kein Problem für Hobbyist) und zum zweiten die 
fehlenden INT-Prioritäten. Ich hab aber beide Familien im Einsatz und 
beginne grade eine Stufe höher (M16C)

von Peter D. (peda)


Lesenswert?

@michael,

super realisatisch dieser Vergleich, einen Mega103 bei 12MHz zu 
betreiben, das ist doch weit außerhalb der Spezifikation.

Ich warte immer noch auf den AT90S8515 mit 20MHz wie er schon im 
Datenbuch von 1997 abgebildet ist.

Die max 50MIPS bei Cygnal sind dagegen in Produktionsstückzahlen 
verfügbar, wenn auch mit 19,66$ nicht gerade billig.

Kannst Du nicht Deine militanten Aussagen sein lassen.
Bleib doch mal auf dem Teppich.


Peter

von Andreas Wander (Gast)


Lesenswert?

ich habe erst vor einen monat angefangen mikrocontroller 
zuprogrammieren. ich gebe zu ich es stimmt nicht ganz, ich habe vorher 
mal da was programmiert und mal da ein wenig. aber das war billigkram 
mit LED blinken lassen. dazu hab ich auch nie ein layout entworfen.
jetzt musste ich einen schrittmotortreiber bauen. ich hab ihn jetzt 
fertig. und das ergebnis ist schon richtig gut. 8 motoren die einzeln 
aus WINdoof angesprochen werden können ohne das diese motoren ins 
stocken kommen nur weil gerade noch eine im internet surft :)

für dieses projekt hab ich einen AVR genommen, und ich war auch wirklich 
überzeugt von diesen. vor allem wegen den 32 registern und keinen akku. 
das ist wirklich gut.

ich möchte hier nicht schreiben der avr ist der besste, keine ahnung ob 
das so ist, hab ja NOCH nichts anderes probiert.
hier hab mich jetzt aber auf den 8051 neugierig gemacht. mich hat immer 
abgeschrekt das alle aufbauten die ich gesehen hab mit externen RAM 
waren. aber so wie ich das mitbekommen habe muss das nicht so sein, 
sondern das ist sogar gut. und diese vielfalt interesiert mich. also 
wirklich sehr interesant alles. ich sollte mir noch einen 8051 holen. 
muss ich halt eine höhere programiersprache nehmen, dann merke ich das 
ja mit den akku nicht mehr direkt beim programieren :)

von Michael (Gast)


Lesenswert?

@Micki:
Wenn Du einen Tipp für bessere Compiler hast, den nehme ich gerne an !

@Peter:
Ich habe einen Mega103 mit 6,144MHz betrieben und die Zahlenwerte auf 
12MHz hochgerechnet. Ich hätte auch einen Mega128 direkt betreiben 
können und das gleiche Ergebnis erhalten. Das hätte ich auch so 
behaupten können, wäre aber nicht seriös. Den Mega103 habe ich genommen, 
weil ich gehofft hatte, daß dort schon der MUL-Befehl verwendet wird; 
das ist vermutlich nicht der Fall.
Den 8051 habe ich mit 11,0592MHz betrieben und die Werte auf 12MHz 
hochgerechnet. Es sollte daher ein Leichtes sein, die Zahlenwerte des 
8051 /2 oder /4 oder /12 zu dividieren, um eine Einschätzung für andere 
Derivate zu bekommen.

Deine 100MIPS-Keule ist ja schon auf 50-MIPS geschrumpft; die DSP-Keule 
gräbst Du am besten auch wieder ein. Es gibt auch noch einen DS89C420 
mit 33MHz: etwa 40 Euro.


Die Messungen habe ich für mich gemacht, um etwas Licht ins Dunkel der 
persönlichen Einschätzungen zu bekommen. Ich will und muß niemanden 
etwas 'beweisen', aber ich finde die Leistung der AVR beeindruckend.

Ein Satz ist offensichtlich vor lauter Aufregung überlesen worden, daher 
noch einmal:
> ... , das soll jeder für sich entscheiden.

Und um wieder auf die von Jochen gestellte Frage zurückzukommen: meine 
Empfehlung ist ein AT90S8515 zum Einstieg !

In einem 1/4 Jahr wird wieder jemand diese Frage stellen; dann fängt 
wieder alles von vorne an. Bis dahin !

von Markus Burrer (Gast)


Lesenswert?

Also ich finden den Vergleich OK, auch wenn man nicht genau sagen kann, 
in wie weit der jetzt stimmt. Aber er gibt einem schonmal einen 
Anhaltspunkt, wo man denn so liegt.
Ich werd mal spaßeshalber so ne Rechnung mit dem E-Lab Pascal Compiler 
auf nem neuen Mega mit Hardware Multiplyer machen und mal schauen, was 
dabei rauskommt.
Hat jetzt nix mit Muskelspielen zu tun sondern ist reine Neugier.
Vielleicht kann ja jemand das gleiche für den AVR GCC oder WinAVR machen

von Michael (Gast)


Lesenswert?

@Markus:
Meine Versuche, die Programmiergeschwindigkeit mit einem AVR-Prommer am 
LPT zu erhöhen, haben ergeben, daß man wohl einzelne Pins nicht 
schneller als ca. 1,5us verändern kann. Die Programmierdauer kann 
folglich nicht wesentlich gesteigert werden. Andererseits dürfen auch 
die Bit- und Clocksignale nicht zu kurz werden, um die MPUs mit 
niedrigem Clock nicht zu überrennen. Soweit.

@Micki:
An anderer Stelle hattest Du eine Takteinschätzung bei ATmega128 
gegeben; mit 24MHz macht es richtig Spaß !

von SchillJo (Gast)


Lesenswert?

Hmm....also sehr viel mehr weiß ich jetzt nicht´...;)

Ihr sagt oft, es kommt auf die Nutzung drauf an. Konkret brauche ich 
einen Mikrocontroller, mit welchem ich 3 oder 4 Motoren steuern kann, 
welcher einen AD Wandler besitzt ..?!?! genau... vielleicht könnte man 
anhand dieser angaben den idealen/besseren Controller für diesen Zweck 
ermitteln?!??!

Gruß
SchillJo

von Peter D. (peda)


Lesenswert?

Der T89C51CC01 hat 5* 8bit-PWM und 8* 10bit-ADC.

Die 16kB Flash sind über die UART programmierbar (Atmel Flip-Software). 
Dazu enthält er einen 2kB Bootloader, der nicht versehentlich 
überschrieben werden kann.


Peter

von mikki merten (Gast)


Lesenswert?

Bei denen Vorgaben findest du sowohl bei 8051 als auch beim AVR die 
passenden Prozessoren. Welchen man letztendlich einsetzt hat auch sehr 
viel mit persöhnlichen Vorlieben oder externen Vorgaben zu tun. Schau 
dir mal die Hardwarestruktur, Befehlssätze und verfügbaren 
Entwicklungstools an und treffe dann deine Entscheidung.

von Mäggis (Gast)


Lesenswert?

hmmm hab mir des ganze jetzt mal durchgelesen und hab wieder keine 
ahnung welchen ich nehmen soll...
also nochmal:
ich brauch min 8 ad wandler und einen der mir die daten dann an den pc 
schicken kann...
wenns geht noch n paar digitale eingänge
da ich noch anfänger bin und die programme nicht sehr packen kann sollte 
er auch noch genug speicher haben...
also welchen controller könnt ihr mir jetzt empfehlen?
und was haltet ihr von c-controllern??

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Deine Anforderungen erfüllen praktisch alle Controller-Familien (8051, 
PIC, 68HC11, AVR). Ich würde dir zu einem AVR raten; für Anfänger ist 
das einfach das beste. Man bekommt die benötigte Software völlig 
kostenlos (AVR-Studio, AVR-GCC), die Controller-Auswahl ist 
übersichtlich, sie sind "Bastlern" sehr verbreitet (-> viel Material im 
Web), und sie sind einfach zu programmieren. Für deine Anwendung wäre 
wohl der ATmega16 passend (wegen den 4 PWM-Kanälen zur Motorsteuerung).

Der T89C51CC01 sieht von der Ausstattung her auch interessant aus, ist 
aber leider relativ teuer. Falls er in diesem Fall irgendwelche 
besonderen Vorteile hat, wird der Peter sie dir sicherlich gleich 
aufzählen ;-)

Von der C-Control halte ich (und wohl auch die meisten anderen hier) 
nichts. Ein paar Gründe stehen auf 
http://www.mikrocontroller.net/tutorial.htm.

Gruß
Andreas

von crazy horse (Gast)


Lesenswert?

das war doch ein gutes Wort zum Schluß!
Kannst du jetzt den thread schließen???

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.