Impulslänge messen - kann ich das so machen?

Gast #804567
Lesenswert?

Hey, brauche einmal jmd der mir vielleicht einen Denkfehler abnimmt...

Ich hab das obige Programm über's STK500 mit Port D an die Switches 
gehangen und geb die anzahl der "fuel_ticks" jede sekunde über ein LCD 
aus um zu sehen ob das überhaupt soweit funktioniert... (Die ausgabe 
efolgt im hautpprogamm...)

Die ISR's für Int0 und Int2 hab ich weggelassen da sie nicht zum Problem 
beitragen.

Mein problem ist das z.b. wenn ich den Knopf die ganze Zeit gedrückt 
halte (also auf Masse ziehe wodurch der Zähler ununterbrochen zählen 
sollte) der "fuel_ticks" z.t. niedriger ist als wenn ich den knopf 
mehrmals kurz drücke und zum Teil auch scheinbar zufällig hohe/niedrige 
Werte annimmt (bei kurzem Drücken). Wie kann das sein? Eigentlich sollte 
der Wert am höchsten sein wenn der Knopf durchgehen gedrückt wird....

Ein überlauf des als "unsigned short" deklarierten Zählers schließe ich 
eigentlich aus da der Wert in der Timer_Overflow Interrupt routine nur 
mit einer Frequenz von 31,150 kHz inkrementiert wird, (1/(8.000.000 / 
256)) und somit die 2^16 - 1 (65535) nicht auch nur zur hälfte erreichen 
kann. Außerdem läuft die Routine ja nur während eines "Pulses", also 
während der Pin auf Masse gezogen wurde. Somit müssten sich die größten 
Werte einstellen wenn der Knopf ununterbrochen gedrückt wird da die 
Routine in desem Fall durchlaufen müsste, oder hab ich was falsch 
gemacht?

Denkfehler? Rechenfehler?

Bitte um Hilfe!
Danke im vorraus, Dennis Fisch
Angehängte Dateien:

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