Forum: Mikrocontroller und Digitale Elektronik UART Atmega 644


von Steffen H. (stef_fen)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich möchte gerne die UART Schnittstelle vom Atmega 644 nutzen. Dazu habe 
ich das Testprogramm und die Library von Peter Fleury genommen. Leider 
bekomme ich keine Kommunikation zustande. Als Taktquelle für den Atmega 
kommt ein 20MHz Quarz mit 22pF Kondensatoren zum Einsatz. Als Terminal 
Programm nutze ich das von Windows XP Hyper Terminal. Verbindung 
herstellen über COM1, Bits pro Sekunde 9600, Datenbits 8, Parität keine, 
Stoppbits 1, Flusssteuerung kein und dann unter Eigenschaften -> 
Einstellungen -> ASCII-Konfiguration -> Eingehende Zeichen lokal 
ausgeben. Als UART/RS232-Wandler habe ich schon den MAX232EPE und den 
MAX232ECPE getestet. Ein Oszilloskop hatte ich auch schon an den TX Pin 
gegen GND. Da zeigt sich auch am Anfang etwas. Woran kann es liegen?


Vielen Dank. Gruß Steffen

von Daniel V. (danvet)


Lesenswert?


von Falk B. (falk)


Lesenswert?


von Stefan (Gast)


Lesenswert?

Nimm den ATMega aus dem Sockel (oder verbinde den Reset Eingang mit 
Gnd). Verbinde Pin 14 mit Pin 15.

Dann solltest Du am PC alle zeichen als echo zurück kommen sehen, die du 
sendest. Wenn das nicht der fall ist, ist die Strecke vom max232 
(einschließlich) bis zum PC fehlerhaft.

Wenn es funktioniert, ist dein Programm fehlerhaft, im einfachsten Fall 
falscher Bitrate. Häng LED's an die beiden Leitungen, dann siehst Du, ob 
überhaupt etwas gesendet/empfangen wird. Wenn Tx LED nicht flackert, 
dann sendet dein Programm nichts.

von amateur (Gast)


Lesenswert?

Wahrscheinlich an den Sicherungen oder im Programm.

Das Handbuch sagt zu AVCC:
It should be externally connected to VCC, even if the ADC is not used.

Spendier denen, die helfen wollen, Deine Initialisierungsroutinen, oder 
eine Glaskugel.

von Dietrich L. (dietrichl)


Lesenswert?

Steffen Ha schrieb:
> Verbindung
> herstellen über COM1, Bits pro Sekunde 9600, Datenbits 8, Parität keine,
> Stoppbits 1, Flusssteuerung kein und dann unter Eigenschaften ->
> Einstellungen -> ASCII-Konfiguration -> Eingehende Zeichen lokal
                                          ^^^^^^^^^^
> ausgeben.
Meinst Du nicht "Eingegebene Zeichen ..." (=lokales Echo)? Das solltest 
Du abschalten.

Was macht Dein Programm? Sendet es alleine oder "kopiert" es die 
empfangenen Daten?

> Ein Oszilloskop hatte ich auch schon an den TX Pin gegen GND.

TX am µC? Wenn ja: hast Du das Signal dann verfolgt bzw. was kommt aus 
den MAX auf der RS232-Seite heraus?

Gruß Dietrich

von Steffen H. (stef_fen)


Lesenswert?

Mit dem MAX232 passiert nichts wenn ich den Controller rausziehe und Pin 
14/15 brücke.

Ziehe ich den MAX232 aus der Fassung und tausche ihn gegen einen 
Mini-USB zu UART-Konverter vom Conrad so kann ich im Termianl etwas 
eingeben. Wenn ich im Terminal etwas eingebe, angenommen 123 und dann 
Enter drücke springt der Cursor (Unterstrich) unter die 1. Ist das so 
richtig?

Danke. Gruß Steffen

von Karl H. (kbuchegg)


Lesenswert?

Steffen Ha schrieb:

> Ziehe ich den MAX232 aus der Fassung und tausche ihn gegen einen
> Mini-USB zu UART-Konverter vom Conrad so kann ich im Termianl etwas
> eingeben. Wenn ich im Terminal etwas eingebe, angenommen 123 und dann
> Enter drücke springt der Cursor (Unterstrich) unter die 1. Ist das so
> richtig?

