Forum: Mikrocontroller und Digitale Elektronik SRF-08 interrupts - timer benutzen?


von adi (Gast)


Angehängte Dateien:

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

von adi (Gast)


Lesenswert?

Ach ja, Microcontroller ist natürlich ein:

----------ATMEGA8------------

von adi (Gast)


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

von adi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.