Guten Tag, ich möchte den SRF08 mit TWI anzusteuern. Es sollte Interrupts benutzen, also KEINE while-schleifen, um twint zu prüfen. Ich habe schon einige beiträge hier gesehen, wo beschrieben wurde, dass man eine state-machine in der ISR machen sollte. Ich habe allerdings noch kein einziges Beispiel gesehen, deshalb weiss ich nicht, wie das dann genau aufgebaut ist. Ausserdem steht im Datenblatt (im Angang), dass man keinen Timer braucht, um auf das Ergebnis zu warten, man könnte einfach ein Register auslesen, bis es nicht mehr 0xFF ist. Aber dann würden doch die ganze Zeit Interrupts auftreten, welche einfach nur prüfen, ob der Sensor wieder bereit ist. Ist das Sinnvoll? Oder wird da zu viel Rechenleistung verschwendet. Ich wäre froh um eine Antwort und Danke im vorraus, adi
Ach ja, Microcontroller ist natürlich ein: ----------ATMEGA8------------
Würde das so ungefähr funktionieren? Oder liege ich völlig daneben...? (Ohne Berücksichtigung der Status-Codes) //Initialisierung: //state==1 : start-bit senden, state=2 //state==2 : adresse+w senden, state=3 //state==3 : registernummer senden, state=4 //state==4 : daten senden, state=5 //state==5 : daten senden, state=6 //Messung starten: //state==6 : start-bit senden, state=7 //state==7 : adresse+w senden, state=8 //state==8 : registernummer senden, state=9 //state==9 : daten senden, state=10 //warten: //state==10 : start-bit senden, state=11 //state==11 : adresse+w senden, state=12 //state==12 : registernummer senden, state=13 //state==13 : start-bit senden, state=14 //state==14 : adresse+r senden, state=15 //state==15 : daten lesen, wenn 0xFF dann: state=11 sonst: , state=16 //Low-byte lesen: //state==16 : start-bit senden, state=17 //state==17 : adresse+w senden, state=18 //state==18 : registernummer senden, state=19 //state==19 : start-bit senden, state=20 //state==20 : adresse+r senden, state=21 //state==21 : daten lesen, state=22 //state==22 : nack senden, state=23 //state==23 : start-bit senden, state=24 //High-byte lesen: //state==24 : adresse+w senden, state=25 //state==25 : registernummer senden, state=26 //state==26 : start-bit senden, state=27 //state==27 : adresse+r senden, state=28 //state==28 : daten lesen, state=29 //state==29 : nack senden, state=5
Ich gebs auf mit den Interrupts beim TWI. Ich machs jetzt einfach mit warten, bis TWINT gesetzt ist. adi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.