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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.