Forum: Mikrocontroller und Digitale Elektronik Mehrere Zeitbasen im Projekt verheiraten


von Timer (Gast)


Lesenswert?

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

von Pic T. (pic)


Lesenswert?

Eine 1Khz Zeitbasis generieren, und dann im Interrupt zwei Zähler, 
welche
bis 3 oder 7 Zählen, und entsprechendes Bit/Pin schalten.

von Tom M. (Gast)


Lesenswert?

ggT und KgV?

von Night H. (viperchampion)


Lesenswert?

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.

von Night H. (viperchampion)


Lesenswert?

-.- Pic war schneller

von Falk B. (falk)


Lesenswert?

@  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...>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
Noch kein Account? Hier anmelden.