Forum: Mikrocontroller und Digitale Elektronik Erste Versuche: Serielle Schnittstelle


von Michl (Gast)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von Loeter (Gast)


Lesenswert?

Hallo

von Michl (Gast)


Lesenswert?

@Jobst
Vielen Dank für die Info.

@Loeter
Hallo.

von Julian R. (tuefftler)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

Bei Wikipedia gibt es auch Infos dazu:

http://de.wikipedia.org/wiki/EIA-232


Gruß

Jobst

von Martin (Gast)


Lesenswert?

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.

von Tom M. (tomm) Benutzerseite


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von zahel (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.