Hi, ich hätte mal eine Frage, wie ihr in euren Projekten mehrere unterschiedliche Zeitbasen miteinander verheiratet, damit ich in meinem Projekt eine möglichst sinnvolle Herangehensweise wählen kann: Anforderungen: - Der Controller soll möglichst lange im Sleep-Modus verbringen. Nachdem eine Messung gestartet wird, soll es ggf. Alarm geben. Ich hätte gerne zwei unterschiedliche Alarmsignale mit unterschiedlichen Frequenzen, beispielhaft 3kHz und 7kHz. Nun gibt es ja den Capture-Compare Interrupt und die Timer verfügen teilweise sogar über mehrere CC-Register, so dass ich jeweils ein CC-register für das 3k und das andere für das 7k nutzen könnte. Problem aber: Wie kann ich es realisieren, dass beide unterschiedliche Auslösezeiten durch einen Timer realisiert werden? Sobald das CC-1 erreicht ist, müsste ich den Timer ja zurücksetzen und das CC-2 würde nie erreicht... Setze ich aber erst nach erreichen von CC-2 den Timer zurück, dann würde die Zeitbasis für das CC-1-Signal nicht mehr stimmen... Also zusammengefasst: Wie verheiratet man unterschiedliche Zeitbasen, die parallel nebeneinander existieren sollen? mfg
Eine 1Khz Zeitbasis generieren, und dann im Interrupt zwei Zähler, welche bis 3 oder 7 Zählen, und entsprechendes Bit/Pin schalten.
Erzeuge dir doch ein periodisches Signal durch einen Timer. Innerhalb deiner Interruptroutine zählst du dann Softwaremäßig deinen Timer hoch. Sprich nen Timersignal mit der kleinsten gemeinsammen Auflösung --> 1kHz. Dann zählst du in jedem Zyklus +1 und eine einfache IF-Anweisung ob der Wert erreicht ist und setzt ggf. die jeweiligen Counter wieder zurück.
@ Timer (Gast) >ich hätte mal eine Frage, wie ihr in euren Projekten mehrere >unterschiedliche Zeitbasen miteinander verheiratet, damit ich in meinem >Projekt eine möglichst sinnvolle Herangehensweise wählen kann: Es gibt meist nur eine, daraus wird dann alles abgeleitet. >Nun gibt es ja den Capture-Compare Interrupt und die Timer verfügen >teilweise sogar über mehrere CC-Register, so dass ich jeweils ein >CC-register für das 3k und das andere für das 7k nutzen könnte. Ja. >Problem aber: Wie kann ich es realisieren, dass beide unterschiedliche >Auslösezeiten durch einen Timer realisiert werden? Hast du doch schon beschrieben. >Sobald das CC-1 erreicht ist, müsste ich den Timer ja zurücksetzen und >das CC-2 würde nie erreicht... Nö >Setze ich aber erst nach erreichen von CC-2 den Timer zurück, dann würde >die Zeitbasis für das CC-1-Signal nicht mehr stimmen... Sicher. >Also zusammengefasst: >Wie verheiratet man unterschiedliche Zeitbasen, die parallel >nebeneinander existieren sollen? Der Timer läuft immer durch, nix reset. Der CC-Wert wird jeweils incrementiert. Also bei 1MHz Timertakt sinngemäß
1 | ISR(OCR1A) { |
2 | OCR1A+= 333; // 3 kHz |
3 | // etc.
|
4 | }
|
5 | |
6 | ISR(OCR1B) { |
7 | OCR1B+= 142; // 7 kHz |
8 | // etc.
|
9 | }
|
MFG Falk
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.