Hallo,
ich möchte mich in meiner Freizeit etwas ausgiebiger mit
Mikrocontrollern beschäftigen. Nun suche ich weitere nützliche
Internetseiten oder Lektüre, die mir den Anfang vereinfachen.
Im speziellen suche ich für meine Ansprüche passende Hilfen:
- Ich möchte über USB mit dem Mikrocontroller kommunizieren(Slave reicht
glaube ich), da der Microcontroller erstmal nur zum Messen und Steuern
benutzt werden soll.(Wenn möglich möchte ich dabei natürlich den
direkten Weg ohne USB auf Seriell Wandler oder Ähnliches nehmen)
- Ich möchte nicht mit Assembler programmieren.
Kurz zu meiner Person: Elektronikgrundkenntnisse sowie Erfahrungen mit
den Programmiersprachen Java und Delphi sind vorhanden.
Da ich auch nach etwas längerer Internetrecherche keinen für mich
passenden Einstieg in die Welt der Mikrocontroller gefunden habe, wende
ich mich nun an euch. Im Vorraus schon vielen Dank für die Hilfe.
Das hier schon entdeckt?
http://www.mikrocontroller.net/articles/AVR
z.B. ein Atmega48für die Mess und Steueraufgaben mit FTDI für USB
Kommuniziererei(Ist zwar ein USB->Seriell Wandler aber auf der Platine
schaut auch nur eine USB-Buchse heraus).
Kann in C Programmiert werden.
Somit dürften deine Anforderungen erfüllt sein.
Erst einmal Danke für deinen Beitrag!
Aber ja, dieses nützliche Tutorial hatte ich bereits entdeckt. Mir wäre
es jedoch lieb, wenn ich auf einen USB-> Seriell Wandler verzichten
könnte, da ich wenn möglich gleich den Umgang mit USB-Microkontrollern
lernen möchte.
Mögliche Controller, auf welche ich bei meiner Recherche gestoßen bin
sind z.B. der An2131 oder der CY7C63000.
Auch habe ich schon gefunden, dass die USB Ansteuerung beim AVR schon
teilweise softwareseitig gelöst wurde.
Ich möchte allerdings den Einstieg direkt mit sozusagen für mich
persönlich "zukunfstsicheren" USB-Controllern machen.
Wäre super, wenn weitere Beispiele oder Anregungen von euch kämen.
Danke
>Ich möchte allerdings den Einstieg direkt mit sozusagen für mich>persönlich "zukunfstsicheren" USB-Controllern machen.
Es gibt keine "zukunfstsicheren" USB-Controller.
USB-Seriell Wandler wird es immer geben. Und
USB Controller sind schon mal gar nichts für Anfänger.
Die blinkende LED ist das womit du anfangen solltest.
Moin
eines was du mal machen solltest ist C lernen. das ist zumindest eine
sprache für die zu jeder plattform ein compiler zu finden ist.
usb ist etwas komplexer als die RS232. Wenn man nicht gerade
funktionierenden code verwendet der auf anhib funktioniert ( wo ist da
denn der lernefekt? ) kann das für einen anfänger sicher erst mal
frustierend werden. keine möglichkeiten für leitungsaurzeichnungen (geht
schon nur die messgeräte kosten geld )
gruss.
Cypress ist schon gute wahl, guck dir die CY7C64013C (M8C core) familie
( products/usb/full-speed), oder CY7C680xx, z.b. CY7C68016A (8051 core)
(Products/usb/high speed), oder aber auch die PSoC von Cypress, z.b. den
CY8C24x94 (M8C core).
Sowohl PSoC als auch FX2 sind sehr einfach zu programmieren - auch USB,
für beide gibts tools von Cypress - C und Assembler - PSoC ist
vielleicht einfacher für anfänger - guck dir den PSoC Designer an.
Nimm dir für den Einstieg in die µC-Welt nicht zuviel vor. Das frustiert
nur. USB ist kein triviales Thema, wenn man zu Fuß entwickeln möchte!
Außerdem: Selbst professionelle Entwickler greifen gerne auf FTDI Chips
zurück, wenn man schnelle Ergebnisse erzielen möchte. Es muss ja nicht
unbedingt ein USB->Seriell Wandler sein, FTDI hat z.B. auch
USB->Parallel Bausteine im Angebot.
Vergiss Cypress. Die haben seltsame Chips, seltsame Lieferbedingungen,
Null Support inklusive Falschauskuenfte.
Vergiss USB fuer den Anfang. Einen PC USB Treiber zu schreiben jagt
sogar mir als Profi, seit 25 Jahren im Geschaeft einen Alptraum ein.
Kollegen reden von 2 Monaten minimum. Es gibt allerdings Firmen, die
bieten gegen Bares vorgekaute Loesungen an. zB http://www.thesycon.de
Um dort einsteigen zu koennen muss man alles drum herum schon koennen.
Also eh nichts fuer dich.
Nimm einen USB2Serial, dort erscheint das Device auf der PC Seite als
COMPort, das ist schon mal viel. Auf der Device Seite benoetigt man da
einen UART, was auch fast immer vorhanden ist. Mach dich mal mit UART
und Protokollen vertraut, und erst dann kannst du mal von USB traeumen.
@ ... (Gast)
Das ist ja totaler Blödsinn was du da schreibst. Die Cypress ICs kannst
du überall beziehen, funktionieren auch problemlos(FX2). Support habe
ich bisher noch nicht in Anspruch nehmen müssen, da dass TRF und der
Beispielcode sehr gut sind. Das Bulkloop Demo für den FX1/FX2 ist
wirklich mehr als ausreichend für den Einstieg.
Von Atmel gibt es sehr günstig den AT90USBKey, hier sind die
Dokumentation und der Beispielcode leider sehr schlecht und haben mir
einiges an Kopfzerbrechen bereitet. Aber auch das lässt sich
durchschauen, zumal es bereits einige andere Firmware-Implementierungen
gibt.
Die ganzen USB<->Serial Converter kann ich nicht empfehlen, da diese
auch so ihre Tücken haben(Treiberbugs, schlechte Doku, ...) und man
einfach nicht die Flexibilität hat, die einem ein eigener USB-Controller
bietet.
Treiber braucht man wirklich keinen mehr selber schreiben; es gibt
bereits einige sehr gute Treiber wie LibUSB(Open Source, WinUSB
Microsft, ...) oder man nimmt die HID-Device-Class. Für diese braucht
man zumindest unter Windows keinen eigenen Treiber.
Sorry aber UART ist tot und das ist auch gut so.
Das UART ist noch lange nicht tot und wird das USB ueberleben. Das sieht
man schon daran, dass USB ohne PC schwierig bis aussichtslos ist, mal
von Massenspeichern abgesehen.
Nimm einen Spektrumanalyzer/Oszilloskop mit USB Anschluss und versuch
den von einem Controller auszulesen. Angefangen damit, dass dir das
Protokoll nicht bekannt ist, das User interface nur auf einem PC laeuft,
wird sehr schnell Schluss sein.
Die Aussage "UART ist tot" war etwas übertrieben formuliert.
Sicher für die Kommunikation zwischen ICs auf einer Platine mag eine
RS232 Schnittstelle durchaus sinnvoll sein, zumal fast jeder IC eine
hat.
Allerdings für die Kommunikation mit einem PC - und diese ist fast immer
nötig - hat die RS232 Schnittstelle ausgedient.
USB ist closed source, da muss man schon sehen. Die Verbindung zwischen
device und PC ist nicht oeffentlich. Es gibt auch keine (guenstigen) USB
Analyzer, die da ein Debugging unterstuetzen wuerden. Der PC Treiber/App
gehoert zum Device, ohne den/die ist das USB Interface im Device
wertlos.
Die Verbindung zwischen Device und PC ist weltweit eindeutig bestimmt
und dafuer darf/muss man gehoerig abdruecken.
Sobald die Verbindung zwischen Device und PC oeffentlich ist,
oeffentlich sein kann, oeffentlich sein muss, bietet sich auch noch
Ethernet an. Ethernet bietet auch einen Form der Speisung an. Zudem ist
die Kabellaenge nicht auf 5m beschraenkt. Debugging der Kommunikation
ist Standard.
Fuer viele Device-PC verbindungen ist USB eine Wahl wegen der gegenueber
dem seriellen erhoehten Geschwindigkeit. Fuer viele anderen Anwendungen
mag seriell von der Geschwindigkeit her genuegen. Wenn man mal kurz ein
Geraet konfigurieren muss, ein paar Zahlen verschieben, usw.
Ich habe genuegend (teure) Messgeraete rumstehen mit einem unpassenden
Interface : ein Spektrumanalyzer mit Floppy, ein Scope mit GPIB, usw.
Wir reden in 20 Jahren wieder ueber USB, wenn ich dann ein heutiges
Device an das dannige Windows anschliessen will und keine Applikation,
resp keinen USB Treiber habe, die Firma nicht mehr existiert, usw.
alternative wäre AVR-LAB
www.ullihome.de
das ist ein AVR isp der direkt am USB hängt .. also softwareUSB
es gibt ein projektfile mit dem man selbst die pins beschreiben kann
also den programmer selbst als platform nutzen kann
das selbstgeschriebene kann über das lab- tool eingespielt werden
es ist dann kein zusatzprogrammieradapter nötig
gerade für einsteiger vlt interessant
später lässt er sich als AVRisp MKII clon gebrauchen
mit anderen firmwares als kleines oszi logger usw ....
So nebenbei... ich bin eine alter Sack der heute ein altes Projekt
gebaut anfangs 90 mit GPIB wieder flottkriegen soll. Der zentrale PC ist
ein 486/33 mit ISA karten, eine davon der GPIB controller. Es war sehr
muehsam vom Altmaterialhaendler einen laufenden PC zu bekommen, das
Win95 zusammen mit DOS zu installieren. Weshalb der Aufwand ? Das
Projekt hat immer noch einen Wert ueber einer Million, und ein Neubau
mit modernem PCs, Neuentwicklung der Software ist zwar moeglich, aber zu
teuer. Und es dauert viel, viel laenger.
GPIB hat sich immer noch gehalten, wir haben einen GPIB Analyzer,
koennen zumindest debuggen, wir haben den PC source code, nicht alle
Versionen, aber immerhin.
Leute, wenn ihr in weiteren 20 Jahren ein System mit USB wieder
entmotten solltet ... seht ihr aelter aus als ich jetzt.
Das waren nur ein paar praktische Gedanken...
Zu Cypress. Ich hatte eine Anwendung, die einen USB Hub, einen
Massenspeicher und einen Contoller benoetigte. Wir wollten den
Controller mit USB2Serial an den Hub haengen. Die Wahl fiel auf einen
Cypress hub. Der haette dann noch einen controller drin gehabt, den wir
aber nicht benoetigten. Korrespondenz mit Cypress ergab dass der
contoller nicht aktiv sei, quasi mit dem Booten auf den Reset warte, die
Quadport Hub Funktionalitaet wuerde aber vor dem Booten schon
funktionieren. Mindestbestellmenge 256 stueck, aber ein paar Muster
konnten wir bekommen. Eine Leiterplatte entwickelt, Multilayer, alles
drauf, ging nicht. Der support war sehr schleppend, man wurde vom Einen
zum Naechsten verwiesen, bis wir dann herausfanden, der Controller im
Hub muesste initialisiert sein. Toll. Im QFN Gehaeuse, die benoetigten
PINs nicht mit Pads verbunden, Platz waere eh keiner da gewesen.
In die Tonne. Viel Zeit, viel Arbeit. Waer nicht noetig gewesen.
Mit USB-RS232 Umsetzern kann man doch mit mindestens 921600Baud
arbeiten, das reicht für viele Zwecke.
Den riesen Arbeitsberg, selber USB zu machen habe ich mir bisher noch
nicht ans Bein gebunden, da nicht benötigt.
Wer aber unbedingt will, für den den gibt es für die Atmel 8051 und AVR
mit eingebautem USB fertige Application-Notes.
Ich bin mir allerdings ziemlich sicher, daß die nicht für
Microcontroller-Anfänger geeignet sind.
Wer schonmal nen TCP/IP-Stack selber geschrieben hat, sollte damit
klarkommen. Die Komplexität von USB ist ähnlich.
Peter
also bei UART gegen USB gewinnt UART haushoch. wer sagt den,, dass am
anderen ende immer ein pc hockt? und selbst wenn das ursprünglich so war
muss gsa ja nicht so bleiben. und dann hast mit USB eine leiche vor dir.
Ich hab mit nem Microchip PIC18F4550 angefangen. Gibt super Beispiele
und komplette Projekte für USB dazu. Und bevor jetzt die ganzen AVR-Fans
hier entsetzt aufschreien...ich programmier normal auch mit AVRs, aber
den PIC18 find ich total gut ;-)
Mars wrote:
> Sicher für die Kommunikation zwischen ICs auf einer Platine mag eine> RS232 Schnittstelle durchaus sinnvoll sein, zumal fast jeder IC eine> hat.
Jeder? Also all meine µC haben zwar einen UART, aber keine
RS232-Schnittstelle. Wenn du ernst genommen werden willst, wirf nicht
Begriffe die jeder Anfänger beherrschen sollte in einen Topf und wähle
zufällig einen aus.
> Allerdings für die Kommunikation mit einem PC - und diese ist fast immer> nötig - hat die RS232 Schnittstelle ausgedient.
RS232 schon, aber die Anbindung des UART via USB2Seriell (und nein,
nicht diese fertigen Adapterkabel, es geht hier um ICs wie z.B. den
FT232RL) noch lange nicht.
Gruß
Dominique Görsch
... wrote:
> Sobald die Verbindung zwischen Device und PC oeffentlich ist,> oeffentlich sein kann, oeffentlich sein muss, bietet sich auch noch> Ethernet an. Ethernet bietet auch einen Form der Speisung an. Zudem ist> die Kabellaenge nicht auf 5m beschraenkt. Debugging der Kommunikation> ist Standard.
Ethernet (zumindest TCP/IP darüber) scheidet bei vielen Dingen allen auf
Grund von Latenzen und Jitter aus.