Probleme mit UART

Gast #159882
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
Gast #159884
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.
Gast #159885
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 );
        }
    }

}
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.