In der Hauptschleife überschreibst du möglicherweise den Wert von agrobot, weil sowohl die ISR als auch in main (oder Unterfunktionen) der Wert gesetzt wird. Überleg dir genau, welcher Teil die Variable setzen darf, und welcher sie "konsumiert".

Das Konsumieren könnte so gehen:
Code:
uint8_t agro;
uint8_t sreg = SREG;
cli();
if (agrobot != leer)
{
   agro = agrobot;
   agrobot = leer;
}
SREG = sreg;