Noch was: Was ist empfehlenswerter, AVR oder 8051?? Wo liegen Vor- bzw. Nachteile??? Wo liegen die wesentlichen Unterschiede??? Viele Fragen...sorry ;) Gruss SchillJo
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
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
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).
Ü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.
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.
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
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.
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.
@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.
@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
@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.
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
@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.
@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.
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.
@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
@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?
@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.
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/
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
@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.
Immerhin gut eine Minute. Wenn man grad am Testen ist und schon mit den Fingern auf der Tischplatte rumtrommelt eine lange Zeit ;)
Über einen seriellen Bootloader wird das auch nicht schneller gehen.
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.
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
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 !
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 ;-)
@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.
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)
@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
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 :)
@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 !
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
@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ß !
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
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
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.
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??
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.