Hallo zusammen, ich bin auf der Suche nach einem passenden Microcontroller. Er soll folgende Merkmale besitzen: - 32 I/O-Pins - serielle Schnittstelle (die beiden Pins zählen nicht zu den 32!) Ich habe bisher sowohl 8051 als auch AVR's programmiert, bin da also nicht festgelegt - sind von den Befehlen her ja eh fast gleich, wenn man C nimmt. Zu der seriellen Schnittstelle hätte ich noch ne Frage: Die RS232-Schnittstelle von PC's arbeitet ja - laut verschiedener Homepages - mit +-12 V. Muss ich die dann erstmal noch transformieren, bevor ich die Signale an den µC gebe (wahrscheinlich schon)? Ach ja, bisher hab ich eigentlich immer irgendwelche StarterKits oder ähnliches gehabt, wo man sich einfach per Kabel aufgesteckt hatte zum Programmieren des Controllers. Das möchte ich diesesmal nicht, da ich mehr als einen Controller brauchen werde. Hat jemand (zum entsprechenden Controller) Vorschläge für Programmierschaltungen? Vielen Dank schonmal im voraus fürs lesen und viele Grüße
Für die serielle Schnittstelle brauchst du einen Pegelwandler (keinen Transformator...). Auf www.atmel.com gibt es einen "parametric table", den man wunderschön nach den gesuchten Parametern sortieren kann. Um es gleich vorwegzunehmen: Benutze einen Baudratenquarz (das sind die mit den "komischen" "ungerade" Frequenzen)! Das verhindert eine Menge Unanehmlichkeiten, auch wenn es ein paar Leute gibt, die keine Probleme damit haben, den internen RC-Oszillator zu benutzen. Vorschlag wäre ein Mega16 oder 32 (40Pins; DIP-Gehäuse verfügbar).
Hallo, "Für die serielle Schnittstelle brauchst du einen Pegelwandler (keinen Transformator...)." wenn ich etwas ausfühlicher werden darf: die Mikrocontroller haben einen Spannungspegel an den Ports, wie eben ihre Spannungsversorgung ist. Also z.B. 5V bei high und 0V bei low. Bei der RS232 Übertragung werden aber ca. +10V und -10V für die Übertragung auf dem Bus benutzt. Damit wird das ganze störsicherer. Zudem wird das Signal invertiert. Delhalb brauchst Du einen RS232-Baustein (z.B. ST232), der aus 0V -> +10V und aus 5V -> -10V für den Bus generiert. am anderen Ende sitzt dann wieder ein RS232-Treiber, der aus +10V -> 0V und aus -10V -> 5V macht. Dieses Signal benutzt dann z.B. der PC intern. Der PC hatden RS232-Treiber aber integriert, so daß auf dieser Seite nicht zusätzlich gemacht werden muß. Gruß Wolfgang -- www.ibweinmann.de
Hallo ihr zwei, danke für die Antworten. Okay, wegen der RS232 Geschichte schau ich nochmal. Nochmal kurz zum Mega16 (bzw. 32): Da steht maximal 32 I/O-Ports. Im Datenblatt sind dann zwei Pins davon für TX und RX belegt (das ist doch die serielle Schnittstelle, oder). Damit fallen die Beiden aber leider für mich aus, da ich wirklich 32 Ports für E/A brauche... Aber ich werd morgen nochmal schauen in der Liste. Viele Grüße
es gibt noch die 'aufgemotzten' mega32: ATMega3250 und ATMega329. Die haben insgesamt 68 bzw. 53 I/O Leitungen (alle I/O's inklusive). Kosten bei www.csd-electronics.de ca. 6 Euro.
Alles klar, danke für den Tipp. Dann mach ich mich mal auf die Suche nach Programmierschaltungen. Viele Grüße
> Dann mach ich mich mal auf die Suche nach > Programmierschaltungen. Schau mal im Tutorial hier auf der Seite, da wirst du schnell fündig.
>da ich wirklich 32 Ports für E/A brauche... Wofür? 32Tasten? 32 LEDs? In der Regel kann man das mit einer gewissen Menge Periferie (Schieberegister o.ä) erschlagen.
Guten Morgen :-) @Tobias: Danke für den Tipp, der Programmer für 15,90 hört sich ned schlecht an. Aber dazu hätte ich gleich noch ne Verständnisfrage: Wenn ich so einen Programmer habe, muss ich den dann tatsächlich einfach nur mit den entsprechenden Pins (des ISP-Interfaces) des µC verbinden, oder braucht der Controller nicht auch eine Art Programm, damit er weiß, wie er mit den Daten, die er von dem Programmer bekommt, umgehen soll? Das habe ich - trotz mehrfachem lesens verschiedener Artikel - immer noch nicht so ganz verstanden ehrlich gesagt. Oder ist es so, dass der Controller (wenn er InSystemProgramming unterstützt) bei negativem Reset in einen Modus geht, wo der Programmer dann in den Speicher des Controllers schreiben kann? @inoffizieller WM-Rahul: Folgende Situation: Wir haben hier Generatoren, die über eine optische Schnittstelle (LightBus der Firma Beckhoff) angesprochen werden. Das Steuerprogramm läuft auf DOS. Jetzt soll dieses Programm auf Windows 2000 portiert werden. Das Problem ist, dass Beckhoff zwar Karten für Windows 2000 zur Verfügung stellt, aber um diese zu verwenden braucht man erstens einen extra Treiber (den man zusätzlich zur Karte kaufen muss) und zweitens geht das dann nur über deren Software - was natürlich auch nicht ganz unser Anliegen ist. In den Generatoren sitzen Wandler von LightBus nach I/O. Und diese haben eben 16 Ein- und 16 Ausgänge. Jetzt war unsere Idee, dass wir diese Wandler ausbauen und stattdessen einen Microcontroller einbauen, der vom PC aus per serieller Schnittstelle angesprochen wird. Das hätte weiterhin den Vorteil, dass man dann ein Programm für alte und neue (die haben schon ein serielles Interface) Generatoren hätte, das die gleichen Befehle sendet, unabhängig davon, ob alte oder neue Generatoren verwendet werden. Das heißt, der Controller macht dann sozusagen die Umsetzung von seriell nach I/O. Und genau deshalb brauche ich auch 32 Pins. Natürlich könnte man z.B. Decoder an weniger Pins am Controller anschließen, aber 1. bräuchte man die Decoder dann erstmal und 2. hat dann der Controller nicht die Möglichkeit mehrere Pins gleichzeitig zu beeinflussen, wenn diese am gleichen Decoder hängen. Oder hab ich da nen Denkfehler drin? Danke schonmal für eure Antworten und viele Grüße
Wenn Du 34 IOs brauchst, da gibts einige von Atmel: AT89C51CC01 AT89C51ID2 Der Vorteil ist, wenn Du sowieso ne UART ranstöpselst, kannst Du die darüber auch programmieren (interner Bootloader). Ein Programmiergerät ist völlig überflüssig ! RS-232 Pegelkonverter sind MAX202 usw. Peter
Ein Mega8515 im (für Jeden benutzbaren) DIL40-Gehäuse sollte geeignet sein. Die 2 Portpins, die die serielle Schnittstelle von PortD blockiert, können durch 2 (der 3 vorhandenen) Portpins von PortE ausgeglichen werden. Da UART (serielle Schnittstelle) im Spiel ist, sollte grundsätzlich auch ein baudratentauglicher Quarz verwendet werden, z.B. 3,6864 MHz. Dann wird ein Pegelwandler für RS232 benötigt (MAX232 oder dessen Plagiate). Die Software dürfte auch kein Problem sein, denn ich vermute mal, dass man mit seriellen Telegrammen Bits an den 16 binären Ausgängen setzt/löscht und die 16 binären Eingänge einliest. ...
Laut Beckhoff hat der Lightbus 2,5MBit/s... Oder sehe ich jetzt die falsche Anwendungsseite?
"hat dann der Controller nicht die Möglichkeit mehrere Pins gleichzeitig zu beeinflussen, wenn diese am gleichen Decoder hängen." Kann der Controller auch nicht. Er kann nur byteweise zugreifen, d.h. nacheinander die Port setzen und damit hast Du einige µs Verzögerung. Wenn Gleichzeitigkeit gefordert ist, empfehle ich die 74HC595 als Porterweiterung. Da werden mit dem Registerclock alle Ausgänge exakt gleichzeitig gesetzt (~1ns genau). Peter
Hallo zusammen, @PeDa Der Tipp mit den C51er war gut. Wenn ich das richtig verstanden habe (wenn nicht korrigiert mich bitte), brauche ich nur vor dem Reset den EA-Pin auf high ziehen und PSEN auf low, damit ich den Controller programmieren kann. Aber wie verbinde ich die Leitungen vom PC? Einfach nur RX-PC mit TX-µC und umgekehrt (okay, vorher Pegelwandler, is klar)? HanneS: Danke, werd ihn mir auch mal anschauen (warum muss es nur so viele verschiedene Versionen geben!?) @inoffizieller WM-Rahul Richtig. Aber nachdem wir uns dann (mit dem Controller) komplett vom LightBus verabschieden brauchen wir darauf ja keine Rücksicht nehmen. Für die Steuerung der Generatoren brauchen wir keine 2,5 Mb @Peter Naja, zumindest 8 Pins kann ich doch wirklich zeitgleich ansprechen, oder? Das würde mir reichen. Und noch an alle: bitte entschuldigt die vielen Fragen, ist das erste Mal, dass ich kein Starter-Paket nehme und sehr viel habe ich mit denen auch noch nicht gemacht. Vielen Dank für die Antworten und viele Grüße
Wenn sowieso auf ein anderes System umgebaut werden soll, sollte man vielleicht auch gleich überlegen, ob man dem ganzen Spaß nicht noch ein "aktuelles" Interface verpasst. Ich könnte mir vorstellen, dass eine (industrial) Ethernet-Schnittstelle praktisch wäre. Oder ist die Schnittstelle nur für den Service notwendig?
Hallo inoffizieller WM-Rahul, die Schnittstelle ist nicht für den Service gedacht, sondern um die Generatoren anzusteuern. Dazu sollte ich vielleicht sagen, dass das keine Generatoren in Kraftwerken sind, sondern Prüfgeneratoren für Blitzschutzprüfungen. Sprich, der Generator kriegt vom Rechner den Befehl "lade eine Spannung von 10 kV". Das macht der Generator und wartet anschließend, bis er die Testfreigabe vom Rechner bekommt (die Elektronik, die hinter dem Laden usw. steht ist schon vorhanden). Warum wir auf die serielle Schnittstelle umstellen ist ganz einfach: 1. Das Beckhoff-System ist nicht praktikabel 2. Die neuen Generatoren haben schon eine serielle Schnittstelle (irgendwann hat wohl der Hersteller der Generatoren wohl gemerkt, dass LightBus nicht so toll ist...) 3. Wir haben hier einen Wandler seriell->optisch, den man relativ günstig nachbauen kann. Ist für uns wichtig, dass der Rechner vor eventuell auftretenden Überspannungen geschützt ist (deswegen eben optisch entkoppelt) Viele Grüße
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.