Datum: 15.10.2007 16:29
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
Datum: 15.10.2007 16:38
Willst du einfach den Interrupt deaktivieren? Dann setze die Priorität der TimerC Interrupts auf 0.
Datum: 15.10.2007 16:41
Oder du wahrscheinlich eher die Priorität des Compare-Interrupts.
Datum: 15.10.2007 16:55
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
Datum: 15.10.2007 17:09
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.
Datum: 15.10.2007 18:31
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
Datum: 15.10.2007 20:23
> 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.
Datum: 16.10.2007 10:16
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
Datum: 17.10.2007 22:48
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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel