Hi Leute
Ich bekomm einfach nicht die Serielle Schnittstelle zum laufen...
Zuerst war der MAX farbriksmässig hinüber, dann auch noch ein kleiner Verdrahtungsfehler ![Smile](https://www.roboternetz.de/phpBB2/images/smiles/icon_smile.gif)
Jetzt sollte es aber gehn, bzw bin soweit das ich die PINS auf ein ein extra Board rausgezogen habe( Funktioniert einwandfrei mit einem ATMega![Cool](http://www.roboternetz.de/phpBB2/images/smiles/icon_cool.gif)
Hier mal der Code. Lasst euch nicht von der Sendefunktion verwirren..
Sie funktioniert ![Zwinkern](https://www.roboternetz.de/phpBB2/images/smiles/icon_wink.gif)
Code:
#include <avr/io.h>
#define USART_BAUD_RATE 9600
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1)
#include <inttypes.h>
#include <stdio.h>
static int uart_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
static int uart_putchar(char c, FILE *stream) {
loop_until_bit_is_set(UCSR0A, UDRE0);
UDR0 = c;
return 0;
}
void uart_init(void) {
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
UCSR0C = (1<<UMSEL0)|(1<<UCSZ01)|(1<<UCSZ00);
UBRR0L = (unsigned char) USART_BAUD_SELECT;
stdout = &mystdout; // in main() auch benoetigt
printf("\nHello, world! I,m there\n");
}
Genau das selbe Programm läuft auf einem ATMega8 einwandfrei...(nur andere Registernamen)
Und noch ne Frage:
Warum steht im Datenblatt usw überall UART0 er hat doch eh nur einen ?!
Mfg
Lesezeichen