Also in erster Linie gehts mir um diesen Teil hier:

Code:
int8_t encode_read_timeout(void)
{
 int8_t tmp = encode_read();
 if(tmp != encoderwert)
 timeCount = 3000;
 return tmp;
}
Das funktioniert anscheinend nur wenn encoderwert = 0 zutrifft.
Aber warum?