analogWrite: битовые операции и манипуляции с регистрами

ustas
Offline
Зарегистрирован: 12.03.2012

Вопрос проще проиллюстрировать примером.

DDRD = DDRD | B00001000;

Так мы включили порт PD3 в режим OUTPUT

PORTD&=~(1<<3);

Так мы на выход PD3 отдаем "0"

PORTD|=(1<<3);

Таким образом - "1"

Но! На PD3 - можно организовать ШИМ (напиать analogWrite(3, 100); к примеру). 

А как то же самое (ШИМ) организовать манипуляциями с регистрами? 

Понимаю, что надо даташит штудировать, но может, кто-то это уже прошел и подскажет?

maksim
Offline
Зарегистрирован: 12.02.2012

В библиотеке есть ответ на ваш вопрос. http://arduino.ru/forum/programmirovanie/analogwrite-na-lyubom-vyvode

 

ustas
Offline
Зарегистрирован: 12.03.2012

maksim, тут немного не так.. по ссылке делаем шим, где их не было.. а тут - уже и так есть. Проблема в том, чтобы быстро (как можно скорее) включить нужную скважность сигнала на выходе.

sds
Offline
Зарегистрирован: 29.10.2012

На таймер в режиме CTC не смотрели?

maksim
Offline
Зарегистрирован: 12.02.2012

Тогда тут смотрите ,а вообще все верно - курите даташит и гугл как настраивать Т/С в режиме ШИМа.

ustas
Offline
Зарегистрирован: 12.03.2012

Нет, что это? где почитать (вдруг ссылочка под рукой есть)?

sds
Offline
Зарегистрирован: 29.10.2012

Вот здесь есть краткое, но понятное описание:

  Таймеры - http://samou4ka.net/page/tajmer-schetchik-mikrokontrollerov-avr

  ШИМ - http://samou4ka.net/page/shirotno-impulsnaja-moduljacija-shim-pwm-mikrokontrollerov-avr

ustas
Offline
Зарегистрирован: 12.03.2012

Спасибо! Вечерком изучу :)