Hallo,
Ich versucher derzeit mit einem ATMEGA8 (12Mhz von einem externen Quarz) auf einem STK500 Daten an meinen Rechner (Hyperterminal) zu senden.
Am rechner kommt aber nichts an. Das zweiadrige Kabel für RS232 Spare habe ich an RXD und TXD angeschlossen (also Pin eins und zwei von Portd D).

Der XTAL1 Jumper auf dem STK500 steckt und OSCSEL Jumper steckt links (aslo von Pin zwei nach Pin drei - laut Handbuch "On-board crystal signal conected").
Um zu überprüfen, ob die Baudrate richtig eingestellt ist habe ich in mein Programm ien paar Zeilen eingefügt, die dafür sorgen, dass die Leds blinken, wenn 1000mal eine Naricht versendet wurde. In ca. 41Sekunden gehen die Leds 50 mal an bzw aus (also erfolgen in dieser zeit 50.000 Sendungen).

Ich habe bemerkt, das der Cursor(ich meine den blinkenden Strich) im Terminal sofort erscheint, auch wenn er gerade erst verschwunden ist, wenn ich das STK500 einschalte. Das heißt es wird wahrscheinlich schon ein Kommunikationspartner gefunden.

Hier der Code:
Code:
#include <avr/io.h>

#define F_CPU 12000000UL
#define BAUDRATE 9600UL 
#define UBBR F_CPU/16/BAUDRATE-1

uint16_t zaehler = 0;
uint8_t Zustd = 0;

void usart_init(void){
	UBRRH = UBBR >> 8;   //Baudrate einstellen
	UBRRL = UBBR & 0xff; //Baudrate einstellen

	UCSRB = (1<<TXEN); //Transmitter (Daten schicken) aktivieren
	UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ0); //8Bit länge und 1 Stoppbit; Asynchron
}
void usart_send(uint8_t Sendung){
	while (!(UCSRA & (1<<5)));  //warten bis Senden moeglich (UDRE)
    UDR = Sendung;
}


int main(void){
	DDRB = 0xff;
	PORTB = 0x00;

	usart_init();

	while(1){
		usart_send(1);

		zaehler++;
	    if (zaehler >= 1000)
	    {
			zaehler = 0;
			if(Zustd == 0){   
		  		PORTB = 0xFF;
				Zustd = 1;
			}
			else{  
		  		PORTB = 0x00;
				Zustd = 0;
			}
	    }	
	}
}