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
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
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
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
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
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.
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...
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.
@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
"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
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.
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
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
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ü
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.
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.
@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
@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
"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
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?
???
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
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
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