www.mikrocontroller.net

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


Autor: Speeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder du wahrscheinlich eher die Priorität des Compare-Interrupts.

Autor: Speeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Speeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Speeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.