Forum: Mikrocontroller und Digitale Elektronik Welcher Microcontroller ???


von Andreas (Gast)


Lesenswert?

Hallo,

ich möchte nach Jahren der Abstinenz mal wieder mit der 
Mikrocontroller/prozessor-Programmierung beginnen.
Hierbei ist mir nicht klar, welchen Microprozessor ich einsetzen soll 
damit ich den größtmöglichen Lerneffekt erziele.

Zur Zeit favorisiere ich einen Microprozessor auf 386er-Basis bei 
www.elektronikladen.de. Hierbei ist ein Dos-Light vorhanden, wodurch 
gewisse Standardfunktionen schon integriert sind.
Der Vorteil dabei ist auch, daß jeder Compiler, der auf einem 
handelsüblichen PC läuft, eingesetzt werden kann.
Hier bin ich mir aber nicht sicher, ob dies die richtige Wahl ist.

Erfahrung habe ich mit den Typen Intel (8080/8085/8086 usw.) und 
Motorola (68000) in C/C++ und Assembler.

Als Bedingung sollte sein, Programmierung in C++ und ein 
Experimentierboard.

Ansonsten bin ich für weitere Vorschläge offen.

Danke




Andreas

von Eckhard (Gast)


Lesenswert?

Hi,

also zu den Intels würde ich mal sagen, das Du nur die alten Dos 
Varianten nehmen kannst, die gibt es aber größtenteils immer noch und 
zwar Kostelos.
Für 68K kannst Du ja mal hier schauen 
http://www.elektronik.vhf.de/index.htmld/. Da kann man dann auch nen GCC 
und GDB zum laufen bringen.

Eckhard

von Peter D. (peda)


Lesenswert?

Hallo Andreas,

die Hautpfrage, von der alles abhängt, ist die, welche Art von 
Anwendungen Du überhaupt damit programmieren willst.

Geht es vorrangig um Automatisierung zu Hause, kann vieles z.B. ein 
ATtiny15 machen und vor allem wesentlich kleiner und stromsparender.

Für ein richtiges PC-kompatibles Stromfresser-Board müßte man sich aber 
schon größere Anwendungen einfallen lassen, um es auch sinnvoll zu 
nutzen.


In der Automatisierungstechnik ist auch der Trend weg vom einzelnen 
Superprozessor und den vielen dicken störanfälligen Kabelbäumen 
überallhin.
Es werden einfach die Aufgaben auf mehrere kleine Microcontroller 
aufgeteilt, die dann alle parallel an einem robusten seriellen Bus 
hängen. z.B. T89C51CC02 am CAN-Bus. Und irgendwo steht dann ein PC, der 
aber hauptsächlich nur nur die Administration (Konfigurierung, 
Protokollierung) macht, d.h. keinerlei Echtzeitprobleme.


Peter

von Reiner (Gast)


Lesenswert?

Hallo Andreas,
ich glaub ich nerv bestimmt den einen oder anderen, wenn ich schon 
wieder vom M16C62 oder M16C80 anfange. Bei Glyn kannst Du ein Board mit 
dem 16Biter inkl. Assembler, C-Compiler, Toolmanager etc. für nur 49,- 
Euro bekommen und wenn Du nach der Freischaltung für den Compiler fragst 
bekommst Du die auch noch. Er hat viel gemeinsam mit dem 68k, nur ist er 
viel günstiger und schön kompakt.

Ich hab gerade heut wieder ein Board mit dem M16C80 (20MHz), 1MB SRAM, 4 
PIO mit je 3 Ports, 2 MAX3232 fertiggestellt und das braucht gerade mal 
75mA @ 5V.

siehe unter www.glyn.de

Reiner

von Michael (Gast)


Lesenswert?

Hallo Andreas,

Peter und Reiner haben sich ja schon in meinem Sinne geäußert. Wenn Du 
auf PC-Basis arbeiten möchtest (DOS o.ä.) wirst Du x86 CPU verwenden 
müssen, wenn nicht, laß die Finger davon !
Der Vorzug von Microcontrollern ist die hohe Funktionalität wie I/O, 
ser. Schnittstellen (Bussysteme), Timer, PWM, ADC, +++ bei geringer 
Stromaufnahme und wenig Zusatzhardware; zudem auch die 'Freiheit' von 
Standardbetriebssystemen, die einem den Blick auf das Wesentliche 
verbauen können (gesperrte Interrupts).
Eine Programmierung mit C++ in den Vordergrund zu stellen, ist m.E. 
fragwürdig; ich habe es nie gebraucht, vielleicht auch, weil ich nie 
begriffen habe, daß ich es brauche. Aber ein Programm für 
Microcontroller, dessen Laufzeitverhalten nicht eindeutig absehbar ist 
(dynamische Vererbung, garbage collection), ist für mich nicht 
brauchbar: ich habe es gerne schnell - nicht immer nur schön.

