PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeitabhängiger Zähler aber wie?



elektrofuxx
30.03.2008, 17:42
Hallo zusammen

Ich will mir eine art Tacho für mein Fahrrad bauen.
OK ich weis es gibt sowas auch zu kaufen aber selber ist der Mann oder die Frau.
Wie es fuktioniren soll habe ich mir auch schon Gedanken gemacht.

Also:
Impulssignal komment vom Reed Kontakt am Rad, rein in den Kontroller.

Jetzt sol ein Counter das ganze innerhalb einer Sekunde zählen und den Whert verarbeiten.

starten - zählen - stoppen (1sec.) - auslesen in Register. und denn von vorne anfangen (natürlich beginnend mit null).

Welchen Zähler muss ich nemen?
Und wie mus ich ihn konfigurieren?
Wie kann ich den Wehrt auslesen? Wobei der Whert selber erstmal unwichtig ist.

MFG
Elektrofuxx

Felix H.
30.03.2008, 18:25
Hi,

wie hattest du denn vor das ganze anzeigen zu lassen? Mittels 7-Segment Anzeige? Zudem welcher AVR, was willst du alles anzeigen (also KM/h, TagesKM, GesamtKM ect.)

Ansonsten sollte das so wie du das meinst schon machbar sein.

Gruß

Gock
30.03.2008, 19:53
Das ist nicht die optimale Methode: 1sec lang zählen. Denn dadurch erzeugst Du einen ziemlich großen Fehler bei niedrigen Geschwindigkeiten. Besser ist es, die Zeit zwischen 2 Pulsen zu messen, das ist genauer.
1. 16Bit Timer im CTC mode laufen lassen (erspart Softwareteiler), keine Timer IRQs.
2. Pulse an ExtIRQ anschließen
3. Bei jedem Puls Timerwert lesen und umrechnen und Timer 0 setzten (TCNT)
Gruß

elektrofuxx
31.03.2008, 09:31
Hallo nochmal

ich wollte erstmal das ganze mit 8 led´s darstellen und nacher wenn ich weitgenug bin dann die daten auf einem Display.

bitte an alle:
schreibt mir bitte doch einer mal ein einfaches und kleines programm. signal rein messung der zeit und ausgabe des gemessenen wehrtes. muss ich noch irgentweleche interups aktiviren?

an gock:
Mir ist schon ungefär klar was du meinst aber bei der umsetzung haperts.
habe auch schon bei google gesucht zwar was gefunden aber eingebaut in großen programmen. damit ich das verstehe muss ich das ding einzelt sehen.

Ich arbeite mit einem:
My AVR USB Bord mit Atmega8.
Software:
Sisy-AVR

mfg
Elektrofuxx

Gock
31.03.2008, 19:53
Wenn Du Dir nicht komplett alles schreiben lassen willst (was hier wahrscheinlich niemand tun wird), dann musst Du schon anfangen, Dich selbst damit auseinander zu setzen.
Das bedeutet Tutorials zu AVR und C oder Assembler lesen, Datenblatt des µCs lesen, konkrete Fragen stellen usw.
Im Datenblatt steht, welche Bits Du 1 setzen musst, damit die entsprechende Funktion erfüllt wird.
Ein Sprungbrett gebe ich Dir:
Um Timer1 nutzen zu können: Datenblatt -> Timer1 -> 16Bit Register discription:
Keine IRQs: TICIE1=OCIE1A=OCIE1B=TOIE1=0 (sind sie beim Start aber eh')
Prescaler zb 64: CS11=CS10=1 (startet den Timer)
TCCR1B = 0b00000011

[TCCR1B |= ((1<<CS11) | (1<<CS10)); (C code)]
Dann noch einen der ext IRQs konfigurieren (MCUSR) und aktivieren (GICR), globale IRQs aktivieren (sei) und restliches Programm schreiben.
Gruß

Besserwessi
31.03.2008, 22:07
Das obige Problem ist nicht besonders zeitkritisch, man kann also auchC oder Basic dafür nehmen. Es ist aber auch noch einfach genug für Assembler und sicher eine gute Übung..