Forum: Mikrocontroller und Digitale Elektronik Impulslänge messen - kann ich das so machen?


von Dilligent (Gast)


Angehängte Dateien:

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

von FBI (Gast)


Lesenswert?

"fuel_ticks * 1000"

Und Du meinst wirklich, daß da nichts überläuft?

von Dilligent (Gast)


Lesenswert?

Oh verdammt... mist, ja ja auf alles achtet man und dann sowas, sorry 
für meinen sinnfreien beitrag :(

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.