Forum: Mikrocontroller und Digitale Elektronik I2c Acknowledge Polling


von Tim (Gast)


Lesenswert?

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.

}

von Jakov K. (jackenkoffer)


Lesenswert?

Ich möchte dir zwar nichts vorschreiben, jedoch ist es sehr 
unkonventionell schleifen mit goto anweisungen durchzuführen.
Nimm lieber eine Do-While-Schleife.
( womöglich löst es nicht das Problem, jedoch macht es aus dem Quelltext 
einen ordentlichen C-Quelltext)
Gruß, Jakov

von Tim (Gast)


Lesenswert?

Danke. Das werde ich beherzigen, kann mir jedoch jemand an meiner 
Problematik weiterhelfen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.