mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART


Autor: Kofi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi !
Ich wollte heute mal die UART library von Peer Fleury ans laufen
kriegen aber dieses simple Beispiel:

    uart_puts("String stored in SRAM");

... usw.
FUNKTIONIERT NICHT ich erhalte immer soeinen Buchstabensalat:


<0>|88œ`?à|Çà<0>Æà8œ|ðœ?€à<0>Æp?ð|<0>|8œ<0>œ|8|88œ`?à| 
Çà<0>Æà8œ|àœ?€à<0>Ç`?à|<0>ð€ø`Ç<0>œ`Ç<0>pÇ|<0>|88œ`?ð|Çð<0 
>Æð8œ|ðœ?€ð<0>Æ`?à|<0>|8œ<0>œ|8|88œ`?à|Çà<0>Æà8œ|ðœ?€ 
à<0>Æp?ð|<0>à€øpÇ<0>œ`Ç<0>`Ç|<0><0>|88œ`?ð|Çð<0>Æð8œ|àœ?€ð 
<0>Æ`?à|<0>|8œ<0>œ|8|88œ`?à|Çð<0>Æà8œ|ðœ?€ð<0>Æp?à|<0> 
à€ø`Ç<0>œ`Ç<0>`Ç|<0>|88œp?ð|Çð<0>Çð8œ|àœ?€à<0>Ç`?à|<0>|8œ 
<0>œ|8|88Œ`?à|Çà<0>Æà8œ|ðœ?€ð<0>Æ`?à|<0>à€ø`Ç<0>œ`Ç<0>pÇ|< 
0>|88œ`?à|Çà<0>Æà8œ|àœ?€à<0>Ç`?ð|<0>|8œ<0>œ|8|88œ`?à|Ç 
à<0>Æà8Œ|ðœ?€à<0>Æp?ð|<0>à€øpÇ<0>œ`Ç<0>`Ç|<0>|88œp?ð|Çà<0> 
Çà8œ|àœ?€à<0>Æp?ð|<0>|8œ<0>œ|8|88œp?ð|Çà<0>Çð8œ|àœ?€à 
<0>Æp?ð|<0>à€øpÇ<0>œ`Ç<0>`Ç|<0>|88œ`?à|Çð<0>Æà8œ|àœ?€ð<0> 
Ç`?à|<0>|8œ 
<0>œ|8|88œp?ð|Çà<0>Çð8œ|àœ?€à<0>Ç`?ð|<0>ð€øpÇ<0>œpÇ<0>`Ç|<0 
>|88œ`?à|Çà<0>Æà8Œ|ðœ?€ð<0>Æp?à|<0>|8œ<0>œ|8|88œ`?ð|Çð 
<0>Çð8œ|àœ?€à<0>Ç`?à|<0>ð€ø`Ç<0>œpÇ<0>pÇ|<0>|88œ`?à|Çà<0> 
Æà 8œ|ðœ?€ð<0>Ç`?à|<0>|8 
œ<0>œ|8|88œ`?à|Çð<0>Æð8œ|àœ?€à<0>Ç`?ð|<0>à€øpÇ<0>œ`Ç<0>`Ç 
|<0>|88œ`?à|Çð<0>Æà8œ|àœ?€à<0>Ç`?à|<0>|8œ<0>œ|8|88œ`?à 
|Çð<0>Æà8œ|àœ?€à<0>Ç`?à|<0>à€øpÇ<0>œ`Ç<0>`Ç|<0>|88œp?ð|Çà< 
0>Çð8œ|àœ?€à<0>Æp?ð|<0>|8œ<0>œ|8|88œp?ð|Çà<0>Æà8œ|ðœ? 
€à<0>Æp?à|<0>à€ø`Ç<0>œ`Ç<0>`Ç|<0>|88œ`?à|Çð<0>Æà8œ|àœ?€à<0 
>Æ`?ð|<0>|8œ<0>œ|8|88œp?ð|Çà<0>Çð8œ|àœ?€ð<0>Ç`?à|<0>à€ 
ø`Ç<0>œ`Ç<0>pÇ|<0>|88œ`?ð|Çð<0>Æà 
8œ|ðœ?€à<0>Æp?ð|<0>|8œ<0>œ|8|88œp?ð|Çð<0>Æð8œ|ðœ?€ð<0> 
Æp?à|<0>à€øpÇ<0>œ`Ç<0>`Ç|<0>|88œ`?à|Çð<0>Æà8œ|ðœ?€à<0>Ç`?à 
|<0>|8œ<0>œ|8|88œ`?à|Çà<0>Æà8œ|àœ?€à<0>Ç`?à|<0>ð€ø`Ç<0 
>œ`Ç<0>`Ç|<0>|88œp?ð|Çà<0>Çð8œ|àœ?€ð<0>Æp?ð|<0>|8œ<0>œ|8| 
88œp?ð|Çð<0>Æà8œ|ðœ?€à<0>Ç`?à|<0>à€ø`Ç<0>œ`Ç<0>`Ç|<0>|88 
œp?ð|Çà<0>Æð8œ|ðœ?€ð<0>Æp?ð|<0>|8œ<0>œ|8|88œp?ð|Çð 
<0>Æà8œ|ðœ?€à<0>Æ`?ð|<0>ð€ø`Ç<0>œ`Ç<0>`Ç|<0>|88œ`?à|Çà<0>Ç 
ð8œ|àœ?€ð<0>Æp?ð|<0>|8œ<0>œ|8|88œ`?à|Çð<0>Æà8œ|àŒ?€à< 
0>Ç`?à|<0>à€øpÇ<0>œpÇ<0>`Ç|<0>GC3›'§\@Cû7¼›C7³ó'0G#[°;;_ã›7§\@Cû 
'¼›C7£ã'0ô@Gƒ¤