Ja das ist grundsätzlich richtig.
Das Terminal interpretiert einfach alles genau so wie du es tippst.

wenn du also einfach nur die oberste Buchstabenreihe auf deiner 
Tastastur durchgehst und jede Taste drückst und auf deinem Terminal 
steht

qwertzuiop

dann passt das.
Gegenprobe: die Schaltung abklemmen und an deinem Terminal darf sich 
nichts mehr tun, wenn du auf irgendeine Taste drückst.

Wenn dem so ist, dann passt das.
Und mit deiner Schaltung mit dem MAX232 muss das ganz genau gleich 
funktionieren. Im Idealfall hast du im µC-Sockel eine Brücke: Alles was 
auf der einen Seite rauskommt, wird 1:1 auf der anderen Seite sofort 
wieder zurückgeschickt.
Solange das bei dir nicht funktioniert, brauchst du gar nicht 
weitersuchen.

von Karl H. (kbuchegg)


Lesenswert?

Hast du dir den von Falk schon geposteten Link

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

schon mal angesehen?
Da gibt es einen Abschnitt, wie man Fehlern in der UART auf die Spur 
kommt.
Erst mal wird die Hardware durchgetestet (das ist MAX + Kabel). Das muss 
passen, sonst ist alles weitere sinnlos.

von Karl H. (kbuchegg)


Lesenswert?

PS: Wie auch im Link beschrieben, ist eine banale LED + 220Ohm 
Vorwiderstand eine wirklich brauchbare 'Messvorrichtung' um das UART 
Signal auf seinem Weg zu verfolgen.

Also: Leg einen Stein auf die PC-Tastatur (Dauersenden) und verfolg das 
Signal vom PC_Anschluss durch das Kabel bis zum Max - bis zum Sockel und 
wieder zurück. Die blinkende LED zeigt dir an, wo es noch da ist und ab 
wo es nicht mehr da ist. Bei den kleinen Baudraten bis hinauf zu 9600 
sieht man die LED wunderbar vor sich hinblinken.

von Blackbird (Gast)


Lesenswert?

Muß C23 nicht an Masse und C24 an +5V?

Blackbird

von Karl H. (kbuchegg)


Lesenswert?

Blackbird schrieb:
> Muß C23 nicht an Masse und C24 an +5V?

Das sieht man mal so und mal so.

Tatsächlich spielt das nicht so sehr die Rolle, wenn man sich klar 
macht, welche Funktion der Pin hat.
An V+ legt der MAX seine gepumpten 10V raus mit der Bitte, die mit einem 
C zu stabilisieren. Ob du nun mit dem Kondensator nach 0V den Ripple 
wegfilterst, oder nach +5V, das schenkt sich nichts. Die eine Spannung 
ist (hoffentlich) so stabil wie die andere und solange sie nur kleiner 
als die 10V sind, die der MAX selber erzeugt (wegen der Polung des 
Elkos), wirkt der Elko genauso als Tiefpass. In deinem einen Fall legen 
10V Spannungsdifferenz am Elko, im anderen Fall nur 5V.

Für V- und C24 sinngemäss anders rum.

Tatsächlich schlägt auch Maxim im Datenblatt die Beschaltung von C23 
nach +5V vor.

von Steffen H. (stef_fen)


Lesenswert?

Ich habe den MAX232 jetzt gegen den Mini-USB zu UART-Konverter getauscht 
da mein Laptop kein RS232 hat. Die Kommunikation funktioniert bis zum 
Sockel des uC wenn ich da eine Brücke reinstecke, also bei Pin 14/15. 
Die Fuses habe ich auch noch mal überprüft Extended: 0xFF, High 0xD9 und 
Low 0xFF. Jetzt muss es noch am Programm liegen.

von Dietrich L. (dietrichl)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tatsächlich schlägt auch Maxim im Datenblatt die Beschaltung von C23
> nach +5V vor.

...und TI macht was anders. Dort soll er nach GND. Ich habe sogar mal 
gehört, dass das bei TI auch so sein muss (leider ohne Quelle).

Gruß Dietrich

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.