Hallo Community, ist zwischen euch jemand dabei, der sich mit UART auskennt? Ich bin am verzweifeln. Zu beginn habe ich meine ICs mit einem Bootloader und einem USB-UART Port von myAVR bespielt und auch damit Daten versand. Da ich irgendwann aber nicht mehr mit diesem Einsteigerset von myAVR arbeiten wollte habe ich angefangen mit Programmiergeräten und ohne Bootloader zu arbeiten. Alles wunderbar, bin immer an mein Ziel gekommen. Für mein nächstes Projekt benötige ich jedoch eine Serielle Verbindung und egal was ich probiere, die Verbindung kommt nicht zustande... Erstmal zu meiner Ausstattung: -Ich habe mir eine Platine zusammengelötet, auf der ich soweit alle Standartteile habe, die ich benötige (Transistoren, Quarze usw). Mit Steckverbindern kann ich mir meine Aufbauten zum testen immer schnell zusammenstecken. Der verbaute IC ist ein AtMega8. -Ich verwende das Programmiergerät "DIAMEX PROG-S", funktioniert einwandfrei -Programme schreibe und brenne ich mit AVRStudio4 (bisher nie Probleme gehabt) -Um die UART verbindung zu testen habe ich mir Termite geladen -Ich verwende den max232 zur umformumg -Da mein Laptop nur USB anschlüsse hat, verwende ich den USB Serial Adapter von DeLock http://www.reichelt.de/USB-Konverter/DELOCK-61856/3/index.html?&ACTION=3&LA=446&ARTICLE=108881&GROUPID=6105&artnr=DELOCK+61856 Bisher habe ich folgendes Versucht: Ich habe mehrere Programm-Codes aus dem Netz gezogen und ausprobiert. Die Programme sollten ganz einfach Zeichen senden oder ähnliches. Eines war beispielsweise Beitrag "ATmega8 UART (Assembler) Daten empfangen / senden" Programm draufgeladen, Fuses gesetzt, Schnittstelle bei Termite konfiguriert und gehofft das was kommt. Nie geschafft. Kennt sich jemand mit den typischen Fehlerquellen bei UART aus und könnte sie mir nennen? Ich habe bisher viel rumprobiert und weiß nicht, wie ich meine Fehlersuche weiter fortsetzen soll. Vielleicht hat ja jemand einen "Plan" zur Fehlersuche im Petto, damit ich den Fehler lokalisieren kann! Achja, ich habe schon mehrere Codes probiert, aber solltet ihr noch irgend ein Beispiel im Netz kennen, das eine einfache UART Funktion gibt, bin ich immer dankbar für hinweise!
Du solltest Dir einen Logicanalyzer zulegen, oder ein digitales Oszilloskop. Damit kannst Du dann messen, was auf Deiner seriellen Schnittstelle los ist, ob sich da überhaupt was tut, ob die richtigen Daten gesendet werden, ob die Bitrate die ist, die Du erwartest, usw usw. Ohne das stocherst Du nur im Dunkeln rum. Dann nimmst Du Dir das Datenblatt und liest den entsprechenden Abschnitt und versuchst zu verstehen, was da vor sich geht und was Du machen musst und wieso. fchk
>Kennt sich jemand mit den typischen Fehlerquellen bei UART aus und >könnte sie mir nennen? RxD, TxD nicht gekreutzt oder GND vergessen. Dürfte 99% abdecken.
>-Ich verwende den max232 zur umformumg
Oder der ist falsch angeschlossen.
Schaltplan zeigen.
Frank K. schrieb: > Du solltest Dir einen Logicanalyzer zulegen, oder ein digitales > Oszilloskop. Damit kannst Du dann messen, was auf Deiner seriellen > Schnittstelle los ist, ob sich da überhaupt was tut, ob die richtigen > Daten gesendet werden, ob die Bitrate die ist, die Du erwartest, usw > usw. Ohne das stocherst Du nur im Dunkeln rum. > Quatsch. Das ist nur mit Kanonen auf Spatzen schiessen. > Achja, ich habe schon mehrere Codes probiert, aber solltet ihr noch > irgend ein Beispiel im Netz kennen, das eine einfache UART Funktion > gibt, bin ich immer dankbar für hinweise! Erstmal die Checkliste. Dann Drahtbrücke über Rx und Tx, den Controller aus der Fassung ziehen und mit dem Terminal senden, Wenn es sein Echo empfängt, ist bis dahin alles OK. Dann das gleiche im Controller: Mit Terminal senden, Receive pollen und das Byte wieder zurück schicken. Wenn das nicht geht, stimmt zu 99,9516% etwas mit deinem Takt nicht. Bei mir wären es dann die fehlenden 0,0484%, weil ich mal wieder Rx und Tx vertauscht habe. mfg.
Hi Weitere bekannte Fehler: falsche Baudrate, keine externe Taktgenerierung. Die beschriebene Vorgehensweise bisher liefert dir eine Antwort, ob die Kabel richtig sind und der Max korrekt arbeitet. Wenn du mit Assembler arbeitest, dann lies das entsprechende Tutorial über USART. Wenn dir das noch nicht reicht, bei der Konkurenz AVR-Praxis-Forum steht auch ein Beittrag, "Keine Angst vor Assembler" im FAQ , der diese SChnittstelle auch beschreibt. Gruß oldmax
Thomas Eckmann schrieb: > Frank K. schrieb: >> Du solltest Dir einen Logicanalyzer zulegen, oder ein digitales >> Oszilloskop. > Quatsch. Das ist nur mit Kanonen auf Spatzen schiessen. Finde ich nicht. Fehlersuche ohne Oszilloskop ist in der Elektronik wie wenn du nur auf Zuruf "Rechts!" oder "Links!" Autofahren würdest: kann sein, dass es klappt, aber es ist sehr anstrendend. Mit einem Oszi sehe ich in 30 Sekunden, ob und was eine serielle Schnitte tut. Klar kann es nicht schaden, wenn man vorher das Hirn einschaltet und schon mal überlegt, was da jetzt wie passieren soll...
Hi Nun ja, ein Oszi ist natürlich ein bewährtes Messgerät in der Elektronik und sicherlich auch wichtig, aber auch teuer. Oftmals folgt einem Billigkauf ein weiterer. Und bevor hier ein Glaubenskrieg "Nur mit Oszi ist man in der Lage... " ausbricht, es geht auch ohne. Der Weg ist bereits erklärt. Man kann manchmal aber auch allein mit einer LED feststellen, ob ein Controller Daten empfangen hat. Dazu ist ja im Tutorial beschrieben, wie ein Empfang per Interrupt parametriert ist. Ein wenig Kopfarbeit, lesen und experimentierren, dann klappt das auch. Meine erste Datenübertragung ging auch ohne Oszi nach Anleitung aus diesem Tutorial. Nicht auf Anhieb, aber nachdem der Quarz den Takt vorgab, die Berechnung der Baudrate richtig parametriert und die Kopfblockade gelöst war, hat's funktioniert. Man kann hier tausendmal etwas wiederholen, es ist im Prinzip alles im Tutorial enthalten. Auch, wie zu Testzwecken eine LED verwurstet wird. Man muss es halt lesen, dafür ist es gemacht. Gruß oldmax
Lothar Miller schrieb: > Mit einem Oszi sehe ich in 30 Sekunden, ob und was eine serielle > Schnitte tut Naja, der für jemand mit Erfahrung mag das stimmen, aber für einen Anfänger der gerade seinen ersten uC programmiert bekommen hat...
Es ist eigentlich nicht so schwer eine USART zu debuggen. 3 Themenkreise: * die Pegelanpassung. der normalerweise benutzte MAX muss korrekt verschaltet sein. Das lässt sich mit einem Voltmeter tadellos testen. Mit ein wenig Erfahrung kann man dazu auch eine LED nehmen und aus der Helligkeit (bei für 12V errechnetem Vorwiderstand) abschätzen, ob die Spannungspegel so in etwa passen oder nicht. Auf 1V wird man natürlich nicht genau, aber den Unterschied zwischen ca 10V und ca 5V sieht man schon * Kabel nicht korrekt ausgekreuzt Auch hier kann wieder die LED zum Einsatz kommen, gleich nach dem Loopback-Test. Bei langsamen Baudraten kann man die Signale auf der jeweiligen Tx Leitung wunderbar mit lediglich einer LED verfolgen. Das ist überhaupt kein Problem. Gestandene Administratoren hatten in grauer Vorzeit immer einen Zwischenstecker für die RS232 in der Schublade liegen, der mit 4 LED bestückt war. Kurz eingestoppelt und man sah wunderbar ob die Leitung korrekt gekreuzt war oder nicht. Ein nicht korrekt gekreuztes Kabel erkennt man daran, dass gar nichts geht. * Baudrate Im Gegensatz zur falschen Kreuzung macht sich eine falsche Baudrate dadurch bemerkbar, dass zwar an der Gegenstelle was ankommt, allerdings das falsche. Auf einem AVR ist eine falsche Baudrate praktisch immer auf eine falsche bzw. fehlerhafte µC-Taktfrequenz zurückzuführen. Gerade bei den letzten beiden Punkt ist es vernünftig, einen Kommunikationspartner der USART-Verbindung durch ein vertrauenswürdiges Gerät zu ersetzen. D.h. es ist absoluter Unfug, die USARTs 2-er AVR miteinander zu verbinden und zu denken man kriegt raus, warum das nicht geht. Für die eine Seite nimmt man einen PC, denn dessen USART ist getestet und funktioniert. Auch nimmt man für erste Tests ein Terminalprogramm oder hTerm, so dass man sieht, was (wenn überhaupt) von der Seriellen ausgelesen wird. Die erste zu testende Übertragungsrichtung ist µC zu PC, mit Anzeige im Terminal (und nicht umgekehrt). Läuft diese Richtung, dann läuft auch die andere Richtung im Normalfall auf Anhieb. Wenn nicht, dann hat man beim Empfangscode auf dem AVR einen Fehler. Auf die Art und mit ein wenig Nachdenken und ohne in Panik zu verfallen, kriegt man jede USART zum Laufen, bzw. findet raus wo das Problem liegt und was zu tun ist. Mit nicht viel mehr als einer LED als Hilfsmittel. Und PS: timo, Standard schreibt sich hinten mit einem D und nicht mit einem T. Das ist keine Stand-Art (also die Kunst des Stehens oder die Kunst einen Messestand aufzubauen, und mit einer Standarte aus dem Militär hat das auch nichts zu tun)
:
Bearbeitet durch User
holger schrieb: >>-Ich verwende den max232 zur umformumg > > Oder der ist falsch angeschlossen. > Schaltplan zeigen. http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_nullmodemkabel/rs232_max232_atmega8_nullmodem_v04.gif Der Schaltplan entspricht meiner Schaltung mit kleinen Ausnahmen: 1.C6 ist nicht vorhanden, da ich keine Referenzspannung brauche (Muss die angeschlossen sein?) 2.Pin 7 und 8 beim SUB-D Stecker sind getauscht. 3.Ich benutze keine 1uF ELKOs sondern unipolare 1uF Kondesatoren, der Effekt sollte aber der selbe sein. Habe ich denn ein Nullmodem Kabel?! Ich habe diesen Adapter http://www.reichelt.de/USB-Konverter/DELOCK-61856/3/index.html?&ACTION=3&LA=446&ARTICLE=108881&GROUPID=6105&artnr=DELOCK+61856. Ist ein Nullmodem Kabel oder?
>2.Pin 7 und 8 beim SUB-D Stecker sind getauscht. Bringt gar nichts. Wenn dann Pin 2 und 3 tauschen. >Habe ich denn ein Nullmodem Kabel?! Ich habe diesen Adapter Das ist kein Nullmodem.
timo k. schrieb: > holger schrieb: >>>-Ich verwende den max232 zur umformumg >> >> Oder der ist falsch angeschlossen. >> Schaltplan zeigen. > > http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_nullmodemkabel/rs232_max232_atmega8_nullmodem_v04.gif > > Der Schaltplan entspricht meiner Schaltung mit kleinen Ausnahmen: > 1.C6 ist nicht vorhanden, da ich keine Referenzspannung brauche (Muss > die angeschlossen sein?) Was hat AVcc mit der Referenzspannung zu tun? AVcc ist die Stromversorgung des Ports, an dem die ADC Eingänge liegen. Und zwar auch dann, wenn der ADC gar nicht benutzt wird! Dann versorgt AVcc die digitalen Ausgänge mit Strom. > 2.Pin 7 und 8 beim SUB-D Stecker sind getauscht. Ist zwar keine so gute Idee, denn die Belegung von CTS/RTS sollte mit der Belegung von Rxd und Txd harmonieren. Wenn die falsche Belegung dir beim Handshake auf dem PC nicht in die Suppe spuckt, dann ist es ok. Einfacher wäre es, wenn Pin 7 und 8 gar nicht angeschlossen wären. Dann hat man eben kein Handshake. Aber auch keinen Ärger mit falschen Pegeln an der falschen Leitung. > 3.Ich benutze keine 1uF ELKOs sondern unipolare 1uF Kondesatoren, der > Effekt sollte aber der selbe sein. Was sagt der Hersteller des MAX dazu? > Habe ich denn ein Nullmodem Kabel?! Ich habe diesen Adapter > http://www.reichelt.de/USB-Konverter/DELOCK-61856/3/index.html?&ACTION=3&LA=446&ARTICLE=108881&GROUPID=6105&artnr=DELOCK+61856. > Ist ein Nullmodem Kabel oder? Probier es aus! Zieh den MAX aus dem Sockel, starte auf dem PC ein Terminalprogramm und leg auf einen Stein auf die Tastatur. Dann siegst du nach, an welchem Pin vom MAX die seriellen Daten ankommen. Mit einer LED + 220Ohm gegen Masse verschaltet, sieht man die wunderbar blinken. Wenns der falsche Pin ist, dann ist auch das Kabel falsch gekreuzt. Ist doch nicht so schwer. AUf dem PC kommen an seinem TxD Pin die Daten rausgeflitzt und an deiner Eingangsbeschaltung müssen die an RxD wieder reinflitzen.
:
Bearbeitet durch User
Zu den ELKOs: Beitrag "MAX232 - Kondensatoren" Darauf habe ich mich berufen. Zu AVCC: Also ist egal das ich die nicht belegt habe
>Zu AVCC: >Also ist egal das ich die nicht belegt habe Nein, AVCC muss angeschlossen werden. Alle GND auch. Da darf nichts offen bleiben. Wer das nicht tut darf sich über Nebenwirkungen nicht wundern.
Habe jetzt Kabelbelegung geprüft. MAX232 - PC-Seite Stimmt. Von MAX232 - Atmega ist aber komisch. Ich bekomme ein Dauersignal auf die Pins T1In und R1Out
:
Bearbeitet durch User
Lothar Miller schrieb: > Thomas Eckmann schrieb: >> Frank K. schrieb: >>> Du solltest Dir einen Logicanalyzer zulegen, oder ein digitales >>> Oszilloskop. >> Quatsch. Das ist nur mit Kanonen auf Spatzen schiessen. > Finde ich nicht. Fehlersuche ohne Oszilloskop ist in der Elektronik wie > wenn du nur auf Zuruf "Rechts!" oder "Links!" Autofahren würdest: kann > sein, dass es klappt, aber es ist sehr anstrendend. > Mit einem Oszi sehe ich in 30 Sekunden, ob und was eine serielle > Schnitte tut. Klar kann es nicht schaden, wenn man vorher das Hirn > einschaltet und schon mal überlegt, was da jetzt wie passieren soll... Ich auch. Aber ich muss mir auch nicht extra einen kaufen. Für einen Hobbyelektroniker, der seine Kommunikation mit dem PC nicht zu laufen kriegt, ist das aber keine Empfehlung, sondern einfach nur Gelaber. mfg.
Hi Vielleicht mal etwas grundsätzliches.... T = Transmit, also das wo die Bits seriell ausgegeben werden. R = Read. Demnach ist TxD mit RxD zuverbinden. Um zu wissen, wo auf den Pins einer Com oder RS 232 Schnittstelle TxD und RxD bei den 9pol. Sub-D Steckern liegen, Google fragen. Dann entsprechend ein einfaches 3 adriges Kabel nehmen und GND mit GND, 2 mit 3 und 3 mit 2 verbinden. Vom Controller zum MAX und vom MAX zum Ste´cker wird nix gekreuzt. Dann sollte auch der Test mit der Brücke und anschließend mit dem Controller auch klappen. Gruß oldmax
:
Bearbeitet durch User
>> Du solltest Dir einen Logicanalyzer zulegen, oder ein digitales >> Oszilloskop. Damit kannst Du dann messen, was auf Deiner seriellen >> Schnittstelle los ist. >Quatsch. Das ist nur mit Kanonen auf Spatzen schiessen. Und, immer noch dieser Meinung. So ein Meßgerät hätte viele Fragen überflüssig gemacht. Schon für 300 Euro kann man ganz regulär ein einfaches aber dennoch sehr hilfreiches Oszilloskop bekommen. Das ist für Kinder und Azubis sicher schon eine Menge Geld, aber gut investiertes. > Oftmals folgt einem Billigkauf ein weiterer. Mag sein. Das bedeutet aber nicht, dass die preisgünstigen Geräte nichts taugen.
Also ich kann mir so ein Teil nicht kaufen. Ist halt nur ein Hobby und mach das auch nur abends nach der Arbeit. Wenn jetzt demnächst das Studium anfängt habe ich noch weniger Kohlen... :( Verbindung steht, nachdem ich mal alle Eure Posts durchgearbeitet habe. Ich bedanke mich bei allen die mir geholfen haben! Fehlerzusammenfassung: -Adapter ist kein Nullmodemkabel, Schaltung ist für Nullmodemkabel. Lsg: PIN 2 u 3 an SUB-D Buchse getauscht. -Fuses falsch gesetzt. Hatte CLKSEL 110 muss aber 111. -Einen Kondensator falsch geschaltet (Im Eifer des Gefechts ausversehen die Beinchen vertauscht)
:
Bearbeitet durch User
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.