statt mit einem pointer das array zu befüllen wwürde ich mit 2 inizes arbeiten

Code:
int writecount;
int readcount;

ISR(){
   Buff[writecount++] = RxByte;
}

...
   bytestoread = writecount - readcount;
   if (bytestoread < 0) bytestoread += buffsize;
   if (bytestoread > 1) { // mehr als 2 bytes empfangen (also auch das längebyte)
      if ((bytestoread > buff[readcount+1]+2)   // ausreichend bytes anhand der länge im paket ?
         && (getCRC(&buff[readcount]) == buff[buff[readcount+1]+2])) { // crc nachrechnen und mit der im paket vergleichen
             doyourwork();
      }
   }
ACHTUNG dieser code kann rechenfehler beinhalten, aber so ungefähr habe ich das gelöst