Необходимо сделать ШИМ на Т/С1 для изменения среднего напряжения на лампочке.
Вот код программы:
;=================================
.include "m16def.inc"
.org 0x00
rjmp reset
reset:
clr r25
out ocr1ah, r25
ldi r25, 255/2
out ocr1al, r25
ldi r25, 0b10000001
out tccr1a, r25
ldi r25, 0b1
out tccr1b, r25
cycle:
rjmp cycle
;====================================
Изменяя в строчке:
ldi r25, 255/2
значение регистра сравнения -> получаю ШИМ.
Т.о., как я ожидаю, на выходе OC1A напряжение должно ШИМить от 0 до 5 В.
Если я задаю значение в регистре сравнения 255/1 - соответственно на OC1A должно быть 5В.
Если задаю 255/2, то, как мне думалось, на OC1A должно быть 2,5 В.
Проблема в моделировании в Протеусе:
1) Если оставить вывод OC1A пустым и задать 255/1, то Вольтметр показывает напряжение 5В на нём (всё вроде бы правильно), а вот осциллограф упорно показывает 0.
2) Если к выводу OC1A подсоединить лампу и задать 255/1, то напряжение на выводе становится почему-то равным нулю и лампа соответственно не горит.
3) Если оставить вывод OC1A пустым и задать 255/2, то Вольтметр показывает напряжение 3,95В на нём (вместо 2,5 В, как вроде бы должно быть), а осциллограф показывает ШИМ, но напряжение в этом ШИМ колеблется от 2.5 В до 5 В (хотя вроде бы как должен от 0 до 5В колебаться), хотя и колеблется с правильной скважностью 50% (Согласно 255/2).
4) Ну и если повесить лампочку на вывод OC1A для случая 255/2, то и вольтметр и амперметр показывают 0.
Совершенно не пойму в чём косяки... то ли это особенности Протеуса, то ли и в реальном МК вывод OC1A будет так себя вести.
В приложенном Архиве содержится сам текст программы, hex-файл с программой, файл для Протеуса и скриншот с резултатами работы Протеуса и 2 листочка теории по организации ШИМ на Т/С1.
Заранее благодарю вас за помощь.