Arduino Library ändern um Timer nutzen zu können.

Hallo, für mein Lampenprojekt nutze ich PWM um eine Lampe zu steuern.

Die Platine ist fertig, das Lampensignal hängt fest an Pin 12 ( PD6, OC0A - Also dem PWM-Pin A von Timer0.

Das Problem: Ich habe feststellen müssen, dass Arduino den Timer für millis(), die Wire Library usw. braucht. Auf diese Bibliotheken bin ich angewießen, habe jetzt aber die Lampe nunmal an dem PWM-Pin von Timer0.

Timer2 sollte doch vollkommen identisch zu Timer0 sein, es sollte also möglich sein, die entsprechenden Libraries umzuschreiben um Timer2 anstelle von Timer0 zu nutzen.

Alternativ könnte ich auch Timer2 laufen lassen und dort immer per ISR den Pin toggeln, das würde ich aber gerne vermeiden.

Soweit sogut, ich finde nur leider nicht den Ordner/die Libraries, welche ich umändern muss - ist das überhaupt möglich?

vielen Dank.

Ja, das ist möglich, aber auch mit Problemen verbunden.....

Erstmal die Lösung: Verzichte auf setup() und loop(). Ersatzlos streichen!

Erzeuge eine mini.ino mit:

int main()
{}

Und Schwupp, wird der Timer0 nicht mehr belegt.

PWM an Pins mit Timer0 per analogWrite() hat keinen Einfluss auf die Funktion des Timers (millis() und delay())! Lediglich die Frequenz ist anders als auf den anderen Pins. Probleme gibt es erst wenn du die PWM Frequenz änderst.

Wieso machst du also PWM per Hand und nicht per analogWrite()?

Timer2 sollte doch vollkommen identisch zu Timer0 sein

Nein, ist er nicht. Timer2 hat z.B. mehr Prescaler Einstellungen und kann mit einem externen Quarz betrieben werden. Dafür gibt es keinen T2 Pin um ihn über nur einen Pin extern zu takten

Ohje, ich war so vernarrt in Timer Pogrammierung und ISR's, dass ich garnicht an analogWrite gedacht habe, hehe :)

Ja, dann mach ich's so. Mit welcher Frequenz wird das PWM-Signal von Timer0 denn aktualisiert?..also wie lange dauert ein "PWM Zyklus"?

http://playground.arduino.cc/Main/TimerPWMCheatsheet

Timer0 PWM ist 976Hz. Timer1 und Timer2 sind 490Hz