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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren