Hallo brauche dringend Hilfe.
Bin dabei das Acknowledge polling zu implementieren.
Laut Datenblatt:
Send Write Command
Send Stop Condition to Initiate Write Cycle
Send Start
Send Control Byte with R/W = 0
Did Device Acknowledge (ACK = 0)?
....Yes....
Next Operation
...No....
zurück zu Send Start.
so hab nun implementiert, nun sieht es wiefolgt bei mir aus, wenn Page
Grenze erreicht ist und zu nächsten Page springen soll:
1 | //dass Send Write Command bedeutet, das senden von Daten (I2C_Send)oder wie jetzt
|
2 |
|
3 |
|
4 | if ((Address + i) % EEPROM_PAGE == 0) {
|
5 | // Acknowledge Polling
|
6 | I2C_Stop(Base);
|
7 | loop: //Slave Addresse mit R/W bit
|
8 | ack = I2C_StartTX(Base, EEPROM_SLAVE, 0);
|
9 | if (ack != 0) // falls kein ack dann
|
10 | goto loop; //nochmal Start() senden
|
11 | else
|
12 | goto next_page;// falls ack, gehe zur nächsten Page
|
hoffe das ich es richtig gemacht habe.
}