Hallo,
Ich hab einen Software i2c Treiber den ich auf HW i2c (USIC3) portieren
möchte. Ich möchte die HW aber nicht interrupt gesteuert nutzen sonder
mit polling warten usw. Aber ich habe bis jetzt noch keine Möglichkeit
gefunden zu warten bis die Übertragung fertig ist so wie bei AVR zum
Beispiel.
Hier mal ein Auszug aus i2c start:
1 | ...
|
2 | ...
|
3 | // check TDV, wait until TBUF is ready
|
4 | while(U3C1_TCSRL & 0x0080);
|
5 |
|
6 | // clear PSR_TBIF
|
7 | U3C1_PSCR |= 0x2000;
|
8 |
|
9 | // clear PSR_SCR, PSR_TSIF, PSR_TBIF
|
10 | U3C1_PSCR |= ( (1<<IIC_SCR) | (1<<IIC_TSIF) | (1<<IIC_TBIF) );
|
11 |
|
12 | // load transmit buffer TBUF00
|
13 | U3C1_TBUF00 = ((U3C1TDF_MStart << 8) & 0x0700) | (addr & 0x00FF);
|
14 |
|
15 | // wait until transmission completed
|
16 | while(U3C1_??? Finished??);
|
17 | // habe nichts gefunden auf das ich hier warten könnte !!!
|
18 | ...
|
19 | ...
|
Da ich ACK polling machen möchte (für EEPROM) muss ich hier warten und
das ACK abfragen! Aber eben habe in der USIC noch nichts gefunden.
Hat jemand hier ne Idee?