int step=200;
boolean Dir=false;
int speed=100,j=0,i=0,Mode=2, Phase=0;
int PhaseOne[4] = {8,2,4,1};
int PhaseTwo[4] = {10,6,5,9};
//int HalfStep[8] = {8,10,2,6,4,5,1,9};
#define BUTTON PD2
#define A PB3
#define B PB2
#define C PB1
#define D PB0
ISR(INT0_vect)
{
//delay(2);
//Dir=!Dir;
//PORTD ^= (1 << PD0)|(1 << PD1)|(1 << PD2)|(1 << PD3)|(1 << PD4)|(1 << PD5)|(1 << PD6)|(1 << PD7);
//PORTB ^= (1 << PB3);
//PORTB ^= (1 << PB5);
digitalWrite(LED_BUILTIN, HIGH);
Phase+=10;
//TCCR0A =(1<<FOC0A);
//delay(5);
//PORTD ^= (1 << PD7);
}
ISR(TIMER0_COMPA_vect)
{
OCR0A = speed;
OCR0B = speed/2+Phase;
Serial.println(Phase);
//TCCR2A = (1 << WGM21);
//TCCR0A = (0 << WGM01);
//OCR2A = speed/2;
//if (Phase) PORTB=PhaseOne[i];
//else PORTB=PhaseTwo[i];
//if (Mode==0)
//{
// i++;
// Phase=true;
//}
//if (Mode==1)
//{
// i++;
// Phase=false;
//}
//if (Mode==2)
//{
// if (j%2) i++;
// Phase=!Phase;
//}
//Step=!Step;
//j++;
//if (i>3) i=0;
//if (i<0) i=3;
//if (B) A;
}
ISR(TIMER2_COMPA_vect)
{
//Serial.println("B");
//if (Dir) j+=1;
//else j-=1;
OCR2A = speed;
OCR2B = speed/2+Phase;
//TCCR0A = (1 << WGM01);
//TCCR2A = (0 << WGM21);
//if (j>3) j=0;
//if (j<0) j=3;
//Serial.println(PORTB);
//Serial.println("Timer2");
//if (C) D;
//if (D) C;
//OCR2A = speed;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
EICRA |= (1 << ISC01);
EIMSK |= (1 << INT0);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
DDRB = 0b11111111;
DDRD = 0b01101001;
PORTB = (1 << PB5);
//PORTB = 0;
TCCR0A = (1 << WGM01)|(1<<COM0A0)|(1<<COM0B0); // Set Timer0 to CTC mode
//TCCR0B = (1 << CS02) | (1 << CS00); // Set Timer0 prescaler to 1024
OCR0A = speed;
OCR0B = speed; // Set Timer0 comparison value for 500ms period
TIMSK0 = (1 << OCIE0A); // Enable Timer0 interrupt
TCCR2A = (1 << WGM21)|(1<<COM2A0)|(1<<COM2B0); // Set Timer2 to CTC mode
//TCCR2B = (1 << CS22) | (1 << CS21); //| (1 << CS20); // Set Timer2 prescaler to 1024
OCR2A = speed*2+1;
OCR2B = speed/2-1; // Set Timer2 comparison value for 500ms period
TIMSK2 = (1 << OCIE2A); // Enable Timer2 interrupt
CLKPR = (1 << CLKPCE); // Enable change of clock prescaler
CLKPR = (1<<CLKPS3); // Set clock prescaler to 32
sei(); // Enable global interrupts
}
void loop() {
// put your main code here, to run repeatedly:
//step-=1;
//Serial.println(Dir);
//if (PIND & (1 << BUTTON)) PORTD =0;
//else PORTD=1;
//delay(100);
}