Hi SlyD,
danke für Deine Antwort.
Habe ich es richtig verstanden, dass ich theoretisch nur die ISR bearbeiten muss und direkt unter ,,case TWI_MTX_DATA_ACK" abfragen muss, ob ich einen Repeated start brauche oder ein stop?
Wie findet der Roboter denn heraus, ob der Sensor einen repeated start benötigt? Was kommt also in die if-Abfrage? Das ist mir noch nicht ganz klar, das finde ich auch niergends im Datenblatt. Der Roboter müsste ja dazu in die Zukunft sehen?!
Danke nochmal und
Viele Grüße
teamohnename
EDIT: Oder hat das was mit den Codes in Figure 87 oder 89 des ATmega32 Datenblattes zu tun? Dann hätte sich für mich auch die Frage mit ,,in-die-Zukunft-sehen" geklärt (der Master erkennt das dann am vorherigen Verhalten des Slaves?!).
Die Werte aus diesem Diagramm stehen ja in TWSR. Einzig logisch wäre meiner meiner Meinung nach nur Figure 87, da der Master zu dem Zeitpunkt noch im Sendemodus ist und erst einen Repeated Start senden muss, bevor er neu anfragt und in den Receivermodus geht. Laut dem Datenblatt sendet der Slave (MLX90614) nachdem die Schreibeadresse und 0x07 gesendet wurde ein Ack. Der Code, der dann in TWSR stehen würde, wäre dann theoretisch 0x28. Dann müsste man unter ,,case TWI_MTX_ADR_ACK" rep=1 schreiben. Wo müsste dann aber rep = 0 stehen, also ein Stop eingeleitet werden?
Lesezeichen