Hallo,
das folgende Skript soll auf dem Terminal "Hallo" schreiben. Leider kommen keine Signale zum Terminal. Es ist definitiv kein Hardwarefehler.
Skript:
main.c:
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.h:
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);
usart.c:
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;
}
Es wäre nett, wenn jemand mal drüber gucken könnte, wo der Fehler liegt.
MfG Sebastian
Lesezeichen