UART funktioniert nicht so recht

Gast #658992
Lesenswert?

Guten Abend,

ich habe eben gerade die UART Library von P Fleury getestet, welche bei 
mir nicht so ganz richtig funktioniert. UART habe ich schon davor ohne 
Library erfolgreich geschaft. Ich benutze einen Atmega8 mit 11,05975 
oder so MHZ.
Baudrate ist 9600.


Ich bekomme mit HpyerTerminal nicht sofort einen String, sondern erst 
nach 30 sek und der angekommene String wird in "merkwürdigen" Zeichen 
dargestellt. Ich benutze bei diesem Beispiel Interrupts. Muss ich davor 
mit diesen Interrupts noch was speziell einstellen ?

Woran könnte das liegen ?

Das ist mein Code:
1
/* *****************************************************
2

3
       Beispiel für die UART Library von Peter F.
4

5

6
***************************************************** */
7

8
#include <avr/io.h>
9
#include <stdlib.h>
10
#include <avr/interrupt.h>
11
#include <avr/signal.h>
12
#include <avr/pgmspace.h>
13

14

15
#include "uart.h"
16

17

18
#define UART_BAUD_RATE      9600     
19

20

21
int main(void)
22
{
23
  unsigned int c;
24
  
25
  
26
  
27
  uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
28
  
29
  //enable INTERRUPT
30
  sei();
31
  
32
     
33
  uart_puts("String stored in SRAM\n");
34
  
35
  for(;;)
36
    {
37
   c = uart_getc();
38
  uart_puts_P("Hallo x86\n");
39
   if ( c & UART_NO_DATA )
40
   {
41
    // Keine Daten verfügbar
42
   }
43
  else
44
   {
45
    // Daten verfügbar...
46
    if ( c & UART_FRAME_ERROR )
47
      {
48
        uart_puts_P("UART Frame Error: ");
49
      }
50
    if ( c & UART_OVERRUN_ERROR )
51
      {
52
        uart_puts_P("UART Overrun Error: ");
53
            }
54
           //
55
            uart_putc( (unsigned char)c );
56
   }
57
    }
58
}


Danke !

grüße,
peter
Gast #659040
Lesenswert?

Ja, im MakeFile ist: F_CPU = 11059200
Den hab ich auch drin... habe mich "oben" falsche genannt, weil ich den 
genauen Wert nicht wusste... Baudrate ist 9600... wie gesagt mit diesem 
MakeFile hat es davor mit UART per Hand, also ohne Library funktioniert.
Ich brauche diese Interrupts, weil ich einen Schrittmotor über den PC 
steuern will und dem Programm im Atmega8 per UART die Anzahl der 
Schritte und Drehrichtung übergeben möchte....


Danke !

Muss jetzt los zur Schule :P....

Schönes Wochenende

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