Gast
#2297296
Hallo, ich versuche über eine Zeitmessung mit dem 16 Bit timer meines atmega 8 im Endeffekt auf die Geschwindigkeit zu kommen. Vorerst messe ich nur einmal die Zeit. Die Messung soll über 2 lichtschranken geschehen. Jetzt hab ich aber das Problem dass das ganze recht ungenau ist. Ich erklär mal wie ich es gemacht habe: Zwei Lichtschranken, beide lösen bei der fallenden Flanke an den Pins INT1 und INT0 einen Interrupt aus, der erste Interrupt schaltet den Timer ein, der zweite Interrupt schaltet den Timer aus. Damit ich eine schöne Flanke bekomme verwende ich eine LM339(komperator). Bei jedem Overflow wird die Variable i um eins herhöht, bei der Berechnung zähle ich dann i mal die zeit eines Timerdurchlaufes dazu. Mein Problem, wenn ich den zweiten interrupt auslöse(zeitmessung fertig,timer stoppen), dann bleibt der Timer anscheinend nicht sofort stehen, sprich ich sehe am LCD dass sich die Zeit noch im ca Zehn-Millisekundenbereich ändert. Teilweise noch eine halbe Sekunde nachdem auslösen der Lichtschranke. Ich würde gerne sehr genau messen, sprich am liebsten auf 10-100us. Jetzt meine Fragen: :) Ist das so wie ich es mir gedacht habe eine gute Lösung? Geht es einfacher / besser? und was könnte ein Grund dafür sein warum ich ungenau messe? Die Flanke nicht "genau" genug? oder sind die INT0/1 pins ungeeignet? Freue mich über jede Anregung/Kritik. Vielen Dank im voraus ! code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |