IR2302の駆動テスト

int ahigh=2;
int asd=3;
int bhigh=4;
int bsd = 5;
int chigh = 6;//pwm
int csd = 7;  
void setup() {
  // put your setup code here, to run once:
  pinMode(ahigh,OUTPUT);
  pinMode(asd,OUTPUT);
  pinMode(bhigh,OUTPUT);
  pinMode(bsd,OUTPUT);
  pinMode(chigh,OUTPUT);
  pinMode(csd,OUTPUT);  
  
  digitalWrite(asd,LOW);
  digitalWrite(bsd,HIGH);
  digitalWrite(csd,HIGH);//shutdown c

//  digitalWrite(ahigh,HIGH);
  digitalWrite(bhigh,LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  analogWrite(chigh,254);//放電→充電時間が必要なので、PWMを行なう→254以下で動くが255だとうごかない
}

PWMでゲート駆動するバージョン

#define apwm OCR2B
#define bpwm OCR0B
#define cpwm OCR0A
#define dtime 1000

int val;

int asd   = 2;
int ahigh = 3;//PWM OC2B
int bsd   = 4;
int bhigh = 5;//PWM OC0B
int csd   = 7;  
int chigh = 6;//PWM OC0A

int pwmval = 254;

void setup() {

  initPWM();
  
  for(int i=0;i<6;i++){
    pinMode(asd,OUTPUT);
    pinMode(ahigh,OUTPUT);
    pinMode(bsd,OUTPUT);
    pinMode(bhigh,OUTPUT);
    pinMode(csd,OUTPUT);
    pinMode(chigh,OUTPUT);
  }

}
void initPWM(){
  TCCR0A = 0b10100011;
  TCCR0B = 0b00000010;
  TCCR2A = 0b10100011;
  TCCR2B = 0b00000010;
}
void loop() {
  spin();
}
void spin(){
  setOne();
  setTwo();
  setThree();
  setFour();
  setFive();
  setSix();   
}
void setOne(){
  PORTD=(1<<PD2)|(1<<PD4);
  setAH();
  _delay_ms(dtime);
}
void setTwo(){
  PORTD=(1<<PD2)|(1<<PD7);
  setAH();
  _delay_ms(dtime);
}
void setThree(){
  PORTD=(1<<PD4)|(1<<PD7);
  setBH();
  _delay_ms(dtime);
}
void setFour(){
  PORTD=(1<<PD2)|(1<<PD4);
  setBH();
  _delay_ms(dtime);
}
void setFive(){
  PORTD=(1<<PD2)|(1<<PD7);
  setCH();
  _delay_ms(dtime);
}
void setSix(){
  PORTD=(1<<PD4)|(1<<PD7);
  setCH();
  _delay_ms(dtime);
}
void setAH(){
   apwm = pwmval;
   bpwm = 0;  
   cpwm = 0;
}
void setBH(){
   apwm = 0;
   bpwm = pwmval;
   cpwm = 0;
}
void setCH(){
   apwm = 0;
   bpwm = 0;
   cpwm = pwmval;
}