Hallo,
das folgende Skript soll auf dem Terminal "Hallo" schreiben. Leider kommen keine Signale zum Terminal. Es ist definitiv kein Hardwarefehler.
Skript:
main.c:usart.h:Code:#include <avr/io.h> #include <util/delay.h> #include "usart.h" void delay_ms(uint16_t ms) { for(uint16_t t= 0; t <=ms; t++) _delay_ms(1); } int main() { //USART konfigurieren init_usart(); while(1){//USART-Ausgabe usart_sendchar('H'); usart_sendchar('a'); usart_sendchar('l'); usart_sendchar('l'); usart_sendchar('o'); } return(0); }
usart.c:Code:#define USART_RECEIVE_COMPLETE() (UCSR0A & RXC0) #define UART_BAUD_RATE 38400L #define UART_BAUD_CALC(UART_BAUD_RATE,F_CPU) ((F_CPU)/((UART_BAUD_RATE)*16L)-1) void init_usart(); void usart_sendchar(char c);
Es wäre nett, wenn jemand mal drüber gucken könnte, wo der Fehler liegt.Code:#include <avr/io.h> #include <util/delay.h> #include "usart.h" void init_usart(){ //Eingabeparameter einstellen - Aktivierung UBRR0H = (uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8); UBRR0L = (uint8_t) UART_BAUD_CALC(UART_BAUD_RATE,F_CPU); UCSR0A = 0x00; UCSR0B = 0; //Senden aktivieren UCSR0B |= TXEN0; //Empfangen aktivieren UCSR0B |= RXEN0; //Konfiguration der Bitlaenge UCSR0C = UCSZ01 | UCSZ00; // 8-Bit character length } void usart_sendchar(char c){ while(!(UCSR0A & UDRE0));//Warten bis UDR bereit ist UDR0 = c; }
MfG Sebastian







Zitieren

Lesezeichen