Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART


von Kofi (Gast)


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

von Hubert (Gast)


Lesenswert?

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

von AndreasH (Gast)


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.

von Kofi (Gast)


Angehängte Dateien:

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 );
        }
    }

}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.