cesupa
03.09.2007, 15:25
Hallo,
ich versuche grade eine Verbindung über die RS232 Schnittstelle ziwschen meinem ATMEGA8 und PC herzustellen. Also Windows-Empfangssoftware verwende ich HyperTerminal. Mein UART-Code (von mikrocontroller.net) sieht so aus:
#include <avr/io.h>
#define F_CPU 16000000L
#define BAUD 9600L
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)
#if((BAUD_ERROR>10) || (BAUD_ERROR<-10))
#error FEHLER! BAUD Rate fehlerhaft!!!
#endif
int main(void)
{
UCSRB|=(1<<TXEN);
UCSRC|=(1<<URSEL) | (3<<UCSZ0);
UBRRH=UBRR_VAL >>8;
UBRRL=UBRR_VAL & 0xFF;
while(1){
while(!(UCSRA & (1<<UDRE)))
{
}
UDR='x';
}
return 0;
}
Wenn ich das ganze laufen lasse, empfange ich über HyperTerminal lauter a Zeichen, es sollten aber lauter x Zeichen sein. Hab ich irgendwo einen Fehler gemacht?
Gruß
cesupa
ich versuche grade eine Verbindung über die RS232 Schnittstelle ziwschen meinem ATMEGA8 und PC herzustellen. Also Windows-Empfangssoftware verwende ich HyperTerminal. Mein UART-Code (von mikrocontroller.net) sieht so aus:
#include <avr/io.h>
#define F_CPU 16000000L
#define BAUD 9600L
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)
#if((BAUD_ERROR>10) || (BAUD_ERROR<-10))
#error FEHLER! BAUD Rate fehlerhaft!!!
#endif
int main(void)
{
UCSRB|=(1<<TXEN);
UCSRC|=(1<<URSEL) | (3<<UCSZ0);
UBRRH=UBRR_VAL >>8;
UBRRL=UBRR_VAL & 0xFF;
while(1){
while(!(UCSRA & (1<<UDRE)))
{
}
UDR='x';
}
return 0;
}
Wenn ich das ganze laufen lasse, empfange ich über HyperTerminal lauter a Zeichen, es sollten aber lauter x Zeichen sein. Hab ich irgendwo einen Fehler gemacht?
Gruß
cesupa