Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

ну тогда я спрошу: avr-asm. не едут лыжи со "скользящим" шимом на INT сравнения-Б

Отправлено nestandart (94.217.122.5) 01 июля 2011, г. 02:03


делается управление контрастом LCD.
таймер1 дрыгается с предделителем /32
по прерыванию в переполнении начинает считать от "TIMER1_START_VALUE"
т.е. содержимое таймера не может быть ниже "TIMER1_START_VALUE".

нужно на этом таймере сделать ШИМ.

в сравнении грузим в OCR1B "добавленное" к текущему TCNT1 значение то длину паузы, то длину импульса (пауза или импульс выбирается в зависимости от состояния ноги OC1B - PINB,2)

"добавленное" именно к текущему TCNT1 (а не OCR1B) сделал потому что предделитель маленький, может в каком то другом прерывании прошлёпать эти 32 такта.
Джиттер в пару тактов ТАЙМЕРА1 допускается.

TIMER1_START_VALUE+1 при "перебеге" сделано потому что (как я понял) при загрузке в TCNT1 значения TIMER1_START_VALUE прерывания сравнения не происходит. а на появляющийся при этом джиттер всё равно кладём.

ПРОБЛЕМА: после 100 (? ... зависит от vo_lcd_pwm) циклов "переполнения" OCR1B ШИМ перестаёт работать. Пока не отловил, где дырка.

мож, кто по коду сразу дурь увидит?


TIM1_COMPB:
;(push/pop регистров и SREG тут опустил)
mov temp3,vo_lcd_pwm
sbic PINB,2 ; skip if PINB,2 clr
com temp3

in temp0,TCNT1L
in temp1,TCNT1H

add temp0,temp3
adc temp1,zerro
brcc NO_OCR1B_OVERFLOW ; Branch if carry cleared
ldi temp3, low(TIMER1_START_VALUE+1)
ldi temp2,high(TIMER1_START_VALUE+1)
add temp0,temp3
adc temp1,temp2

NO_OCR1B_OVERFLOW:
out OCR1BH,temp1
out OCR1BL,temp0
reti


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 56:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru