Hallo zusammen,
ich bin Neuling auf dem Gebiet der uC. Seit neustem beschäftige ich mich mit dem TWI. Der Code von bhm hat mir schon seehr viel geholfen, allerdings hab ich ihn teilweise noch nicht ganz durchschaut. Wer hat Lust, mir folgende Zeilen (den Knackpunkt der Funktion) zu erklären:
Auszug aus Master-Receiver von bhm's TWI-Lib
Code:
while (1) { // endlos, verlassen via break in if TW_Status
if (len<lenmax) {
TWCR = _BV(TWEA) | _BV(TWEN) | _BV(TWINT); //receive, ACK,
} else {
TWCR = _BV(TWEN) | _BV(TWINT); //receive, NACK,
}
waitTWINT();
if (TW_STATUS != TW_MR_DATA_ACK) break; // LOOP VERLASSEN
*Data++ = TWDR; len++; // Daten verarbeitet
}
Meine Fragen dazu:
- was hat es mit der Längengeschichte (Variablen len und lenmax) auf sich
- gesamte funktionsweise der while-Schleife
Toll wäre eine kurzer, verständlicher Abriss über die Schritte, die in der while-Schleife passieren. Das würde mir sehr weiterhelfen und zum Gesamtverstädnis beitragen.
Vielen Dank im voraus für Euere Hilfe!
Lesezeichen