Nein nicht nach ganz oben natürlich das was ich davor gesagt hatte galt natürlich immer noch also innerhalb der IF Bedingung nach oben.Zuletzt hat SlyD doch gesagt, dass das nach ganz oben muss?!
Zum Repeated Start:
OK passt schon so.
Beim read Aufruf wird wieder ein Start gesendet.Problem ist also die Lesefunktion; Anscheinend macht die Probleme.
Check das auch mal auf dem Oszi - eigentlich müssten dann da zwei Starts hintereinander kommen.
Deswegen meinte ich auch das da noch bisschen was anderes geändert werden müsste und das alles eben in EINE transaktion gehört (sprich: einen Funktionsaufruf in der Lib - der Rest wird dann in der Lib gemacht).
Deswegen müsste man da eigentlich noch einen weiteren Zustand in task_I2CTWI einführen - eben für request mit Rep start und da dann kein 1<<TWSTA mehr setzen.
Ggf. könnte mans auch von dem no_rep_start flag abhängig machen (und es dann nach dem TWCR aufruf da zurücksetzen) und die vorhandenen benutzen aber k.a. ob dann noch alle anderen Funktionen ordnungsgemäß laufen. Dann ginge es wie bisher mit zwei Aufrufen.
(allerdings nicht mit readRegisters wie Du das oben gemacht hast)
MfG,
SlyD
Lesezeichen