Persönlich mag ich AVRs und Hitachi-MPUs (H8S/xxxx); als Tipp: achte 
darauf, daß Dein Micro-Kandidat von GNU-CC (C/C++) unterstützt wird. 
Dann ist ein Umstieg auf unterschiedliche Typen/Hersteller relativ 
einfach.

Gruß Michael

von Andreas (Gast)


Lesenswert?

Hallo an alle,

erst mal danke für die Antworten und Entschuldigung, daß ich mich erst 
jetzt melde. War einige Tage unterwegs.

Ich will auf keinen Fall irgendein Motherboard eines Pc einsetzen. Bei 
dem von mir beschriebenen Teil handelt es sich um ein Board in der Größe 
einer Zigarettenschachtel. Hat nur ein mini-dos integriert.

Handelt sich auch um reine private Anwendungen, die ich mit dem guten 
alten 8085 mit Sicherheit locker hinbekommen würde. Habe nur keine Lust 
mit so einem alten Teil zu arbeiten.
Eine Anwendung ist z.B. die Steuerung eines Fütterungsautomaten und 
Teichs. Also nichts zeitkritisches und selbst mit der langsamsten 
Taktfrequenz noch machbar.

Bedingung war auch nicht direkt C++. Vererbung und solche Geschichten 
ist nicht so wichtig. Aber C sollte es auf jeden Fall sein. Ich möchte 
mich nicht mit so Grundproblemen rumschlagen wie, "wie multipliziere ich 
zwei float-Zahlen in Assembler miteinander". Darum soll sich der 
Compiler kümmern.
Außerdem will ich die Software in C erstellen, weil es einfach schneller 
geht. Ich habe jahrelang in Assembler programmiert. Mein Hintergrund ist 
nicht den Microprozessor in jeder Einzelheit kennenzulernen sondern ein 
bischen Spass zu haben.
Angedacht war auch mal in ferner Zukunft auf diesem Dingen, nur so zum 
Test, mehr als ein Task laufen zu lassen (2-3).

@Michael:
Mit dem GNU-C++ programmiere ich zur Zeit auf dem PC. Deshalb würde ich 
den auch gern für den MC nehmen. Muß nicht C++ sein. Woher bekomme ich 
denn die entsprechenden Liabrarys für den MC, wenn ich das ganze auf dem 
PC compiliere?
Woher bekomme ich AVRs und Hitachi-MPUs ?

@Peter:
Will auch nicht alles auf einen Prozesor verlagern sondern schon für 
jede Anwendung einen eigenen. Zum Testen sollte er mal zeigen ob ich da 
auch Multitasking hinkriege.

Für 49,- Euro kann man nicht viel verkehrt machen zum testen.

Mein Anliegen war allerdings mehr zu erfahren, ob ihr mir generell von 
dem 386er-Teil abratet aus welchen Gründen auch immer (wie z.B. von 
Michael mit den evtl. gesperrten Interrupts, oder es ist aus diesem oder 
jenen Grund vorteilhaft nicht auf einzelne Funktionen des Dos-Light 
zuzugreifen).
Oder vielleicht hat jemand damit schon mal gearbeitet.

Mich reizt dabei auch das komplette Board bzw. die Zusatzmodule die 
erhätlich sind. Ich will nämlich nicht anfangen und für den MC erst eine 
Platine zu entwickeln. Kleinere Zusatzschaltungen könnte ich 
akzeptieren, aber nicht für den MC selbst.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Mit einem AVR kannst du da sicher nichts falsch machen. Als Compiler am 
besten AVR-GCC, der ist kostenlos und es gibt mehrere 
Multitasking-Systeme. Die notwendige externe Beschaltung ist minimal, 
die paar Bauteile passen auf ein kleines Stück Lochraster, so dass du 
eigentlich keine "echte" Platine brauchst.
Die Zusatzhardware ist auch einfach zu basteln: wenn du kleine Motoren 
ansteuern willst schließt du einfach einen L293D an einen PWM-Ausgang 
an, Relais kann man mit einem FET oder ULN2803 schalten, 
Temperatursensor über I2C usw...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

DOS heißt doch "_Disk_ Operating System". Brauchst du für dein Vorhaben 
eine Festplatte? Na also ;-)
Und Multitasking wird von Haus aus auch nicht unterstützt.

