Hey Leute, folgende Situation: µC: ATMega8 1x LCD 2x16 mit Hintergrundbeleuchtung 1x Stellmotor (leider Analog, aber für Endeinsatz wird dann ein Digitaler gekauft) 1x eine Art Signalgeber (Kurbelwelle von motor wurde so verändert, das jede viertel umdrehung ein Kontakt geschlossen wird, variable spannung (also demnach wird dort Vcc anliegen) Meine Aufgabe hier ist die folgende: Durch die Signale der Kurbelwelle die Drehzahl berechnen, wenn Drehzahl unterhalb/oberhalt von eingestellten Richtwert => Stellmotor betätigen (je nachdem mehr oder weniger gaß geben am motor ...) und dazu noch das ganze auf einem LCD ausgeben. Dazu gibt es 3 Taster: Taster1: LCD-Modi-Umschalter (1: Aktuelle Drehzahl anzeigen; 2: Richtwert einstellen (via Taster2 und Taster3); 3: Betriebsinfos: Laufzeit etc ... Taster2 u. Taster3; Je nachdem, welcher LCD-Modus gewählt ist Klingt eigentlich gar nicht sooo schwer, nur es fehlt an grundlage der µC Programmierung (also nicht an C selbst etc, ehr *wie zähle ich besser die Signale, via Timer oder Externen Interrupt* und solche sachen) Oben stand auch schon gleich meine erste Frage: Wie zähle ich besser die Signale: via Timer oder Externen Interrupt Ich dachte mir, eine möglichkeit wäre ja einen 8bit Timer zu nehmen, als Clock-Source dann die Signale der Kurbelwelle an T0 und via Compare-Match alle 4 Clocks dann den Interrupt auszulösen, der eine variable Umdrehungen inkrementiert. Aber es würde doch bestimmt auch mit einem Externen Interrupt funktionieren, dann würde ich mir einen Timer sparen und könnte vllt auch einen ATTiny2313 benutzen (Weil dann wär 1Timer zum Zählen von Sekunden und der andere für den Stellmotor) Und dann gibts es ja noch einen sog. ICP-Pin, mit dem könnte man soetwas doch auch bewergstelligen, oder liege ich da falsch? Wie man sieht, eher eine Design-Frage, aber ich möchte bestmöglich den µC nutzen. Zum zweiten hab ich ein Problem mit den Tastern. Ich habe ja 3 Stück davon, aber es gibt ja nur 2 Inputs für Externe-Interrupts. Wie bewergesllige ich, das ich die Taster auslesen kann, wenn möglich Interrupt-basierend? (Die Change-Interrupts sind da wohl eher nicht geeignet, weil diese ja in beiden fällen "feuern" 0->1 und 1->0) Fragen über Fragen =) Hoffe mir kann jemand Helfen. Gruß
Philipp Sommer schrieb: > Wie zähle ich besser die Signale: gar nicht. Am einfachsten misst du die Zeit zwischen den Pulsen. Das ist im Prinzip eine Frequenzmessung und dafür gibt es zig Threads hier im Forum. > Und dann gibts es ja noch einen sog. ICP-Pin, mit dem könnte man soetwas > doch auch bewergstelligen, oder liege ich da falsch? Nein, du liegst nicht falsch. ICP bedeutet Input Capture. Und das ist genau das Feature deines Timers, mit dem man am einfachsten eine Frequenzmessung macht. > > Wie man sieht, eher eine Design-Frage, aber ich möchte bestmöglich den > µC nutzen. Sammle erst mal Erfahrung, ehe du nach 'der Besten' Lösung suchst. Die fällt nämlich nicht vom Himmel, sondern die muss man sich erarbeiten. Wir können dir hier viel erzählen, aber solange du die verschiedenen Verfahren nicht ausprobiet und ihre Vor und Nachteile miteinander verglichen hast, wirst du nicht verstehen, warum in manchen Situationen ein Verfahren schlechter als andere ist, während es in anderen Situationen besser ist. > > Zum zweiten hab ich ein Problem mit den Tastern. Ich habe ja 3 Stück > davon, aber es gibt ja nur 2 Inputs für Externe-Interrupts. Für Taster braucht man keine externen Interrupts. Dein µC ist so schnell, dass du dich aus seiner Sicht in extremer Zeitlupe bewegst. Selbst wenn du es schaffen würdest, eine Taste innerhalb von 5 Hunderstel Sekunden zu drücken und wieder loszulassen, entlockt das einem µC nur ein müdes Gähnen. In der Zeit zwischen Drücken und Loslassen löst der zwischendurch noch 'ein paar teuflisch schwierige quadratische Gleichungen' (tm Douglas Adams). Kein Grund für einen externen Interrupt. Alle paar Millisekunden nachsehen, ob eine Taste gedrückt ist oder nicht reicht völlig aus. Entprellung - ganz unten die C-Routinen
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.