@radbruch
Senden tuht er jetzt ununterbrochen (soll ja auch so sein!)
Aber er "hört" nicht auf mich... und die Servos gehen in die MAX stellung?!?
Code:
void task_befehle(void)
{
char uart_receive_buffer[UART_RECEIVE_BUFFER_SIZE+1];
uint8_t uart_status;
uint8_t read_pos = 0;
uint8_t write_pos = 0;
uint8_t read_size = 0;
uint8_t write_size = 0;
static uint8_t dummy;
if(((uint8_t)(write_size - read_size)) < UART_RECEIVE_BUFFER_SIZE)
{
uart_receive_buffer[write_pos++] = UDR;
write_size++;
if(write_pos > UART_RECEIVE_BUFFER_SIZE)
write_pos = 0;
uart_status = UART_BUFFER_OK;
}
else
{
dummy = UDR;
uart_status = UART_BUFFER_OVERFLOW;
}
long pos = atoi(uart_receive_buffer);
if(pos < 180 && pos > 0)
{
servo1_position = pos;
}
else
if(pos < 360 && pos > 180)
{
servo2_position = pos - 180;
}
else
if(pos < 540 && pos > 360)
{
servo3_position = pos - 360;
}
else
if(pos == -1)
{
I2CTWI_transmitByte(PCF, 0);
}
else
if(pos == -2)
{
I2CTWI_transmitByte(PCF, 3);
}
}
Lesezeichen