Ein anderes Problem ist, dass diese DOS-Module nur ziemlich 
"bastlerunfreundliche" Schnittstellen zur Außenwelt besitzen. Was willst 
du in einer Teichsteuerung mit einem parallelen 3V-Datenbus oder einem 
PC-Parallelport anfangen? Viel sinnvoller sind z.B. wie bei den AVRs 
integrierte PWM-Kanäle, die ohne Rechenzeit zu verschwenden "im 
Hintergrund" laufen, oder Analog-Eingänge.

von Reiner (Gast)


Lesenswert?

@Andreas

Wenn es doch nur um so "kleine" Dinge geht wie den Teichautomaten, 
kannst Du auch den AVR damit langweilen :-))
Sollstest Du überhaupt keine Bock auf selber ein Board basteln haben, 
kannst Du auf der www.mikrocontroller.com nachsehen. Die bieten ein 
günstiges und sehr vielseitiges Platinchen an.

Was ich z.B. an dem AVR (oder PIC) nicht mag ist diese blöde Prozedur, 
wenn Daten aus dem ROM/FLASH gelesen (Strings), aber nicht ins RAM 
kopiert werden sollen. Ist einfach blöd, wenn zwei Sub's benötigt werden 
um einmal Strings aus dem RAM und aus dem FLASH zu verarbeiten. Diesen 
Sch.... gibt es beim M16C nicht. Allerdings weiss ich nicht, ob es den 
gcc dafür gibt. Ich verwende den ANSI-C von Mitsubishi.
Ansonsten ist der ATMEL echt ein super Teil.

Reiner

von Andreas (Gast)


Lesenswert?

"Disk Operating System" stimmt. Aber bei dem ist das Dos im Eprom 
integriert. Man kann zusätzliche FP und LW anschliessen. Dein 
compiliertes Programm wird über die serielle Schnittstelle durch ein 
mitgeliefertes Terminalprogramm übertragen.

Aber o.k. hast mich überzeugt mit dem AVR und AVR-GCC als Compiler.

Woher bekomme ich jetzt erst einmal ein fertiges Experimentierboard? 
Gebraucht oder Neu spielt keine Rolle. Will im Moment noch nicht 
anfangen zu basteln und Platinen aufzubauen. Wenn, dann soll die Platine 
auch keine fliegende Verdrahtung haben. Dafür muß ich mich aber erst in 
Eagle einarbeiten (Hier habe ich zumindest schon den Download 
geschafft).

Die nachfolgende Frage ist eingentlich blöd, da ich sie auch "ergooglen" 
könnte, aber da ich im Moment nur begrenzt Zeit habe und bevor ich lange 
rumsuche, frage ich lieber: Woher bekomme ich Datenblätter für den AVR 
und Peripherie. Insbesondere für die Motoransteuerung interessiert mich 
die Peripherie. Mein eigentlicher Gedanke war, die Motoren über eine SPS 
anzusteuern (Ich weiss, mit Kanonen auf Spatzen geschossen. Aber habe so 
ein Ding noch im Keller liegen). Hier wollte ich über serielle 
Schnittstelle der SPS mitteilen, welchen Ausgang sie zu setzen hat. Aber 
die Idee dies direkt mit dem MC zu machen, gefällt mir eigentlich 
besser.

Ich benötige doch Librarys für den GCC speziell zum AVR. Woher bekomme 
ich die denn?

Danke

Andreas

von Reiner (Gast)


Lesenswert?

@Andreas

www.avrfreaks.net/avrgcc/   gib's den Compiler, Doku etc.
www.mikrocontroller.com     gib's ein Board

Reiner

von Andreas (Gast)


Lesenswert?

Hallo Reiner,

danke.

Unsere Beiträge hatten sich überschnitten.
Als ich meinen Senf dazu gegeben hatte, habe ich deinen Hinweis über 
www.microcontroller.com noch nicht gesehen.

Werde mal auf Suche gehen.

von Michael (Gast)


Lesenswert?

Hallo Andreas,

da Du gefragt hattest: 
http://www.hitachi-eu.com/hel/ecg/products/micro/8_16bit/index.html. 
Hier gibts es Datenblätter und auch eine CD-ROM zu ordern, die einen GCC 
für H8, H8S und SH CPUs enthält, sowie eine Liste von Distributoren: 
MSC, Neumüller-Fenner z.B.

Für Deinen Hausgebrauch solltest Du einen AVR nehmen - einen anderen Rat 
wirst Du auf dieser Seite kaum bekommen! Und fange einfach an; viele 
Deiner Fragen erledigen sich dann von selbst, bzw. können hier neu 
gestellt werden.

Michael

von Andreas (Gast)


