Hallo zusammen, ich habe ein Programm geschrieben dass das Digitalsignal eines speziellen Ölsensors zur Wartungsintervalverlängerung bei PKWs ausgibt. Die "Grundperiode" mache ich per Timer - Interrupt. Um diese Zeit anpassen zu könne, lade ich den Timer-Counter in der ISR vor (hier liegt das Problem). Die einzelnen Zeitkonstanten kann ich per Poti & ADC verändern. Bei der "Temperaturzeit" funktioniert das ganze (diese wird per _delay_ms (ms) erzeugt). Die Grundperiode (Coolzeit / t_cool) ändert sich aber nicht. Ändere ich die Grenzen (MIN_COOL, MAX_COOL) dann verändert sich auch die Periodendauer. Gebe sie direkt im Code (z.B. mittels set_timer (700);) fest an, passt die Periodenzeit (Oszi). Es liegt auch nicht am Poti, habe die Verwendung der zwei Potis schon getauscht (also Zuordung Poti1/2 auf t_temp und t_cool) und damit wie zuvor t_temp verändert. Deshalb stellt sich für mich die Frage, ob das Vorladen vllt. nur mit Konstanten geht. Im Manual sowie Suchefunktion finde ich aber nix. Vielen Dank im Voraus. Gruß, Markus
Timer Nachladen macht man beim AVR nicht! Das ist Murks, dafür gibt es den CTC-Modus. Siehe AVR-GCC-Tutorial, genauer hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#CTC-Betriebsart_.28Clear_Timer_on_Compare_Match.29
Vielen Dank für die schnelle Antwort!!! Werde ich gleich umsetzen / probieren.
Hallo nochmal, hab es jetzt mal umgeschrieben, allerdings wird im CTC-Mode kein Output-Compare-Match-Interrupt geschmissen. Wer weiß weiter?
Hallo nochmal, der Timer-Compare-Interrupt tut jetzt so wie er soll. Ich habe auch die Funktion set_timer (ushort time) angepasst. Allerdings verändert sich (trotz veränderung des Compare-Registers) die Periodendauer nicht. Ich bin am verzweifeln. Bitte um Hilfe.
Nachtrag: Erledigt. Hatte noch nen kleinen Fehler drin. SORRY für die vielen Posts.
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.