Meine Probleme mit unpassenden UARTS sind (waren ?) zahllos. Irgendwann hatte ich dann entweder standardmässig oder fallweise diese Routine eingebunden und verwendet :.. ein Problem mit dem USART an einem ATMEGA 88A ..Damit hatte ich dann Tipp-, Bibliotheks-, Rundungs- und sonstige -fehler oder so entdecken können. Sieht am Terminal, nach Reset oder Kaltstart der Platine, so aus (die Farbe rot ist rein"getürkt"):Code:// ============================================================================= = // == Auslesen der UBBR0-Werte und Ausgabe auf UART // ============================================================================= = void UBBR0tst ( void ) // UBBR auslesen und auf UART ausgeben <main { // u16 bdv, iword; // Bauddivider und iword für Anzeige auf UART // - - - - - - - - - - - - - - - - // Testweise Ausgabe des UBBR0 vorbereiten // Rechenformel : ( (u16)(F_CPU / BAUD / 16 - 0.5) ) // bdv = (u16)(F_CPU / 115200 / 16 ); // In main: = (u16)(F_CPU / BAUD / 16 - 0.5 ); bdv = (u16)(F_CPU / BAUD / 16 - 0.5 ); iword = uniq ( bdv, (bdv >>8)); // Hier anschließend - - - f Datenaustausch uputs0 ("\r\tUBRR0 Rechnung: "); uputs0u ( iword ); // Anzeige UBRR0 wms ( 1000); iword = uniq ( UBRR0L, UBRR0H ); uputs0 ("\t => Register ~L/H: "); uputs0u ( iword ); // Anzeige UBRR0 // return; // Ende void UBBR0tst ( void ) } // ============================================================================= =
Ne ausführlicher Anmerkung, so kurz nach dem Frühstück, geht grad nicht . . .Code:NaCo x50 5 Mar 2019 13:20 UART0_64 256 kBd, Datenuebertrgg ebenso Datenformat je 3 Bytes [ENQ][Sensora][Sensorb] Übertragung ca 1 x je 3 Bytes / sek UBRR0 Rechnung: 4 => Register ~L/H: 4 ?Addr I²C-Dev 0xE0-0xFE; NoDev =: '-' I²Cdevaddr aktiv 224 0xE0 I²Cdevaddr aktiv 226 0xE2 -------------- I²C_look Ende @ Addr.: 254 / 0xFE #> ~r1n~/Tst1prsc: 1 Messung pro Sekunde ¼.¼.¯.¼.¼.½.!.¼.½.¼.¼.¼.¼.¼.¼.¼.¼.¼.¼.![]()
Nachtrag:
Warum das Ganze? Es gehört natürlich die Berechnung des Baudratenfehlers dazu - Vorsicht: manche Schritte ganzzahlig rechnen. Die Abweichung (klick) kann erheblich sein, mit meinem neuen "Scope" sieht man wie deutlich :-/ so etwas sein kann. Und die Empfindlichkeit auf unterschiedlich große Baudratenabweichungen sind bei unterschiedlichen Empfängern (und Baudraten) eben verschieden.







Zitieren

Lesezeichen