Forum: Mikrocontroller und Digitale Elektronik UART funktioniert nicht so recht


von peter (Gast)


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

von JÜrgen G. (Firma: 4CKnowLedge) (psicom) Benutzerseite


Lesenswert?

Bin mir nicht sicher wie das mit \n ist...

Versuch mal das rauszunehmen...


Od. wie siehts mit der binären Null aus? Ist die in uart_puts_P drinnen?

von Stefan W. (wswbln)


Lesenswert?

...das hört sich nach nicht passender Baudrate an.

Ist F_CPU im Makefile richtig gesetzt?
Hast Du ein Oszilloskop zur Verfügung, um mal die Baudrate zu 
kontrollieren?

von name (Gast)


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

von peter (Gast)


Lesenswert?

hat jemand eventuell einen anderen Rat ?

Mir fällt da nichts mehr ein.


Danke !

gruß,

peter

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.