Forum: Projekte & Code UART Echo in C STK500


von Markus N. (roboscan)


Lesenswert?

Hi.
Also ich denke gerade am anfang wenn man versucht mit UART zu spielen
könnte das nützlich sein.
Getestet auf einem STK500 mit ATMEGA8515L Chip.
1
#include <avr/io.h>
2
#include <stdint.h>
3
4
#ifndef F_CPU
5
#define F_CPU 3686400
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
int uart_putc(unsigned char c)
14
{
15
  while (!(UCSRA & (1<<UDRE)));
16
  UDR = c;
17
  return 0;
18
}
19
20
int main(void)
21
{
22
23
  UCSRB |= (1<<TXEN);  //Transmitter Enabled
24
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);  //Asynchron 8N1
25
  
26
  UCSRB |= (1<<RXEN);  //Emfpang enabl
27
28
  UBRRH=(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
29
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
30
31
  DDRB = 0xFF;
32
  PORTB = 0xFF;
33
34
  while(1)
35
  {
36
37
    while(!(UCSRA & (1<<RXC)))
38
    {
39
      PORTB = ~get;
40
    }
41
    get = UDR;
42
    uart_putc(get);
43
      
44
  }
45
}

von murphy (Gast)


Lesenswert?

wie würde das in asm aussehen??

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.