Funktioniert leider nicht. Unten sind auszüge aus meinem Programm.
int main(void)
{
DDRB = 0x02;
DDRA = 0xE7;
TCCR0 = _BV(CS02) | _BV(CS01) | _BV(CS00);
USART_Init(25);
SendeString("Start"); // Senden funktioniert!!
sei ();
int bisLeft = 0;
int bisRight = 0;
int counterLeft=0;
int counterRight = 0;
char buffer[100];
int n = 1;
int pressed = 0;
while (1) {
// Umdrehungen der Räder - Berechnung und Ausgabe
if (bit_is_set (PINA, PINA3)) {
if (bisLeft==0) {
n = sprintf(buffer,"Counter Left : %d Counter Right : %d \r",
counterLeft, counterRight);
SendeString(buffer);
counterLeft++;
bisLeft = 1;
}
} else {
bisLeft = 0;
}
if (bit_is_set (PINA, PINA4)) {
if (bisRight==0) {
counterRight++;
n = sprintf(buffer,"Counter Left : %d Counter Right : %d \r",
counterLeft, counterRight);
SendeString(buffer);
bisRight = 1;
}
} else {
bisRight = 0;
}
// Switch der Direction
if (bit_is_clear (PINB, PINB0) && (pressed ==0)) {
n = sprintf(buffer,"\n\r***\n\r");
SendeString(buffer);
n = sprintf(buffer,"direction: %d",direction);
SendeString(buffer);
n = sprintf(buffer,"\n\r***\n\r");
SendeString(buffer);
direction = switchState(direction);
pressed = 1;
} else
{
if (pressed > 0) {
pressed++;
if (pressed == 10000)
pressed = 0;
}
}
//
//usartReceive = USART_Receive();
//USART_Transmit(usartReceive);
//if (usartReceive == 'w')
// MotorLeftForward();
// Ausgleich der Räder
//if (counterLeft > counterRight) {
// MotorLeftStop();
//} else
// MotorLeftForward();
}
/***********************************************************************
*******/
return 0;
}
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud<<8);
UBRRL = (unsigned char) baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
SIGNAL (SIG_UART_RECV) {
unsigned char recv;
recv=UDR; //Zeichen vom Register holen
UDR=recv; //Zeichen zurücksenden
}
mfG Harald