อยากได้สัญญาณ pwm ที่ phase shitf กันต้องทำอย่างไรครับ


(Yutthanan Pets) #1
void setup() {
pinMode(3, OUTPUT);
pinMode(11,OUTPUT);


TCCR2A=0;//reset the register
TCCR2B=0;//reset the register
TCNT2=0;
TCCR2A=0b01010010;//COM2A1, COM2B1 are 0, COM2A0, COM2B0 are 1
//also WGM21 is 1
TCCR2B=0b00000111;//WGM22 is 0 with 1024 prescaler
OCR2A=156;// compare match value OCR2A=( fclk/2*N* fOC2A)-1
}

void loop() {
// put your main code here, to run repeatedly

}

อันนี้มันได้เฟสตรงกัน ต้องทำยังไงให้เฟสชิปกันครับ


(Permpol Thanapunnamas) #2

อ่านตามนี้เลยครับ


(Permpol Thanapunnamas) #3

ไม่ก็ลอง code นี้

unsigned long currentTime;
unsigned long previousTime;
unsigned long elapsedTime;
unsigned long duration = 50; //  toggle output every 50uS, 10KHz output
byte pin2 = 2; // PORTD bit2
byte pins = 3; // PORTD bit3
void setup(){
pinMode (pin2, OUTPUT);
digitalWrite (pin2, HIGH);
pinMode (pin3, OUTPUT);
digitalWrite (pin3, LOW);
}
void loop(){
currentTime = micros();
elapsedTime = currentTime - previousTime;
if (elapsedTime >=duration){
  previousTime = previousTime + duration;
  PIND = PIND | 0b00001100; // toggle outputs by writing 1 to input port
  }
// do other stuff while waiting for duration to pass. Must finish in < duration uS, or software PWM will be affected
}