Interferenzen zwischen PWM, I2C und Timer1-Interrupt

Hallo Ihr, ich arbeite an einem Projekt, das PWM, ein I2C-Display und einenTimer-Interrupt nutzen soll. Einzeln habe ich damit keine Probleme, sobald ich jedoch den Timer-Interrupt zusammen mit den anderen Programmteilen aktivierte, geht irgendwas nicht mehr. Ich nehme an, der Grund ist, weil auch I2C und PWM interruptgesteuert sind. Welchen Timer sollte ich nehmen, bzw. wie ist der Timer-Interrupt zu aktivieren, ohne PWM oder Display außer Betrieb zu setzen (schön wäre, wenn auch Delay noch ginge). Ich arbeite mit dem Arduino-Nano, und würde gerne die Standard-Libraries (Timer1.h, wire.h) nutzen.
Vielen Dank
Mariner

Jeder der 3 Timer steuert 2 Pins. Wenn du den Timer für was anderes verwendest geht auf dem Pins kein PWM mehr

Dieses Bild ansehen:
http://www.pighixxx.com/test/wp-content/uploads/2014/11/nano.png

Das siehst du z.B. bei Pins 9 und 10 OC1A/OC1B. Die Zahl da gibt den Timer an. Pins 3 und 11 werden von Timer 2 gesteuert (wobei 11 eigentlich OC2A sein sollte). Das macht also keine Probleme. Die Timer 0 Pins kannst du auch für PWM verwenden. Aber wenn du Timer 0 selbst überschreibst geht millis() und delay() nicht mehr

I2C hat damit aber nichts zu tun. Das hat seine eigene Hardware

mariner:
Hallo Ihr, ich arbeite an einem Projekt, das PWM, ein I2C-Display und einenTimer-Interrupt nutzen soll. Einzeln habe ich damit keine Probleme, sobald ich jedoch den Timer-Interrupt zusammen mit den anderen Programmteilen aktivierte, geht irgendwas nicht mehr. Ich nehme an, der Grund ist, weil auch I2C und PWM interruptgesteuert sind. Welchen Timer sollte ich nehmen, bzw. wie ist der Timer-Interrupt zu aktivieren, ohne PWM oder Display außer Betrieb zu setzen (schön wäre, wenn auch Delay noch ginge). Ich arbeite mit dem Arduino-Nano, und würde gerne die Standard-Libraries (Timer1.h, wire.h) nutzen.
Vielen Dank
Mariner

Rein interessehalber: Könntest Du Deinen Sketch posten? Mit Timern stößt man hin und wieder ja mal zusammen.

Gruß

Gregor

Ja, sehe ich auch so...

delay(), I2C, PWM und TimerIRQ laufen bei mir störungsfrei nebeneinander.

Und ja: Das geht nicht in allen Kombinationen gut.

Timer0 ist belegt für Millis() usw. (PWM geht, aber bitte nicht den Vorteiler ändern, dann millis() falsch)
Timer1 ist frei (z.B. für deine Timer1.h oder/und PWM wenn die Frequenz passt)
Timer2 ist frei (z.B. für deine PWM)

Tipp:
Also nimm Timer 2 für deine PWM.
Dann tuts das auch alles

Hallo, Danke, das hilft mir schonmal weiter!
Mariner