Здравствуйте. Я уже писал здесь. Есть проблема в инициализации таймеров. Если кто сможет то подскажите, буду благодарен. Проблема в том что что на 3 5 6 9 10 11 ногах Лим на разных частотах, в чем беда? int inPin = A5; // select the input pin for the potentiometer int ledPin = 13; // select the pin for the LED int inValue = 0; volatile float alfa_grad = 0; float alfa_rad = 0; byte modul; byte modul_1; byte modul_2; byte modul_3; byte modul_4; byte modul_5; void setup() { // declare the Pin as an OUTPUT: pinMode(3, OUTPUT); pinMode(A5, INPUT); Serial.begin(115200); // connect to the serial port Serial.println("PWM Test"); TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A =312; TCCR1A|= (1 << WGM12); TCCR1A |= (1 << CS10); TCCR1A |= (0 << CS11); TCCR1A |= (1 << CS12); TIMSK1 |= (1 << OCIE1A); // Разрешить прерывание по совпадению TCCR1B |= (1 << CS10); TCCR1B |= (0 << CS11); TCCR1B |= (1 << CS12); TIMSK1 |= (1 << OCIE1A); // Разрешить прерывание по совпадению } ISR(TIMER1_COMPA_vect){ alfa_grad += 0.36; if(alfa_grad > 359 && alfa_grad < 361) { alfa_grad = 0; } } void loop() { alfa_rad = (float)alfa_grad*3.14/180; inValue = map (analogRead(inPin),0,1023,0,255) - 127; modul = map (((float)inValue*sin(alfa_rad))*100,-12700,12700,-127,127) + 127; modul_1 = map (((float)inValue*sin(alfa_rad + 2.09))*100,-12700,12700,-127,127) + 127; modul_2 = map (((float)inValue*sin(alfa_rad + 4.18))*100,-12700,12700,-127,127) + 127; analogWrite (3,modul); analogWrite (5,modul_1); analogWrite (6,modul_2); volatile float alfa = alfa_rad; if (alfa >= 6.2832) { do {alfa = alfa - 6.2832;} while (alfa < 6.2832); } modul_3 = map(((float)inValue*sin(alfa))*100,-12700,12700,-127,127) + 127; modul_4 = map (((float)inValue*sin(alfa + 2.09))*100,-12700,12700,-127,127) + 127; modul_5 = map (((float)inValue*sin(alfa + 4.18))*100,-12700,12700,-127,127) + 127; analogWrite (9,modul_3); analogWrite (10,modul_4); analogWrite (11,modul_5); // if ((int)alfa_grad % 15) { подача на на двигатель для одного шага //} }