Необходимо сделать ШИМ на Т/С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. Заранее благодарю вас за помощь.
Вложения: |
Комментарий к файлу: Приложенный архив
PWM_on_TC1.rar [3.01 МиБ]
Скачиваний: 0
|
|