Lesenswert?

Hallo Michael,

Danke.
AVR-Testboard ist schon bestellt.
Habe mir auch heute morgen gedacht. Anfangen und Ausprobieren und dann 
selber sehen was sinnvoll ist.

Danke

Andreas

von Michael Mü (Gast)


Lesenswert?

Hallo,

im großen und ganzen stehe ich wie Andreas zu seinem ersten Statement 
da. Vor mir tut sich eine "nendliche" Welt von Microcontrollern auf, 
doch welcher überwiegt nun mit den meissten Vorteilen. So bin ich auf 
der Suche nach der Antwort "Welcher Microcontroller" auf diese Seite 
hier gestossen, und möchte meine Frage denn auch so gleich los werden.

Hat irgendjemand Erfahrung mit Pic's und AVR's zugleich ??? Bei welchem 
der beiden lohnt sich der umfassende Einstieg??? Habe bei Pic's von 
integrierten AD- und DA-Wandlern gelesen, von integrierten USB und ISDN 
Schnittstellen und einem sehr kleinen Umfang was den Quelltext betrifft. 
Vom AVR hingegen weiss ich nur von einem umfangreicheren Quelltext, der 
es erleichtern soll, kompliziertere Prozesse abzuarbeiten.

Kann mir irgendjemand weiterhelfen???

MfG Mü

von Markus Burrer (Gast)


Lesenswert?

Hi Mü,
also das die Auswahl an exotischer Peripherie bei den PIC's größer ist 
stimmt schon. Problem ist nur, das die meisten PIC's jeweils nur einen 
kleinen Teil davon drin haben.
Das mit dem Umfangreichen Quelltext bei den AVR ist mir neu. Das einzige 
was ich mir vorstellen könnte was gemeint ist wäre das es keinen MOV 
Befehl gibt um einen Wert direkt irgendwohin schreiben zu können. Man 
muß meistens erst ein Register laden. Aber das wars dann auch schon.
Und in einer Hochsprache mehrkt man nix davon.
Da finde ich bei den PIC's viel schlimmer das der Speicher in Banks 
unterteilt ist und das man da immer hin und her schalten muß. Aber auch 
davon merkt man bei einer Hochsprache nix.
Speichermäßig hören die PIC's bei 32kB auf, mittlerweile gibt es glaub 
ich ein paar ganz wenige mit mehr. Die AVR gehen bis 128kB 
Programmspeicher, ein 256kB AVR ist in Planung.
Kurz gesagt, wenn nicht unbedingt eine der "Sonderfunktionen" der PIC's 
braucht oder die extern mit einem AVR verbinden kann  sollte man auf 
einen AVR zurückgreifen weil die schneller und universeller sind. PIC's 
sind für Massenproduktionen optimiert.

von AndreasH (Gast)


Lesenswert?

Vielleicht kann ich hier als ursprünglicher Initiator dieses Threads 
meinen Beitrag dazugeben.

Habe mich in den letzten Monaten intensiv mit AVR´s und 80C537 sowie 
80C166 beschäftigt.
Vom Verständnis vielen mir die Infineons leichter. Liegt aber auch mit 
Sicherheit daran, daß ich mit seit Jahren mit 8080/8085 usw. auskenne.
Vom Preis und von der Möglichkeit der Flash-Programmierung bin ich von 
den AVR´s begeistert. Das Prinzip "alles was nicht gebraucht wird, muß 
auch nicht gekauft werden" ist super.
So kann je nach Anwendungsfall, schon für 4 € ein 2313 eingesetzt 
werden, während der 80C537 bei 16€ liegt.
Habe mittlerweile auch schon die ersten Testläufe auf einem AVR-STK 200 
erfolgreich hinter mir.
Allerdings alles in C, so daß ich für beide Controller flexibel mit. Mit 
der Assembler-Programmierung habe ich mich aus reiner Faulheit nur 
oberflächlich beschäftigt.
Als nächstes werde ich eine Schaltung mit uP, LM75 und LM298 aufbauen 
als Regelung für einen Lüftermotor. Hier ist ein AVR schon zu 
verdonnert. Das heißt allerdings nicht, daß ich den 80Cxxx ganz aufgeben 
werde. Wenn ich bei den AVR´s je nach Anwendung in die preisliche 
Richtung der anderen Controller komme, werde ich diese auch ausführlich 
testen.

Zu den Pic´s kann ich Dir nichts sagen.

von Noggi (Gast)


Lesenswert?

Hab grad gesehen das es hier billige AVR's gibt
http://www.embedit.de/phpnuke

von Peter D. (peda)


Lesenswert?

@Andreas,

