- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: USART funktioniert nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2011
    Beiträge
    5

    USART funktioniert nicht

    Anzeige

    Praxistest und DIY Projekte
    Guten Tag Forum,
    ich beschäftige mich mit der Programmierung von MCUs. Jetzt tritt bei mir folgendes Problem auf:
    Habe eine C-Projekt in Atmel Studio 7.0 für die Nutzung des USART auf einer Atmega 328P mit
    HTerm und LCD-Display über I2C erstellt. Die MCU wird mit 16 MHz getaktet. Die Eingabe
    erfolgt am PC, die Ausgabe auf dem LCD_Display und in HTerm. Alles klappt einwandfrei. Jetzt
    habe ich das Progrämmchen auf Atmega 1284P 15 MHz (NIBOBURGER) umgestellt. Es funktioniert mit
    dieser MCU nicht. Der Begrüßungstext auf dem Display wird korrekt dargestellt, die I2C Schnittstelle
    also kerrekt getaktet. Auf dem HTerm kommt im Receivebereich etwas an, aber nur für jedes Byte
    H80 oder H00.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Das traurige an den Projekten die man mit dem Studio "bäckt" man versteht sie nicht und wenn im Framework ein FEhler ist sucht man sich dämlich.

    Ich kann leider nur dazu raten, sich entweder eine einschlägige library aus Github zu nhemen wenn man es einfach haben möchte oder die UART manuell zu konfigurieren
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.678
    .. USART auf einer Atmega 328P mit HTerm .. kommt im Receivebereich etwas an, aber nur für jedes Byte H80 oder H00.
    Das HTerm hatte mich oft geärgert, genauer: es hatte selten gut funktioniert. Ich hab auch mal nen Kommentar gelesen, dass HTerm das schlechteste aller . . . Geärgert hatte mich u.A. auch der häufige Fall dass die eingestellte Baudrate am HTerm nicht die gesendete Baudrate verarbeiten konnte - manchmal gings aber mit nem andern Wert.

    Für meine UART-Praxis benutze ich seit "ewig" ein Terminal von Br@y. Nicht dieses neueste, sondern ne Version Terminal by Br@y, v1.9b - 20040714 - die funktioniert in meiner Umgebung einfach perfekt.

    Bei Deinem Post fällt mir auch auf, dass Du mit 15 MHz taktest. Da könnte es sein, dass die tatsächliche Baudrate von der eingestellten abweicht, weil ja nicht alle Berechnungen der UBRRn-Werte ganzzahlig aufgehen; die Abweichungen der realen Routine im Mikrocontroller sind manchmal einfach zu groß. Über diese Abweichungen gibts hier und sonst im www auch mehrere Threads.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Darf ich den Klassiker Putty als Alternative mit einwerfen?
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo Bibermann,

    ich hatte grade erst ein ähnliches Problem auf einem anderen System.
    es kam nur ein Backspace an (aber auch falsch), jedoch keine Reaktion auf Buchstaben.
    Das sieht doch recht ähnlich bei Dir aus.
    Da habe ich doch tatsächlich "vergessen" die Baudrate von 9600 auf 115200 zu stellen,
    bzw. die Zeile auskommentiert.
    Das liegt SEHR wahrscheinlich an der Baudrate. Und ein Quarz mit 15 MHz ist schon eher ungewöhnlich,
    Da stehen unter Umständen die Teilerregister nicht richtig bzw. lässt sich der Teiler evtl. nicht so einstellen,
    das der Baudratenfehler klein genug wird ? Typische Quarze sind ja eher 12 und 16 MHz
    Aber ich sehe grade, der läuft tatsächlich mit 15 MHz.
    https://www.mikrocontroller-elektron...boter-bausatz/


    Mit dem HTerm arbeite ich auch ab und zu, hab da eigentlich noch keine schlechten Erfahrungen gemacht.
    Ist zwar alt, aber kommuniziert auch mit meinen SiLabs Bausteinen über die entsprechenden USB-Treiber.

    Beim I2C-Bus spielt die Geschwindigkeit keine große Rolle. Der läuft meiner Meinung nach auch noch mit einem 1 Hz Takt,
    nach oben hin je nach angeschlossenem Bauteil auch im MHz Bereich.

    Siro
    Geändert von Siro (04.12.2018 um 15:45 Uhr)

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2011
    Beiträge
    5
    Hallo Forum,
    habe mir in der Zwischenzeit zwei identische Schaltungen aufgebaut. PC <--> MCU ->LCD. Als Schnittstelle zwischen PC und MCU habe ein CP2102 Modul. Als Schnittstelle zwischen MCU und LCD ein I2C-LCD Interface. In der einen Schaltung ist ein Atmega 328P, in der anderen Schaltung ein Atmega 1284P. Beide MCUs werden durch einen 16 MHz Quarz getaktet. Mein Testprogramm empfängt Strings (max. 16 Zeichen wegen der Zeilenlänge LCD), retouniert die Eingabe zum PC und stellt den Stringinhalt auf dem LCD dar. Ich habe dieses Programm zweimal erstellt, unter Berücksichtigung der unterschiedlichen Registerbezeichnungen und da. Beim Atmega1284P nutze ich den USART0. In der Schaltung mit dem Atmega 328P funktioniert alles einwandfrei. In der Schaltung mit dem Atmega1284P wird nichts empfangen und somit auch nichts dargestellt denn gesendet. Nur die Sende-LED auf dem USB TTL Wandler signalisiert den Sendevorgang vom PC. Muss u.U. beim Atmega1284P PD0 und PD1 als Ausgang bzw. Eingang initialisiert werden?

    Bibermann

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    03.02.2011
    Beiträge
    5
    Hallo,
    Habe mir einen Quarz 14,7456 MHz gekauft, leider war diese Änderung ebenfalls ohne Erfolg. Habe heute den Systemtakt für den ATmega 1284P auf 8 MHz reduziert. Mit der reduzierten Taktung funktioniert die USART Schnittstelle. Ich bekomme im Moment zwar noch nicht den kompletten String, sondern nur vier Zeichen übertragen. Diese Problem werde ich auch noch lösen.

    Bibermann

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.678
    .. Habe mir einen Quarz 14,7456 MHz gekauft, leider war diese Änderung ebenfalls ohne Erfolg ..
    Na ja, es kommt auf mehrerlei an: z.B. die >>genaue<< Formel zur Berechnung der UBRRn-Werte für Deine jeweils gewünschte Baudrate (und das ist ne INTEGER-Rechnung - da kann ne Menge Rest übrigbleiben) und den Prozessor- bzw. Quarztakt. Dazu macht es Sinn, besonders bei Problemen - oder wenns mal eng zu werden scheint, sich ein Rechenblatt dazu zu erstellen. Meine Rechnungen liefern mir dazu (klick) dann auch die jeweils errechnete Abweichung - und bei mehr als 1,5 % .. 2 % Fehler kann man Schwierigkeiten erwarten.

    Ich weiß nicht wie Dein NIBOBURGER tickt - wenn der mit dem 1284er auf UART0 und UART1 aktiv ist - dann sind aus meiner Erfahrung Schwierigkeiten sowieso vor"programmiert". Aber nochmal: ne Kontrollrechnung mit Anzeige der Abweichung zeigt oft was Sache ist.
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Für mich sieht das schwer nach falscher Baudrate aus.
    Entweder läuft der 128 mit internem Takt, oder die Baudrate wird an einem Punkt erneut und damit falsch eingestellt.

    Lass das Ganze doch mal im Simulator des AVR Studio laufen und guck da, wie die Register des USART 0 eingestellt sind.
    Dann Kontrollieren ob das mit der gewünschten Baudrate zusammen passt.

    Als einfach Test kann man auch einfach den TXD Pin und den RXD pin der USB Bridge brücken, ohne aktiven Controller natürlich!!!, ob wenigstens dieser richtig arbeitet.

Ähnliche Themen

  1. STK500 USART Funktioniert nicht
    Von Wiederstand im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 09.01.2011, 15:46
  2. UART/USART vom ATMega32 will einfach gar nicht
    Von Bamboocha im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 04.06.2010, 11:21
  3. Intr. + USART+ Atmega32 lib funktioniert nicht
    Von MrTaco im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 30.11.2009, 19:19
  4. Prüfungstress, Usart geht nicht
    Von SebZilla im Forum AVR Hardwarethemen
    Antworten: 21
    Letzter Beitrag: 14.06.2009, 09:06
  5. 18f1320 USART sendet aber empfängt nicht
    Von stalky13 im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 20.06.2007, 20:06

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests