Gut, habe nun, den Controller ausgetauscht, da ich eigentlich eh den
mega644 verwenden will. Folgendes ist dasProgramm:
1 | #include <avr/io.h>
|
2 | #include <stdio.h>
|
3 |
|
4 | int uart_putchar( char c, FILE *stream ){
|
5 | if( c == '\n' ) uart_putchar( '\r', stream );
|
6 | while ( !( UCSR0A & (1<<UDRE0)) );
|
7 | UDR0 = c;
|
8 | return 0;
|
9 | }
|
10 |
|
11 | void uart_init(uint16_t baud){
|
12 | UBRR0H = (unsigned char) (baud >> 8);
|
13 | UBRR0L = (unsigned char) (baud & 0xff);
|
14 | UCSR0B = (1 << RXEN0) | (1 << TXEN0);
|
15 | UCSR0C |= (1 << UCSZ01)|(1 << UCSZ00);
|
16 | }
|
17 |
|
18 | int uart_write(char c){
|
19 | while( !(UCSR0A & (1 << UDRE0)) );
|
20 | UDR0 = c;
|
21 | return 0;
|
22 | }
|
23 |
|
24 | #define BAUD 103
|
25 |
|
26 | //Standardausgabe nach uart_putchar verbiegen
|
27 | static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar,NULL,_FDEV_SETUP_WRITE);
|
28 |
|
29 | int main(void){
|
30 | stdout = (FILE *) &mystdout;
|
31 | uart_init(BAUD);
|
32 | printf("Initialisierung abgeschlossen \n");
|
33 |
|
34 | while(1){
|
35 | uart_write('a');
|
36 | }
|
37 | return 0;
|
38 | }
|
und printf schreibt nun nichts. Also tippe ich mal, mache ich
irgendetwas falsch. Die Frage ist nur was, da die Funktion uart_write am
Ende fleißig mir viele a's schickt.
Gruß