Hallo ich habe im netz einen Quelltext für, einen atmega16 Zeichensenden, gefunden. Ich bin mir nicht sicher ob er mit 8 Bit und einem Stopbit arbeitet. Kann mir sagen ob das so ist und wenn nicht wo man das ändern muss.
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | |
4 | #define F_CPU 16000000L
|
5 | #define BAUD 2400
|
6 | #define ubrr_value ( ( F_CPU / (16*BAUD) ) - 1 )
|
7 | |
8 | void USART_Init(void); |
9 | void USART_Transmit(unsigned char data); |
10 | |
11 | //*********************** main *********************************
|
12 | |
13 | int main(void) |
14 | {
|
15 | uint8_t Speicher1 ; |
16 | uint8_t Speicher2; |
17 | DDRC = 0xff; |
18 | DDRA = 0x00; |
19 | DDRB = 0x00; |
20 | USART_Init(); |
21 | |
22 | |
23 | |
24 | while(1) |
25 | {
|
26 | USART_Transmit(0b10000111); |
27 | |
28 | return 0; |
29 | }
|
30 | |
31 | |
32 | //***************UART Initialisieren********************
|
33 | |
34 | void USART_Init(void) |
35 | {
|
36 | UBRRH = (unsigned char)(ubrr_value>>8); |
37 | UBRRL = (unsigned char)ubrr_value; |
38 | |
39 | UCSRB = (1<<RXEN)|(1<<TXEN); |
40 | UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); |
41 | |
42 | }
|
43 | |
44 | |
45 | |
46 | //******************** senden ****************************
|
47 | |
48 | |
49 | void USART_Transmit(unsigned char data) |
50 | {
|
51 | |
52 | /* Wait for empty transmit buffer */
|
53 | while ( !( UCSRA & (1<<UDRE)) ); |
54 | /* Put data into buffer, sends the data */
|
55 | |
56 | UDR = data; |
57 | |
58 | }
|