-
-
Zeitabhängiger Zähler aber wie?
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
-
Erfahrener Benutzer
Roboter-Spezialist
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ß
-
Erfahrener Benutzer
Roboter Genie
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ß
-
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
-
Erfahrener Benutzer
Roboter Genie
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ß
-
Erfahrener Benutzer
Robotik Visionär
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..
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen