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