Hallo zusammen,
ich habe bisher 8051 programmiert. Nur möchte ich auf grund der größeren
Community auf die AVRs umsteigen. Deswegen habe nun erstmal angefangen
meine bestehenden Projekte soweit umzuschreiben. Alles funktioniert
auch. Nur der UART nicht. Deswegen habe ich erstmal ein ganz einfaches
Programm geschrieben (aus dem Inet zusammenkopiert - Weil mein eigenes
nicht funzt)...
1 | #include <avr/io.h>
|
2 |
|
3 | #define F_CPU 4000000UL
|
4 | #define UART_BAUD_RATE 2400UL
|
5 |
|
6 | #define UBRR_BAUD ((F_CPU/(16L*UART_BAUD_RATE))-1)
|
7 |
|
8 | int main (void)
|
9 | {
|
10 | /* Special for ATMEGA8, ATMEGA16 */
|
11 | UCSRB = (( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ));
|
12 | UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
|
13 | UBRRH = (uint8_t) (UBRR_BAUD>>8);
|
14 | UBRRL = (uint8_t) (UBRR_BAUD & 0xFF);
|
15 |
|
16 |
|
17 |
|
18 | while (1){
|
19 | while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
|
20 | {
|
21 | }
|
22 |
|
23 | UDR = 's';
|
24 |
|
25 | }
|
26 | return 0;
|
27 | }
|
Verbunden ist alles wie bei meinem 8051 mit max232 USB->COm-Converter.
Das ist alles fehlerfrei.
Die Ausgabe in Terminalv1.9b ist:
xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€
xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€xü€ø
Einstellungen im Terminal-Programm ist:
2400 8N1
Sieht jemand meinen Fehler??