Robo2004
09.05.2004, 22:46
Hallo,
das Folgende Programm soll vom µC zum PC über die Serielle- Schnittstelle Daten übertragen, das funktioniert aber nicht ganz korrekt. Es kommt nur Datenmüll beim PC an, weiß jemand woran das liegt??
Ich benutze:
- ATMega8-16PI
- 3,6864MHz Quarz
- AVR-GCC
#include <io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 3686400 // 3686Khz
#define UART_BAUD_RATE 9600 // 9600 baud
#define BAUD (F_CPU / (16L*UART_BAUD_RATE) -1)
typedef unsigned char BYTE;
typedef unsigned short WORD;
int main(void)
{
//outp (F_CPU / (UART_BAUD_RATE * 16L) - 1, UBRR);
UBRRH = (unsigned char) (BAUD >> 8);
UBRRL = (unsigned char) BAUD;
UCSRB = (1<<TXEN);
while(1)
{
while (!( UCSRA & (1<<UDRE)) );
USART_Transmit('H');
USART_Transmit('a');
USART_Transmit('l');
USART_Transmit('l');
USART_Transmit('o');
USART_Transmit((unsigned char)0x0A);
USART_Transmit((unsigned char)0x0D);
}
return 0;
}
das Folgende Programm soll vom µC zum PC über die Serielle- Schnittstelle Daten übertragen, das funktioniert aber nicht ganz korrekt. Es kommt nur Datenmüll beim PC an, weiß jemand woran das liegt??
Ich benutze:
- ATMega8-16PI
- 3,6864MHz Quarz
- AVR-GCC
#include <io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 3686400 // 3686Khz
#define UART_BAUD_RATE 9600 // 9600 baud
#define BAUD (F_CPU / (16L*UART_BAUD_RATE) -1)
typedef unsigned char BYTE;
typedef unsigned short WORD;
int main(void)
{
//outp (F_CPU / (UART_BAUD_RATE * 16L) - 1, UBRR);
UBRRH = (unsigned char) (BAUD >> 8);
UBRRL = (unsigned char) BAUD;
UCSRB = (1<<TXEN);
while(1)
{
while (!( UCSRA & (1<<UDRE)) );
USART_Transmit('H');
USART_Transmit('a');
USART_Transmit('l');
USART_Transmit('l');
USART_Transmit('o');
USART_Transmit((unsigned char)0x0A);
USART_Transmit((unsigned char)0x0D);
}
return 0;
}