SRF-08 interrupts - timer benutzen?

Gast #3266465
Lesenswert?

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
Angehängte Dateien:
Gast #3266622
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren