UART geht nur bedingt

Gast #285706
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
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.