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
@Andreas www.avrfreaks.net/avrgcc/ gib's den Compiler, Doku etc. www.mikrocontroller.com gib's ein Board Reiner
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
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.