Hallo,
ich möchte mich gerne informieren, wie man mit dem AVR und dem PC (bzw.
anderen AVR) Daten austauschen kann. Dazu möchte ich ein kleines Board
bauen, entweder mit einem MAX232 und einem bereits vorhandenen
USB/Seriell-Adapter oder - was mir lieber wäre - gleich mit einem
entsprechenden virtuellen COM Port Chip von FTDI (USB).
Wo gibt es grundlegende Informationen über den Ablauf der Kommunikation?
Welches Programm wird auf dem PC verwendet (Hyperterminal?). Wie
funktioniert das Programm genau, also was macht es? Interpretiert es
einfach die ankommenden Daten als ASCII-Zeichen?
Danke.
Michl
Dem PC ist es egal, ob Du eine in diesem (noch) vorhandene serielle
Schnittstelle oder einen USB-RS232-Adapter benutzt.
Und ob Du nun seriell vom Controller in einen MAX232 und von dort zu der
seriellen Schnittstelle des PCs oder zu einem USB-RS232-Adapter gehst
oder vom Controller direkt in einen USB-seriell-Chip gehst, der an den
PC angeschlossen ist, ist auch egal.
Vom PC werden beide Schnittstellen gleich behandelt und liegen dem
Benutzer dann als COM-Port vor.
Zur Kommunikation zwischen zwei Controllern bietet sich die serielle
Schnittstelle an, da sonst einer der Controller mit einem
USB-Host-Interface ausgestattet werden müsste.
Terminalprogramme interpretieren die Zeichen als ASCII + Steuerzeichen.
Wenn Du vom Controller also die Bytes 0x48 0x61 0x6C 0x6C 0x6F auf die
serielle Schnittstelle schickst, wird im Terminalfenster 'Hallo'
angezeigt.
Gruß
Jobst
Hallo Michl,
Michl schrieb:> ich möchte mich gerne informieren, wie man mit dem AVR und dem PC (bzw.> anderen AVR) Daten austauschen kann. Dazu möchte ich ein kleines Board> bauen, entweder mit einem MAX232 und einem bereits vorhandenen> USB/Seriell-Adapter oder - was mir lieber wäre - gleich mit einem> entsprechenden virtuellen COM Port Chip von FTDI (USB).
Also ich hab bisher nur mit RS232 gearbeitet, MAX232 und dann an den
AVR. Da ich das PollinBoard nutze, wo ein MAX232 schon verbaut ist, ist
das ganze recht einfach.
> Wo gibt es grundlegende Informationen über den Ablauf der Kommunikation?> Welches Programm wird auf dem PC verwendet (Hyperterminal?). Wie> funktioniert das Programm genau, also was macht es? Interpretiert es> einfach die ankommenden Daten als ASCII-Zeichen?
Grundlegende Info: AVR-Tutorial: UART
Wie das bei USB abläuft weiß ich nicht. Bei RS232 kann man die Zeichen
mit z.B. HTerm aufzeichnen, und auch senden. Das Prgramm "HTerm" kann
die ankommenden Zeichen als Hex, ASCII, Bin und Dez - Zahlen darstellen.
Wie das Programm sich an die Serielle genau dranhäftet ist doch nicht
relevant, wenn man mi µC arbeitet. Falls du doch etwas eigenes auf dem
PC laufen lassen willst, es gibt für Java ein Plugin, mit dem man die
Serielle steuern kann!
Aber wofür brauchst du das??
julian
Jobst M. schrieb:> Zur Kommunikation zwischen zwei Controllern bietet sich die serielle> Schnittstelle an, da sonst einer der Controller mit einem> USB-Host-Interface ausgestattet werden müsste.
Da ist die Welt schon ein bisschen vielfältiger. Für die serielle
Kommunikation zwischen zwei Baugruppen fallen mir so spontan vier
verschiedene serielle Schnittstellen ein:
1. Asynchron/Synchron über USART
2. CAN
3. TWI
4. SPI
Was sinnvoll ist, hängt von der Art der Kommunikation, von der Datenrate
und Länge der Übertragungsstrecke und auch von anderen im System
vorhandenen Komponenten ab.
Michl schrieb:> Dazu möchte ich ein kleines Board> bauen, entweder mit einem MAX232 und einem bereits vorhandenen> USB/Seriell-Adapter oder - was mir lieber wäre - gleich mit einem> entsprechenden virtuellen COM Port Chip von FTDI (USB).
Oder du nimmst gleich einen AVR mit eingebautem USB Transceiver; damit
sparst du dir den FTDI, musst aber die USB HID Software selbst
implementieren (SW gibt's u.a. schon fixfertig bei Atmel, siehe
Application Note AVR328).
atmega16U4 und AT90USB1287 sind solche Exemplare. Gibt noch mehr davon,
die haben alle ein U oder USB im Namen.
> Wo gibt es grundlegende Informationen über den Ablauf der Kommunikation?USB schon gesehen? :)
> mit dem AVR und dem PC (bzw. anderen AVR) Daten austauschen
USB eignet sich nicht für die Kommunikation unter den MCs, bzw. es wäre
enormer overhead, USB einzusetzen.
Martin schrieb:> Für die serielle> Kommunikation zwischen zwei Baugruppen fallen mir so spontan vier> verschiedene serielle Schnittstellen ein:
Ich habe den TO so verstanden, daß er eine Baugruppe vor allem an den PC
anschliessen und evtl. mit anderen Controllern verbinden möchte.
Zuzüglich der Frage nach einem Terminalprogramm, lässt das für mich nur
den Schluß von UART/RS232 zu.
Sicherlich kann man Controller auf andere Art und Weise untereinander
verbinden. Die selbe Schnittstelle schliesst aber den Anschluss an einen
PC nur unter Verwendung eines Terminalprogramms weitestgehend aus.
Gruß
Jobst
Also die Aussage:
Jobst M. schrieb:
> Dem PC ist es egal, ob Du eine in diesem (noch) vorhandene serielle> Schnittstelle oder einen USB-RS232-Adapter benutzt.
will ich hier mal nicht so stehen lassen. Denn das ist a) eine Frage des
Betriebssystems b) eine Frage der verwendeten Chip-Sätze und c) des in
Fragekommenden USB->RS232 Adapters.
Unter den neueren Windows Versionen (Vista, 7, ...) kann nicht unbedingt
jedes Programm ordentlich auf die echten Seriellen Ports zugreifen,
billige USB->Serial Adapter haben manchmal probleme mit den Timings und
meist nur Treiber für Windows. Eine echte Serielle ist mir persönlich da
das liebste.
@Michl:
ich glaub man kann dir besser Helfen, wenn du dein späteres Ziel nennst
und mit welcher Sprache du die AVR's Programmierst.
Ansonsten machen Terminal-Programme wie HyperTerminal abstrahiert nichts
anders als Eingehende Datenpakete (Array of Bytes) zu Empfangen und
Anzuzeigen, und Eingegebende Daten wieder als Datenpakete(Array of
Bytes) wieder raus zuschicken. Wie welche Bytes interpretiert werden,
hängt dann vom verwendetem Protokoll ab, und da gibt es viele. Dabei ist
zubeachten das so ein Protokoll nicht nur aus Anzeigbaren Zeichen,
sondern auch aus Steuer-Befehlen besteht (wie z.B.: Zeilenumbruch,
Clear, ...).
Ist aber die Frage ob du wirklich so tief in die Materie einsteigen
willst, oder nur "Hallo Welt!" an dein AVR schicken willst um es dann
auf einem LCD Anzuzeigen oder so.
Jobst M. schrieb:> Ich habe den TO so verstanden, daß er eine Baugruppe vor allem an den PC> anschliessen und evtl. mit anderen Controllern verbinden möchte.
Gerade wenn der TO Controller untereinander verbinden möchte, macht es
die Sache wesentlich handlicher, wenn er dafür nicht den USART
verwendet. Sonst ist er ewig am Umstecken, wenn er einen µC über einen
Bootloader programmieren möchte und hat keine direkt PC-taugliche
Schnittstelle frei, weil der (meist) einzige USART durch die
Prozessor-Prozessor Kommunikation belegt ist.
Martin schrieb:> Gerade wenn der TO Controller untereinander verbinden möchte, macht es> die Sache wesentlich handlicher, wenn er dafür nicht den USART> verwendet. Sonst ist er ewig am Umstecken, wenn er einen µC über einen> Bootloader programmieren möchte und hat keine direkt PC-taugliche> Schnittstelle frei, weil der (meist) einzige USART durch die> Prozessor-Prozessor Kommunikation belegt ist.
Ja, das stimmt soweit. Aber ich verstehe das so, daß der TO einen
Controller an einen PC anstecken möchte ODER mit der selben
Schnittstelle an einen anderen Controller.
(Ich hoffe, daß man dies nun nicht mehr missverstehen kann)
Kann aber sein, daß ich die Absichten des TO falsch verstanden habe. Das
wird sich aber noch klären.
zahel schrieb:> Also die Aussage:> Jobst M. schrieb:>> Dem PC ist es egal, ob Du eine in diesem (noch) vorhandene serielle>> Schnittstelle oder einen USB-RS232-Adapter benutzt.>> will ich hier mal nicht so stehen lassen.
Naja, wenn alles so funktioniert, wie es funktionieren sollte, ist es
egal.
Ich kann und will hier nicht bei generellen Antworten gleich auf alle
möglichen Problemchen und Wehwehchen eingehen. Die kann man im konkreten
Fall einkreisen.
Wenn der PC kaputt ist, geht es im übrigen auch nicht ...
(Nur mal so als wichtiger Hinweis)
Gruß
Jobst