robo-sebi
28.06.2009, 20:49
Hallo,
das folgende Skript soll auf dem Terminal "Hallo" schreiben. Leider kommen keine Signale zum Terminal. Es ist definitiv kein Hardwarefehler.
Skript:
main.c:
#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:
#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:
#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
das folgende Skript soll auf dem Terminal "Hallo" schreiben. Leider kommen keine Signale zum Terminal. Es ist definitiv kein Hardwarefehler.
Skript:
main.c:
#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:
#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:
#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