Hallo zusammen, da man hier schon so gut mit meinem ADC Problem helfen konnte, denk ich das mir vielleicht auch beim nächsten Problem geholfen werden kann: ATmega168, 16 MHz externer Quarz. Ich möchte mit angehängtem Code eine "Echo" funktion Testen und damit auch meinen MAX3225. Am MAX selber messe ich V+ = 6.97V und V- = -5.36V. TXD µC => MAX: 0V RXD µC => MAX: 5V TXD MAX => D SUB: ohne KABEL zum PC 0V mit KABEL zum PC -9.9V RXD MAX => D SUB: -5.5V Die Pegel am D-SUB wundern mich. Wenn ich das Hyperterminal starte kommt nichts an, bzw. die Echo Funktion geht nicht. Habe sowohl mit CLKDIV8 Fuse und ohne getestet beides ohne erfolg. Die SW ist angelehnt an ein Beispiel im Buch, Mikrocomputertechnik mit Controllern der Atmel AVR Risc Familie. Danke schonmal & Gruß Andi
Andi schrieb: > TXD MAX => D SUB: ohne KABEL zum PC 0V mit KABEL zum PC -9.9V > RXD MAX => D SUB: -5.5V > > Die Pegel am D-SUB wundern mich. Kreuze im Kabel die Adern 2 und 3
Karl heinz Buchegger schrieb: > Andi schrieb: > > > >> TXD MAX => D SUB: ohne KABEL zum PC 0V mit KABEL zum PC -9.9V > >> RXD MAX => D SUB: -5.5V > >> > >> Die Pegel am D-SUB wundern mich. > > > > Kreuze im Kabel die Adern 2 und 3 Sorry ich hab mich bei meiner der Angabe vertan: RXD MAX => D SUB: ohne KABEL zum PC 0V mit KABEL zum PC -9.9V TXD MAX => D SUB: -5.5V
Andi schrieb: >> Kreuze im Kabel die Adern 2 und 3 > > Sorry ich hab mich bei meiner der Angabe vertan: > > RXD MAX => D SUB: ohne KABEL zum PC 0V mit KABEL zum PC -9.9V > TXD MAX => D SUB: -5.5V Sieht schon besser aus. Hardwaretest: µC aus dem Sockel rausnehmen. Dann mit einer Drahtbrücke im Sockel die 'µC-Pins' für RxD und TxD brücken. Am Hyperterminal klimpern (Stein auf eine Taste legen). Siehst du im Hyperterminal die gesendeten (und von der Brücke zurückgeschickten) Zeichen? Gegentest: Brücke entfernen. Das 'Echo' muss ausbleiben. Wenn nicht, ist am PC das lokale Echo aktiviert -> abschalten und Test wiederholen Wenn kein Echo kommt: Led mit Vorwiderstand ausrüsten. Das eine Ende an Masse. Mit dem anderen Ende der 'Messschaltung' das Signal vom D-Sub Stecker zum Sockel und wieder zurück verfolgen, wo es verloren geht. Insbesondere bei kleinen Baudraten (300 Baud) sieht man die LED deutlich flackern, wenn Datenverkehr auf der Leitung stattfindet (daher auch der Stein auf der Tastatur)
Karl heinz Buchegger schrieb: > µC aus dem Sockel rausnehmen. > > Dann mit einer Drahtbrücke im Sockel die 'µC-Pins' für RxD und TxD > brücken. > Am Hyperterminal klimpern (Stein auf eine Taste legen). > Siehst du im Hyperterminal die gesendeten (und von der Brücke > zurückgeschickten) Zeichen? > > > > Gegentest: Brücke entfernen. Das 'Echo' muss ausbleiben. Wenn nicht, ist > am PC das lokale Echo aktiviert -> abschalten und Test wiederholen HW Funktioniert. Wenn die Brücke drin ist kommt das Echo wenn ich sie entferne kommt nichts. Also ists ein SW Fehler. Die hab ich aber sehr nahe dem Beispiel aus dem Buch gemacht.
Andi schrieb: > Also ists ein SW Fehler. Die hab ich aber sehr nahe dem Beispiel aus > dem Buch gemacht. Geh die Checkliste durch. Fang damit an, die Taktfrequenz deines µC zu kontrollieren.
Aus deinem Code
1 | // Synchron, 8 Bit, keine Parität, ein Stoppbit
|
2 | UCSR0C |= (1<<UMSEL00); // Synchron, Standart auf Asynchron |
Ähm. BIst du dir sicher, dass du weißt, was du hier tust? Lass das UCSR0C Register erst mal in Ruhe. Der von Atmel beim Power-On eingestellte Default ist vernünftig.
Ok hab das UCSR0C Register in ruhe gelassen: Das '>' Zeichen empfängt der pc nicht. Die Echo schleife hat erst nicht Funktioniert danach hat es kurz ein Echo gegeben auf meine Eingaben und dann wieder nicht. Ein kommisches verhalten...aber schonmal besser als am anfang ;)
Andi schrieb: > Ok hab das UCSR0C Register in ruhe gelassen: > > Das '>' Zeichen empfängt der pc nicht. > Die Echo schleife hat erst nicht Funktioniert danach hat es kurz ein > Echo gegeben auf meine Eingaben und dann wieder nicht. Klingt nach Wackelkontakt. Dein erstes Programm sollte sein: µC schickt in einer Endlosschleife ständig ein 'X' Das lässt du laufen und dann rüttelst du an allen Kabeln, bzw. gehst mit der Mess-LED den Signalverlauf vom µC ausgehend durch. Wieder: das Blinken der LED zeigt dir, wo die Zeichen noch vorhanden sind. Um es klar und deutlich anzusprechen: Ein Echo-Programm ist als erstes Testprogramm völlig ungeeignet. Du hast 2 Komponenten die funktionieren müssen: den Empfangscode den Sendecode nur wenn in beiden kein Fehler ist, funktioniert das Echo. Wenn das Echo aber nicht funktioniert, weißt du erst mal nicht, wo das Problem liegt - beim Empfänger oder beim Sender. Daher ist ein Echo als erstes Testprogramm ungeeignet. Fehlersuche macht man immer mit so wenig ungetesten Komponenten wie möglich.
Karl heinz Buchegger schrieb: > Klingt nach Wackelkontakt. dachte ich auch erst aber wie ich die Brücke im Sockel drin hatte gab es keine Störungen. Von daher müsste die Verbindungen ja passen. Aber ich such jetzt auch erstmal nach einem Wackler. Da mit dem Testen stimmt schon, normal sollte ich erst nur senden. Aber da das Echo ja manchmal geht hab ich ja Glück gehabt ;). Aber da das '>' zeichen ganz am anfang nicht kommt denke ich am ehesten an einen Wackler in der TX Leitung. Vielleicht ist auch die BAUD nicht in Ordnung jedoch sollte der MAX 115.2 k locker schaffen genau so wie der ATmega mit 16 MHz externen Quarz...
Andi schrieb: > Aber da das Echo ja manchmal geht hab ich ja Glück gehabt ;). Ich kann dir nur Tips geben. Wie und was du umsetzt musst du selber entscheiden.
Also jetzt send ich seit einiger zeit ein x. Kommt nicht an am HT. Wenn ich mir mitm Osszi die TX Leitung vor dem D-Sub anschau seh ich einen Sägezah mit ca. T = 1ms und 5.2 V auf 6 V steigt auf 5.2 V fällt usw. Hab die Baud auf 9600 reduziert. Hab alle Drähte nach gelötet aber wie gesagt mit der Brücke gings ja auch. Hab ebenfalls das Serielle Kabel getauscht und den D-SUB Durchgemessen sowie die Leitungen µC <=> MAX <=> D-SUB. Der Quarz schwingt auch sauber seine 16 MHz. CLKDIV8 ist nicht Programmiert. Bin grad recht Ratlos...
Hallo zusammen, also ich hab nach wie vor dieses problem. Ich sende ein X und es kommt nicht an. HW Funktioniert nach wie vor. (RX, TX gebrückt am µC Sockel => Echo am HT; ohne Brücke => kein Echo) Wenn ich die CLKDIV 8 Fuse Programmiert habe zieht meine Schaltung ca 8 mA aus dem Netzteil bzw. wenn ich CLKDIV 8 Fuse nicht Programmiere braucht sie ca 18 mA. Erklärt sich der anstieg des Stroms daraus das der Takt steigt und damit auch der Verbrauch? Hab ich vielleicht noch irgend einen fehler in meiner Sende Routine? Oder gibt es noch eine Fuse die mir nen fehler reinbringt? Wie gesagt die Echo routine ging abund zu für ein paar zeichen. Aber wenn ich nur sende geht nichts...
Andi schrieb: > also ich hab nach wie vor dieses problem. > Ich sende ein X und es kommt nicht an. HW Funktioniert nach wie > vor. > (RX, TX gebrückt am µC Sockel => Echo am HT; ohne Brücke => kein Echo) Gut, das ist schon mal ein Hinweis, das Kabel richtig ist und der MAX3225 arbeiten dürfte. Das allerdings > Wenn ich mir mitm Osszi die TX Leitung vor dem D-Sub anschau seh ich > einen Sägezah klingt nicht gut. Was genau verstehst du unter einem 'Sägezahn'. Einfach nur ein kleiner Einbruch oder richtig ausgeprägt? Das Signal ist im Idealfall ein Rechteck. Kann man dein Signal durch Zudrücken von einem Auge noch als Rechteck bezeichnen? Wenn du das Sendeprogramm laufen hast UND mit dem Oszi am Tx Pin vom µC die Signale rauskommen siehst UND hinter dem MAX das Signal aufs Kabel geht UND auf PC Seite das Signal am Rx Pin ankommt UND die Baudrate stimmt UND die Taktfrequenz des µC mit der im Pgm verwendeten übereinstimmt UND die Signalform einigermassen ein Rechteck ist UND Hypertermial am richigen COM Port lauscht DANN funktioniert die UART auch. (Ich denke, da sind jetzt alle Fehlermöglichkeiten enthalten. Mehr gibt es nicht)
Also: Beim HW Test sind es durchaus Saubere Rechtecke. Sowohl RX und TX (Controller <=> MAX) sind auch 5 V. Wenn ich den Cotroller reinstecke (und damit sende) ist die TX Leitung (µC => MAX) 0V. Das sollte nicht sein oder?
Andi schrieb: > Also: > > Beim HW Test sind es durchaus Saubere Rechtecke. > Sowohl RX und TX (Controller <=> MAX) sind auch 5 V. > > Wenn ich den Cotroller reinstecke (und damit sende) > ist die TX Leitung (µC => MAX) > 0V. Das sollte nicht sein oder? Nein. Das sollte nicht sein.
Hab jetzt einen neuen Controller (selber Typ) drauf aber immer noch das selbe Problem: Die TX Leitung hat zwischen µC und Max bleibt LOW.
És funktioniert entlich! Voher: Die BAUD wurde per Defines berechnet und stand in uart.c. uart_init() war eine normale Funktion. In der Funktion wird das oben angegebene Define BAUD in das Register geschoben. Nacher: Die BAUD wird per Defines berechnet und steht aber in main.c. uart_init(BAUD) mit BAUD als übergabewert und schon geht alles. In der Funktion wird der Übergabewert BAUD ins Register geschoben Kanns mir aber ehrlich gesagt nicht ganz erklären...
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.