ich habe auch schon andere baud raten versucht
hat jemand ne Ahnung wo dran das liegen könnte ?

gruß
Kofi

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht schon nach Baudrate aus.
Aber probier mal: uart_puts_P("text oder so was")

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie stehen denn Deine Fuses?
Welchen Controller benutzt Du?

Du musst den evtl. Controller umstellen auf den externen Quarz.
Benutz mal die Suchfunktion im Forum. Sowas war schon öfter. Auswendig
weiss ich das nicht genau.
Normalerweise ist der interne mit 1 Mhz voreingestellt.

Autor: Kofi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>>>Sieht schon nach Baudrate aus.
>>>Aber probier mal: uart_puts_P("text oder so was")

Die Baudrate und die Frequenz habe ich im Code aber richtig eingestellt
und in der Simulation funktionirt der Code ...

>>>Wie stehen denn Deine Fuses?
>>>Welchen Controller benutzt Du?
Ich benutze den AT90S8515 der hat keine Fuses für OSC_Select

>>>Du musst den evtl. Controller umstellen auf den externen Quarz.
Ich habe den clock generator vom board genommen
und den Jumper am STK dafür auf OSC_SEL 1,2 gejumpert.

>>>Benutz mal die Suchfunktion im Forum. Sowas war schon öfter.
Hab leider nichts brauchbares gefunden ;-(

>>>Normalerweise ist der interne mit 1 Mhz voreingestellt.
Habe den Clock generator auf 3686400 Hz gestellt ...
laut Datenblatt:

bei 1Mhz
9600 Baud
UBRR=6
Relativer Fehler in %: 7,5

bei 3,2768 Mhz
9600 Baud
UBRR=20
Relativer Fehler in %: 1,6

... müsste doch funzen oder nicht ??

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/pgmspace.h>

#include "uart.h"


#define XTAL_CPU         3686400      /* 4Mhz */
#define UART_BAUD_RATE      9600      /* 9600 baud */



int main(void)
{
    unsigned int c;

    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,XTAL_CPU) );

    sei();

    uart_puts("String stored in SRAM");
    uart_puts_P("String stored in FLASH");
    uart_putc('\r');

    for(;;)
        c = uart_getc();
        if ( c & UART_NO_DATA )
        {
        }
        else
        {
            if ( c & UART_FRAME_ERROR )
            {
                uart_puts_P("UART Frame Error: ");
            }
            if ( c & UART_OVERRUN_ERROR )
            {
                uart_puts_P("UART Overrun Error: ");
            }
            if ( c & UART_BUFFER_OVERFLOW )
            {
                uart_puts_P("Buffer overflow error: ");
            }
            uart_putc( (unsigned char)c );
        }
    }

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.