29-10-2021, 00:28
Продолжаем танцы вокруг этой Тиньки...
Честно пытался понять как там устроено все, что бы реализовать ШИМование на ногах микрухи. Но совсем не втыкаю, а русского описания нет, что бы "на пальцах".
Понятно, что вывод порта сперва надо настроить на выход. А какой вывод? Их 4 OC0A OC0B OC1A OC1B
Как выбрать нужный? Или я неверно понял назначение...
В каком-то счетчике надо закладывать полный цикл, а в каком-то часть...
И - прерывания пока не рассматриваем.
Я вот тут накидал часть кода с комментариями. Давайте править...
Честно пытался понять как там устроено все, что бы реализовать ШИМование на ногах микрухи. Но совсем не втыкаю, а русского описания нет, что бы "на пальцах".
Понятно, что вывод порта сперва надо настроить на выход. А какой вывод? Их 4 OC0A OC0B OC1A OC1B
Как выбрать нужный? Или я неверно понял назначение...
В каком-то счетчике надо закладывать полный цикл, а в каком-то часть...
И - прерывания пока не рассматриваем.
Я вот тут накидал часть кода с комментариями. Давайте править...
Код:
TCCR0A |= (1<<COM0A1)|(0<<COM0A0); // подключение выхода таймера к ножке порта OC0A без инверсии
//TCCR0A |= (1<<COM0A1)|(1<<COM0A0); // подключение выхода таймера к ножке порта OC0A с инверсией
TCCR0B |=(1<<WGM02);
TCCR0A |= (1<<WGM01)|(1<<WGM00); // Режм FAST PWM
TCNT0 = 200;//величина полного цикла
OCR0A = 10;//величина части цикла
TCCR0B|= (0<<CS2)|(0<<CS01)|(0<<CS00); //Остановлено
TCCR0B|= (0<<CS2)|(0<<CS01)|(1<<CS00); //Без предделителя
TCCR0B|= (0<<CS2)|(1<<CS01)|(0<<CS00); //Пределитель = 8
TCCR0B|= (0<<CS2)|(1<<CS01)|(1<<CS00); //Пределитель = 64