eingendlich ist klar das das nicht funktioniert.
mich wundert das das teil nicht abstürtzt. Aber wahrscheinlich hast du im buffer nicht mehr wie ein Zeichen stehen fifo->fragment.size = 1
du kopiert's an die Stelle (speicher) mit unter mehr bytes als du reservt hast.
int8_t *data = (int8_t*) malloc(1); damit erzeugt du ein point auf dem Heap und dort darf jetzt schreiben. mit int8_t data = 0xFF; erzeugst ein lokale variale der Main Funktion die beim Rücksprung wieder hergestellt wird (push pop).
da ich aber nicht genau weiß wie malloc auf dem AVR realiesiert ist gehen mal davon aus das wie unter windows das GlobalAlloc realiesiert ist. und das es deshalb funktioniert.
Ich hoffe ich konntest einiger massen erklären es mir logisch aber mit dem erklären habe ich so meine probleme schon alleine wegen der legatenie.
Gruß
Lesezeichen