Nabend zusammen, ich möchte mit meinem Atmega88 mittels SH-U09C5 und HTerm mittels UART kommunizieren. Leider scheitert es bereits an den Basics. Ein 'Hello World' - Blink Programm funktioniert problemlos.
1 | #include <avr/io.h> |
2 | int main(void) { |
3 | DDRB |= (1<<PB7); |
4 | while(1){ |
5 | PORTB = (1<<PB7); |
6 | }
|
7 | }
|
Jetzt habe ich hier aus den Anleitungen versucht via RX/TX Kommunikation ein sehr simples Beispiel zu basteln:
1 | #include <avr/io.h> |
2 | #include <util/setbaud.h> |
3 | #include <util/delay.h> |
4 | |
5 | int uart_putc(unsigned char c) |
6 | {
|
7 | while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */ |
8 | {
|
9 | }
|
10 | |
11 | UDR0 = c; /* sende Zeichen */ |
12 | return 0; |
13 | }
|
14 | void uart_puts (char *s) |
15 | {
|
16 | while (*s) |
17 | { /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */ |
18 | uart_putc(*s); |
19 | s++; |
20 | }
|
21 | }
|
22 | |
23 | void uart_init(void) |
24 | {
|
25 | UBRR0H = UBRRH_VALUE; |
26 | UBRR0L = UBRRL_VALUE; |
27 | #if USE_2X
|
28 | /* U2X0-Modus erforderlich */
|
29 | UCSR0A |= (1 << U2X0); |
30 | #else
|
31 | /* U2X0-Modus nicht erforderlich */
|
32 | UCSR0A &= ~(1 << U2X0); |
33 | #endif
|
34 | }
|
35 | |
36 | int main(void) |
37 | {
|
38 | char s[7]; |
39 | DDRB |= (1<<PB7); |
40 | int16_t i = 123; |
41 | PORTB = (1<<PB7); |
42 | uart_init(); |
43 | |
44 | itoa( i, s, 10 ); // 10 fuer radix -> Dezimalsystem |
45 | while (1) { |
46 | uart_puts( itoa( i, s, 10 ) ); |
47 | _delay_ms(2000); |
48 | }
|
49 | |
50 | return 0; // never reached |
51 | }
|
Nicht nur das die Kommunikation nicht funktioniert, nichtmal die LED von PB7 leuchtet. Ich habe dann rumprobiert und was ich überhaupt nicht verstehe ist, selbst wenn ich aus der main Methode alles rausnehme bis auf den LED Teil, es dennoch nicht klappt. Das kann ja eigentlich nicht sein, da ich die anderen Methoden ja nicht einmal aufrufe. Ich bin sicher, dass es sich hierbei um eine Kleinigkeit handelt aber ich komme leider nicht drauf und würde mich freuen, wenn ihr mir einen Hinweise geben könntet.