Forum: Mikrocontroller und Digitale Elektronik Welchen Controller soll ich kaufen ???


von Bernd Krautmann (Gast)


Lesenswert?

Hallo Leute,

da ich mich mit Mikrocontrollern bis dato noch nicht richtig auskenne,
mich das Thema aber sehr interessiert stehe ich jetzt, überwältigt vom
Angebot dieser Teile vor einer (für mich) schweren Frage.

Sollte ich mich zuerst den 8051 Derivaten wie z.B. 80C535 widmen
unterstützt von z.B. Bernd vom Berg`s Literatur oder sollte ich einen
AVR nehmen ?

Gibt es Vor- oder Nachteile wenn ich mich mit 8051 Derivaten
auseinandersetze ? Zeitgemäß ?

Welche prinzipiellen Gruppen gibt es noch die sich für den Einstieg
lohnen und mit denen man dennoch interessante Sachen wie z.B. CAN
Anwendungen machen kann ?

Sagt euch Bernd vom Berg was ? Wenn ja was haltet Ihr davon...ganz
objektiv !?

Ich danke euch schon mal für eure Beiträge.

Gruß
Bernd

von Schoaschi (Gast)


Lesenswert?

Mit welchem Controller du Anfängst, hängt davon ab was du damit machen
willst und wieviel du dafür ausgeben willst. Ich selbst arbeite mit
PICs (hab früher mit 8051ern gearbeitet) und da du diese nicht
aufgelistet hast rate ich dir nicht zu diesen, sondern empfehle AVRs.
Sie sind billig, schnell und leicht zu programmieren. Des weiteren gibt
es viel Information und Hilfe zu den AVRs in diesem Forum.

"Welche prinzipiellen Gruppen gibt es noch die sich für den Einstieg
lohnen und mit denen man dennoch interessante Sachen wie z.B. CAN
Anwendungen machen kann ?"
Wie vorher erwähnt arbeite ich mit PICs und kann dir nur von dieser
Seite sagen, dass man (fast) alles damit machen kann. Manche haben
gleich eine CAN- Schnittstelle integriert oder auch andere faxen wie
zb. USB,UART(hat eh schon fast jeder),Ethernet, usw... aber Atmel wird
sicher auch solche Controller anbieten. Mit welchen du anfangen sollst,
kann ich dir also nicht sagen. aber du kannst dir zb einen AVR (zb
ATmega8) kaufen und dein Glück einmal damit probieren. Du könntest aber
vl auch einen Distributer anrufen und fragen ob sie dir nicht vl ein
Exemplar zuschicken würden. Bei Ribu geht das angeblich.
Und falls du vl. auch einmal einen PIC ausprobieren willst, dann kannst
du dir von Microchip ein paar, gratis, Samples zuschicken lassen.
www.microchip.com
In der Linkliste findest du auch sehr gute Seiten bezüglich PICs, da du
hier nicht so viel Hilfe finden wirst.

Und noch zum Schluss:
http://www.mikrocontroller.net/articles/AVR_PIC_51-Vergleich

von Bernd Krautmann (Gast)


Lesenswert?

Servus Schoaschi,

danke erstmal für die schnelle Antwort.
So wie ich dich verstehe ist es im Prinzip eigentlich egal...hängt von
der Anwendung ab. Wenn ich mich jetzt z.B. aber auf das in der
Industrie übliche konzentrieren wollte, was wäre dann das beste, oder
ist es dort auch so, daß es quer beet geht ?

PS:

Ich wollte auch nochmal fragen, ob C167 Prozessoren wieder etwas
eigenes sind oder ob das unter einen der von uns schon genannten
Oberbegriffe fällt und wie relevant diese Prozessoren sind.

Danke schon mal

von Peter D. (peda)


Lesenswert?

"So wie ich dich verstehe ist es im Prinzip eigentlich egal"

Richtig.

Aber wenn Du schon Literatur dazu hast, ist es keine schlechte Idee
auch nen 8051-er zu nehmen. Auch gibt es zum 8051 die meisten Webseiten
(z.B. 8052.com).

Allerdings solltest Du Dir das Leben leicht machen und solche Typen
nehmen, die einen Bootloader haben, z.B. Atmel AT89C51ED2, Philips
P89C668, Maxim DS89C420 usw.
Dann brauchst du nämlich kein extra Programmiergerät.

Hier steht auch einiges dazu:

http://www.mikrocontroller.net/forum/read-1-25968.html#new


"oder ist es dort auch so, daß es quer beet geht"

Ja.
Mit den 8051-ern bist Du aber auch sehr flexibel, da es davon mit
Abstand die meisten Typen gibt und ständig neue entwickelt werden.
Meine ersten 8051-er habe ich z.B. aus defekten Festplatten ausgebaut.


Peter

von Jens (Gast)


Lesenswert?

Ich denke, der 80C535 ist nicht so geeignet, da er doch schon recht alt
ist. Nimm lieber einen neueren Typ, wie Peter sie genannt hat.

von Marco K. (Gast)


Lesenswert?

Servus,

für den Privatgebrauch würd ich dir auch ATMEL AVR empfehlen, allein
schon wegen dem STK500, eine Entwicklungsumgebung für AVR die nur um
die 100€ kostet und natürlich wegen der gut kommentierten kostenlosen
Software (AVR-Studio).

Für die Industrie würd ich allerdings 8051 raten. Diese Controller gibt
es von div. Herstellern mit allem erdenklichen Zubehör.

Gruß Marco

von Bernd Krautmann (Gast)


Lesenswert?

Danke für die Antworten,

was mich jetzt nur noch interessieren würde, ist, wo ich die C167
Prozessoren einordnen soll ?

Danke

von Ruvuz T. Eierfly (Gast)


Lesenswert?

Ich würde auf jeden Fall AVR empfehlen. Ist einfach der am besten
designte. Der 8051 ist zu alt, der MSP ist mit den normalen 5V-ICs
inkompatibel und der PIC ist zu sich selbst inkompatibel.

von dds5 (Gast)


Lesenswert?

Ich betrachte die C166 / C167 als die 16Bit Nachfolger der 8051er. Es
gibt hier im Forum aber bestimmt Leute die das wesentlich genauer
und/oder besser wissen. Einfach mal noch eine Weile auf Postings
warten.

Dieter

von Rufus T. Firefly (Gast)


Lesenswert?

Der 8051 hat als Nachfolger die Intel 80251 sowie Philips 8051-XA.
Beide besitzen spezielle Kompatibilitäts-modi, sodaß sich auch
8051-Assembler-Software ohne großen Aufwand auf ihnen einsetzen läßt.
Weite Verbreitung haben sie aber nicht erfahren.
Die C166/167er dagegen sind völlig unterschiedlich.

von A.K. (Gast)


Lesenswert?

Ich habe grad mal einen Blick in die Philips-XA Referenz geworfen. Die
CPU ist ja ok, wenngleich ich wenig von Segmentierung/Paging und all
dem Gedöns halte mit dem schon Intel krampfhaft 16-bittern grosse
Adressräume nahebringen musste. Aber solange man bei 64KB bleibt ist
das ja egal. Und ein Extra-Lob für die Idee mit den 2 Stackpointern.

Vor allem aber musste ich überrascht feststellen, dass trotz
weitreichenden Neudesigns sich an der reichlich problematischen
Struktur der 8051-er I/O-Ports wenig geändert hat.

Zwar sind die High-Side-Driver der Outputs besser einstellbar, aber an
der für Compiler sehr problematischen Unterschiedung zwischen Latch und
Pin bei Lesen von Ports durch den Character des Befehls hat sich nichts
geändert
(http://www.mikrocontroller.net/articles/AVR_PIC_51-Vergleich#Zugriff_auf_I.2FO-Ports).

Als Intel das anno 8051 so definierte, hat kein Mensch an C-Compiler
gedacht, allenfalls PLM/51 war drin. Kein Vorwurf an Intel also. Aber
wie man ein wesentliches Neudesign heute rausbringen kann ohne diesen
Punkt gradezubiegen, das ist mir unerklärlich.

von buz11 (Gast)


Lesenswert?

Ich hab zwar noch nichts mit den C166/167er gemacht ,
aber mir die Instruction Set Summary angeguckt .
Soo gross finde ich den Unterschied zu den 8051er nicht .
Im gegenteil , die Ähnlichkeiten sind bestimmt nicht rein zufällig .

von Peter D. (peda)


Lesenswert?

@A.K.

"aber an der für Compiler sehr problematischen Unterschiedung zwischen
Latch und Pin bei Lesen von Ports durch den Character des Befehls hat
sich nichts geändert"


Wüßte nicht, was daran problematisch sein soll.
Eher im Gegenteil, Software-I2C oder 1-Wire oder sonstige
bidirektionale Busse werden dadurch einfacher.

Und daß man eben Lasten Low-aktiv ansteuert ist doch nur eine reine
Definitonssache.

Ich hatte jedenfalls bisher nie Probleme damit und programmiere
vorwiegend in C.

Was aber ein großer Vorteil der 8051-er Ports gegenüber den AVRs ist,
daß sie atomar geODERt, geANDet und geXORt werden.


Peter

von A.K. (Gast)


Lesenswert?

Gegen die Ports selbst habe ich nichts. Was mich stört ist der Zugriff
darauf. Dass also MOV A,port den Pin liest, AND port,A jedoch das Latch
(als Bestandteil eines read-modify-write Befehls).

Folge ist, dass ein Statement der Art
  port = port <operator> <value>;
unterschiedliche Ergebnisse zur Folge hat, je nachdem ob es vom
Compiler in eine einzigen Befehl übersetzt wird, oder aus irgendwelchen
Gründen der Port erst gelesen, dann im A modifiziert und wieder
zurückgeschrieben wird. Nachgewiesen beim aktuellen Keil Compiler,
siehe Link oben. Ich kenne einige (non-8051) Compiler, die in solchen
Fällen abhängig von Optimierungsgrad mal die eine mal die andere
Variante ausspucken.

Damit kann man m.E. nur umgehen, wenn man trotz C eigentlich in
Assembler programmert, d.h. Port-I/O zwar in C formuliert, aber stets
genau im Auge hat, was der Compiler für Befehle erzeugt.

Will man das korrekt machen, kann man definieren, dass direkter Zugriff
auf einen Port lesend immer die Pins liest. Was freilich port |= 0x01
sinnlos macht, weshalb dafür spezielle Compiler-Funktionen nach Art
port_set(0x01) notwendig werden. Das ist dann zwar nicht schön, aber
wenigstens mit der Sprachdefinition von C vereinbar. Alternativ kann
man natürlich auch verschiedene Pseudo-Ports definieren, also z.B.
PORTA für's Latch (nur write und read/write möglich) und PINA für die
Pins (readonly).

von A.K. (Gast)


Lesenswert?

Woraus ich eigentlich raus will: Warum gibt's in 51-er oder eben XA
nicht endlich verschiedene SFR Adressen für Pin und Latch. Im Fall von
XA wären es dann 3, eine 51-kompatible und zwei neue für saubere
Programmierung.

von Peter Dannegger (Gast)


Lesenswert?

@A.K.

"Nachgewiesen beim aktuellen Keil Compiler, siehe Link oben."

man muß eben im Hinterkopf behalten, daß nur reine &, | und ^ atomar
sind.
Kombinierte &,| werden daher mit dem Input-Register ausgeführt, was low
getriebene Eingänge falsch setzen kann.

Z.B. um 4 Pins zu setzen (LCD 4Bit) ohne die anderen zu beinflussen
geht folgende Lösung:

P1 &= 0x0F;
P1 |= (i & 0xF0);


Im Prinzip hast Du recht, man könnte mit nur einem weiteren
Portregister, welches immer nur das Ausgangslatch liest, die Sache
bereinigen. Es scheint aber bisher kein echter Leidensdruck in diese
Richtung zu herrschen.


Peter

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.