Forum: Compiler & IDEs UART geht nur bedingt


von Markus (Gast)


Lesenswert?

Hi.
Ich habe ein Problem.
Mein Uart geht im Echobetrieb ohne Probleme.
Also das was ich dem µC sende, kommt auch zurück.
Nur wenn ich noch etwas wie im Codebeispiel senden will dann kommt das
nicht an.
Es tut sich einfach nix am Empfänger.
Hat jemand eine Idee?
1
#include <avr/io.h>
2
#include <stdint.h>
3
4
#ifndef F_CPU
5
#define F_CPU 4000000
6
#endif
7
#define UART_BAUD_RATE 9600
8
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU) /
9
((UART_BAUD_RATE)*16L)-1)
10
11
unsigned char get;
12
13
void uart_putc(uint8_t c)
14
{
15
  while (!(UCSRA & (1<<UDRE)));
16
  UDR = c;
17
}
18
19
int main(void)
20
{
21
22
  UCSRB |= (1<<TXEN);  //Transmitter Enabled
23
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);  //Asynchron 8N1
24
  
25
  UCSRB |= (1<<RXEN);  //Emfpang enabled
26
27
  UBRRH=(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
28
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
29
30
  DDRB = 0xFF;
31
  PORTB = 0xFF;
32
  
33
  
34
  while (!(UCSRA & (1<<UDRE)));
35
  UDR = 'h';
36
37
  while(1)
38
  {
39
40
    while(!(UCSRA & (1<<RXC)))
41
    {
42
      PORTB = ~get;
43
    }
44
    get = UDR;
45
    uart_putc(get);
46
    
47
    //WARUM SENDET ER DAS NICHT?
48
    uart_putc('T');
49
    //WARUM SENDET ER DAS NICHT?
50
51
      
52
  }
53
}

von Markus (Gast)


Lesenswert?

Ahh sorry mein fehler.
Hatte am anderen Rechner den falschen ComPort ausgewählt und such hier
2 Stunden lang den Fehler .........

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.