Thank you for the great library!
I have a beginner question, how do I invert one of the outputs e.g. on Timer1 (Pin12 non-invertet, and pinPin11 inverted) on a MEGA.
And 2nd, how do I add an lokking so that Pin 12 and 11 never be HIGH at the same time.
So far I was playing with code from, with limited Frequenzy up to 32kHz:
My Code so far:
/*
Phase correct inverted 2CH (HS and LS) PWM, 32kHz, 0-255 DutyCycle
http://playground.arduino.cc/Main/TimerPWMCheatsheet
https://www.youtube.com/watch?v=D826h-YQun4&feature=youtu.be
http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
lock ns Verriegelung
-----------------
1 34
2 95
3 162
4 225
5 284
6 342
7 411
8 470
9 535
10 600
20 1220
30 1840
FRQ: 32,377kHz
Mega:
Timer 0 - Pin 13,4 - 64kHz - NO lock! - millis()!
Timer 1 - Pin 12,11 - 32kHz
Timer 2 - Pin 10(HighSide) ,9(LowSide) - 32kHz
Timer 3 - Pin 5,3,2 - ?
Timer 4 - Pin 8,7,6 - ?
x = % / 2.55;
% = x * 2.55
*/
//--- Global Variables ---------------------
byte x = 0; // Aussteuerung 0-255 (0 LS OFF; 1 HS ON
const byte lock = 10; // Verriegelung (s.o.)
int delta = -1; // Duty Cycle verschieben
//--- FCN Declarations ----------------------
void setInvPWM(byte x=127, byte lock=10);
//--- Setup ---------------------------------
void setup() {
TCCR2A = TCCR2A | 0x30; // Set Timer 2 inverted
TCCR2B = TCCR2B & 0xF8 | 0x01; // Set Timer 2 Prescaler FRQ
//Serial.begin(115200); // Debug
}
//--- Main loop -----------------------------
void loop() {
setInvPWM(x,lock); // Set Inverted HalfBridge PWM and lock on Mega Timer2
if(x==255 || x==0){
delay(2000); // extra Pause
delta = -delta;
}
x +=delta;; // Tastverhältniss durchzaehlen, autorollover
delay(50);
}
//--- set Inverted PWM Chanels -------------
void setInvPWM(byte x, byte lock){
int y; // Helper for LS
if(x<1) y = 255; // Set LS to 0
else if(x>(254-lock)) y = 0; // Set LS to 1
else y = x+lock; // Verrieglung
if(y<0) y=0; // limt to 0
else if(y>255) y=255; // limt to 255
// Timer 2 on Mega Pins: 10,9
analogWrite (10, (x)); // write PWM HS
analogWrite (9, (y)); // write PWM LS
}
And thats what I want it to look like, but with higer frequency:
What do I need to do if I use this nice lib?
Thanks a lot!