den 80Cxxx kannst Du aber ruhig in die Kiste kloppen.
Die ROM-losen sind mir jedenfalls zu umständlich (3 Chips notwendig).

Nimm statt dessen lieber die Atmel Flash 8051-er.
Z.B. der AT89S8252 ist billig und über den Druckerport programmierbar.
Dann hat Atmel noch die T89C51xxx Serie (über COM programmierbar)

Warum der 80C537 so verbreitet war, kann ich mir nicht erklären. Da gabs 
wohl mal ganz billig ein Entwicklungsboard damit ?


Peter

von AndreasH (Gast)


Lesenswert?

@peter:

Hat der denn genau die gleichen Assembler-Befehle wie die von Infineon? 
Oder sind das eigene?

Habe mir das Buch AVR-Risc-Microcontroller von W. Tampert gekauft. Auf 
diesen Typ wird aber nicht eingegangen.

Wo erfahre ich mehr darüber?

Danke

von Peter D. (peda)


Lesenswert?

"Hat der denn genau die gleichen Assembler-Befehle wie die von Infineon? 
Oder sind das eigene?"

Ja, der gehört auch zur 8051-Familie, aber eben mit Flash.
Auf der Keil-Webseite kannst Du z.B. alle 8051-Hersteller und Typen 
finden:

http://www.keil.com/dd/8051chips.asp


In einem AVR-Buch wirst Du auch kaum einen Verweis auf 8051-er finden.



Peter

von AndreasH (Gast)


Lesenswert?

Erstmal Danke für die Antwort.

Jetzt mußt Du mich aber mal aufklären.
Warum stehen die denn nicht in einem AVR-Buch?
Ich hatte gedacht, da die auch von Atmel sind, hätte was darüber darin 
stehen können.

Oder warum denke ich in die falsche Richtung?

von Peter D. (peda)


Lesenswert?

???

Oben klang es so, als hättest Du mit dem AVR schon was gemacht.

Dann müßtest Du doch wissen, daß die AVRs (z.B. AT90S2313) und die 
8051-er (z.B. 80C537, AT89S8252) 2 völlig verschiedene Familien sind.

Deshalb findest Du ja im 8051-Buch auch nichts über AVRs oder ARMs oder 
was Atmel sonst noch so alles herstellt.


Peter

von AndreasH (Gast)


Lesenswert?

Ja habe schon was mit den AVR´s gemacht. Nur noch nicht mit 80xxx.

Hatte auch irgendwo so halb aus verschiedenen Beiträgen mitbekommen, das 
es da was gleiches zwischen 8051 und Atmel gibt.
Hatte mich bisher aber darum noch nicht gekümmert.

Meine Vermutung war jetzt, da beide mit AT anfangen, daß hier irgend was 
gleich ist.
Dass die Controller von Infineon und AVR komplett anders sind, hatte ich 
schon rausgefunden.

Ich wollte mir jetzt, um mit den 8051 zu spielen, einen neuen Epromer 
zulegen. Dies werde ich aber Dank Deines Hinweises erst einmal 
zurückstellen.

Bei den AVR habe ich die Software mit avrdude ins Flash geladen. Kannst 
Du mir vielleicht noch sagen, wie das mit den AT89Sxxxx geht?
Mit welchem C-Compiler kann ich die programmieren (ausser mit dem Keil)? 
Habe schon mal was von einem SDCC gehört, weiss aber nicht ob der was 
ist.
Ist erstmal für private Anwendungen, deshalb will ich mir nicht den 
teuren Keil kaufen. Mit der Demo-Version 2K wird man wohl auch nicht 
weit kommen.

Danke

von Peter D. (peda)


Lesenswert?

Atmel ist doch nur der Hersteller, ist doch klar, daß der alle seine ICs 
mit AT anfangen läßt, z.B. EEPROMs AT24C1024.
Atmel hat Themic geschluckt, deshalb fangen einige Atmels auch T an.



Die MC-Familien heißen 8051 bzw. AVR.

Wenn Du was mit dem 80C537 gemacht hast, gehört der zu den 8051-ern. 
D.h. er ist völlig Code-kompatibel, hat aber einige Erweiterungen in den 
SFRs. Wenn Du nen Flash 8051-er mit PWM und ADCs brauchst, ist z.B. der 
T89C51CC01 geeignet.


Mit 2kB kann man z.B. das hier machen:

http://www.specs.de/users/danni/appl/soft/c51/thclock/index.htm


EPROM-Programmer würde ich mir heutzutage generell nicht mehr antun. Da 
ist einfach die Auswahl an ISP (In System Programmierbar) Flash zu groß.


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.