Forum: Mikrocontroller und Digitale Elektronik Kann man beim R8C13 den "Output Compare" deaktiveren?


von Speeder (Gast)


Lesenswert?

Hallo zusammen

Ich bin Anfänger und habe noch das eine oder andere Problem mit dem 
R8C13 von Renesas.

Ich bin am Bau einer Zündung für einen 2-Takter
Den TimerC lasse ich immer laufen und messe die Zeit für 1 Umdrehung.
Die Drehzahl kann ich somit schon messen

Mit Output Compare will die die Zündung auslösen. Leider wird die 
Procedure "OutputCompare" jedesmal ausgelöst wenn der Wert erreicht 
wird.
Was leider nicht immer nögtig ist.

Wie kann man die Interruptroutine "Output Compare" von TimerC 
deaktivieren?

Gruss

Speeder

von Martin (Gast)


Lesenswert?

Willst du einfach den Interrupt deaktivieren? Dann setze die Priorität 
der TimerC Interrupts auf 0.

von Martin (Gast)


Lesenswert?

Oder du wahrscheinlich eher die Priorität des Compare-Interrupts.

von Speeder (Gast)


Lesenswert?

Der TimerC sollte aber weiterlaufen da ich die Umdrehungszeit ständig 
messen muss.

Wenn ich aber die Interruptpriorität auf Null setzte dann wird der Timer 
ja nicht mehr laufen.

Ich probiere es mal anders zu erklären:

Für ein Umdrehung läuft der TimerC mehrfach über. Es wird also gezählt 
wieviele Takte für einen Umdrehung benötigt wird.


Für den benötigten Zündzeitpunkt benötige ich aber pro Umdrehung nur 
einmal eine Suslösung vom "Output Compare".

Wenn aber jedes mal wenn der Timer läuft ein "Output Compare" ausglöst 
wird dann zündet es Pro Umdrehung mehrfach.

Ich weiss im Moment nicht wie ich dies möglichst "sauber" in den Griff 
bekommen?


Gruss

Speeder

von Martin (Gast)


Lesenswert?

Ok, also der Timer läuft mehrmals über. Du zählst ja sicherlich mit, wie 
oft er überläuft. Damit erweiterst du quasi die 16 Bit des Timers um ein 
paar zusätslich Bits. Die Comparefunktion kann aber nur den Timerwert 
selbst vergleichen.

Muss das Timing wirklich so genau sein, oder kannst du den Timer 
langsammer laufen lassen, so dass er nicht mehr über läuft.

Ansonsten :
Im TCOUT Reg kannst du den Pin deaktivieren. Dann könntest du den Pin 
per Software im Compate-Interrupt setzten.

Ich muss eins sagen, mit dem R8C/13 habe ich noch nicht viel gearbeitet.

von Speeder (Gast)


Lesenswert?

Hallo Martin


<Du zählst ja sicherlich mit, wie
oft er überläuft. Damit erweiterst du quasi die 16 Bit des Timers um ein
paar zusätslich Bits.>

Ja genau ich zähle den Überlauf jedesmal plus 65535.

<Muss das Timing wirklich so genau sein, oder kannst du den Timer
langsammer laufen lassen, so dass er nicht mehr über läuft.>

Soviel ich weiss kann man den TimerC nicht längsamer laufen lassen da er 
keinen Prescaler hat Die anderen Timer besitzen allerdings so einen.. 
Auch möchte ich dies nicht da ich so eine höhere Genauigkeit habe.


<Im TCOUT Reg kannst du den Pin deaktivieren. Dann könntest du den Pin
per Software im Compate-Interrupt setzten.>

Den Pin für den "Output Compare" verwendet ich eigentlich gar nicht.
Ich verwende lediglich die Interrupt-Prodedure davon.


Gruss

Speeder

von Martin (Gast)


Lesenswert?

> Den Pin für den "Output Compare" verwendet ich eigentlich gar
> nicht. Ich verwende lediglich die Interrupt-Prodedure davon.

Um so besser. Wo ist noch das Problem? Du hast einen Compare-Interrupt 
und einen Zählerwert der sich aus der Anzahl der Timer C überläufe 
ergibt. Da hast du doch alles was du brauchst.

von Speeder (Gast)


Lesenswert?

Ich habe jetzt in der Interruptroutine für "Output Compare" eine 
If-Anweisung reingehängt damit ich den Code darin nur ausführe wenn ich 
will.

Aber ist dies wirklich sauber programmiert oder wäre es nicht besser den 
Interrupt irgendwie zu deaktivieren?


Gruss

Speeder

von Martin (Gast)


Lesenswert?

Wennst funktioniert ist es OK und sauber (in diesem Fall). Das mit 
Interrupt deaktivieren das wird eine Krückerei (siehe oben).

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.