Hallo Freunde,
ich habe mal eine Frage zu folgendem Thema.
Ich möchte kontinuierlich(!) die Zeit zwischen Zwei Tastendrücken
messen.
Jeder Tastendruck ist durch das Entprellmakro von Peter Dannegger
entprellt.
Meine Überlegung ist jetzt wie ich das Programm aufbaue. Bisher hab ich
mir folgendes überlegt:
In der main wird der Tastendruck abgefragt und entprellt. In einer ISR
befindet sich ein Zähler, der zyklisch inkrementiert wird und beim
zweiten Tastendruck die Zeit in ms berechnet.
1 | uint8_t z1=0, z2=0;
|
2 |
|
3 | main(){
|
4 | while(1){
|
5 | if (debounce(x,y)){
|
6 | zeit = z2 * 8ms; //zähler z2 wird alle 8ms in ISR inkrementiert
|
7 | zähler = 0;
|
8 | }
|
9 | }
|
10 |
|
11 | }
|
12 | ISR (OVF Timer1){ // alle 8E6/256
|
13 | if(z1==255) z2++; // z1 ist der zähler 1
|
14 | z1++
|
15 | }
|
Ein Problem dass ich noch sehe ist die Initialmessung, die ich jetzt
über nen flag starten lassen würde (sonst würde ja vor dem ersten
Tastendruck der Zähler trotzdem inkrementiert werden und die Zeit
zwischen nulltem und erstem Tastendruck gemessen werden).
Kann man das so machen?
Gibt es vielleicht allgemein Verbesserungsvorschläge?
Dankeeeee