31.01.2012, 23:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Сообщение от Alpout
|
я думаю в схеме идет вч возбуждение..
|
Откуда ему взяться. Единственно, что можно предположить, так это то, что происходит перезапуск процессора по BOR (если питание хе..вое или ВЧ емкости на ногах питания процессора нет, а токи Вам нравится качать хорошие через светодиод, то вполне может быть).
|
|
|
|
01.02.2012, 00:50
|
|
Прописка
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
ладно завтра чуточку переделаю код и схему. я некорректно описал практику по вч. отпишусь.
|
|
|
|
01.02.2012, 01:00
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Биты конфигурации? Сторожевой таймер? Порядок инициализации контроллера? Калибровочная константа? Если ты ее не стер только...
Как кнопку подключаешь? Что она вообще должна делать? Какой уровень у нее активный? А ты точно настроил GP3 на цифровой вход-выход?
Светодиоды горят? А это что, по твоему?
Цитата:
|
MOVLW B'00000111'
MOVWF GPIO
|
Ты ж сам задал им сначала включение, а уж потом проверку нажатия кнопки и зациклил еще. Если на GP3 = 0, то выполняется цикл записи единиц в порт (RGB_ON), а если GP3 = 1, то выполняется другой цикл, а гашения то и нету.. Код то выполняется по поряку следования. А где остальной код? Тут никаких пауз нет, все ето крутится на огромной скорости.
Как ты блин в симуляторе то получил, что работает? по этому коду - на выходах постоянно будет единицы
Вообще, через обработку прерываний и таймеры вся задача решается с минимальным расходом кода. Позже напишу готовый код, как будет свободное время.
Цитата:
|
Если последняя строка GOTO RGB_ON,
|
Да эт просто опечатка. Нормальный компилятро бы не пропустил ошибку.
Сообщение от alvadep
|
Откуда ему взяться.
|
Мега-лол. Ну вы даете.
Лишней является вторая команда BTFSC GPIO, D'3'
"Если 0, то пропустить следующий шаг". Если 1, то выполнить следующий шаг.
Из-за этого и зацикливается неверно
Последний раз редактировалось Bumbarra; 01.02.2012 в 01:18.
|
|
|
|
01.02.2012, 01:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Ув. Bumbarra, внимательно посмотрите схему из первого поста.
Код
Цитата:
|
MOVLW B'00000111'
MOVWF GPIO
|
как раз выключает светодиоды.
|
|
|
|
01.02.2012, 01:25
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Сути не меняет. Тогда почему написано RGB_ON?
|
|
|
|
01.02.2012, 01:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
А вот то, что нет всего кода и соответственно нет полной картины это правда. И не о чем тут больше пока говорить.
|
|
|
|
01.02.2012, 09:07
|
|
Прописка
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
отпишусь как сделаю
|
|
|
|
01.02.2012, 17:27
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Нууу если активный уровень для зажигания диодов - низкий, то перед включением портов на выход лучше установить в GPIO единицы для гашения диодов, чтобы не было бросков тока в начальный момент. Зачем лишний раз ерунду делать то?
В принципе, сам модуль ШИМ управления тремя светодиодами может выглядеть вот так:
(Используются ресурсы таймера TMR0 - при переполнении таймера проверяется флаг T0IF, включаются все светодиоды и начинается новый цикл. Суть работы - в сложении текущего значения TMR0 с числом M=(255-N), N - это время свечения диода. Если после операции сложения будет переполнение в аккумуляторе W, (STATUS, C = 1), то диод выключается. Для каждого из трех диодов операция повторяется. Можно и наоборот, вычитать. Только тогда наоборот проверку проводить - btfss STATUS, C ).
Порт GP3 нужно подтягвать к плюсу питания (он не имеет внутренней поддтяжки), а кнопку замыкать на общий. Причем, в тегсте проги нужно предусмотреть циклы задержки, чтобы переждать "дребезг" контактов и избежать ложных срабатываний, а так же задержку на отпускание кнопки. Вообще, не понятно, что автор хочет делать этой кнопкой, потому сейчас чето изобретать с ней не имеет смысла.
Код:
|
;============================
Initial_PIC:
movlw d'00000111' ;All LEDs
movwf GPIO ;is off
movwf CMCON ;Digit IO
bsf STATUS, RP0
movlw b'10000100' ;set TMR0 prescaler 1:32
movwf OPTION_REG ;and Internal Instruc cycl
movlw d'00011000' ;set Input/Output
movwf TRISIO ;
bcf STATUS, RP0
clrf TMR0
;===========================
;..... тут чето такое еще ...............
;===========================
movlw .240 ;Set time
movwf PWM_R ; LED_R
movlw .10 ;Set time
movwf PWM_G ; LED_G
movlw .128 ;Set time
movwf PWM_B ; LED_B
call All_LED_on
;---------------------------
;-- PWM control module -----
pwm:
btfsc INTCON, T0IF ;Check overflow TMR0
call All_LED_on ;
;-- R-LED Control
movf PWM_R, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP0 ;Turn off LED_R
;-- G-LED Control
movf PWM_G, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP1 ;Turn off LED_B
;-- B-LED Control
movf PWM_B, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP2 ;Turn off LED_G
goto pwm
;============================
All_LED_on:
bcf GPIO, GP0
bcf GPIO, GP1
bcf GPIO, GP2
bcf INTCON, T0IF ;clr flag over TMR0
bcf STATUS, C
return
;============================ |
Последний раз редактировалось Bumbarra; 01.02.2012 в 17:40.
|
|
|
|
03.02.2012, 03:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Ну, раз Вы, Bumbarra, любите всех критиковать, то позвольте и я Вас немного покритикую.
Код:
|
;-- PWM control module -----
pwm:
btfsc INTCON, T0IF ;Check overflow TMR0
call All_LED_on ;
;-- R-LED Control
movf PWM_R, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP0 ;Turn off LED_R
;-- G-LED Control
movf PWM_G, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP1 ;Turn off LED_B
;-- B-LED Control
movf PWM_B, W
addwf TMR0, W
btfsc STATUS, C ;Check over
bsf GPIO, GP2 ;Turn off LED_G
goto pwm
;============================
All_LED_on:
bcf GPIO, GP0
bcf GPIO, GP1
bcf GPIO, GP2
bcf INTCON, T0IF ;clr flag over TMR0
bcf STATUS, C
return |
В таком варианте:
1. Нет такого значения PWM_R(G,B) при котором ШИМ прекращался бы полностью (нет чистого нуля). Это не есть хорошо.
2. Скважность по каналам RGB будет не одинаковая при одинаковых значениях регистров PWM_R(G,B). Отличие хоть и будет не значительное (8 машинных циклов между выключением R и G, 2 - между включением R и G), но тем не менее.
3. Не одинаковое время выполнения команд по разным циклам ветвления. Это не критично, но нужно стремиться к идеальному варианту, когда время выполнения не зависит от условий.
--------------------------------------------------------------------------
Я бы сделал так
Код:
|
;-- R-LED Control
movf PWM_R, W
addwf TMR0, W
btfss STATUS, C ;Check over
bsf GPIO, GP0 ;Turn off LED_R
btfsc STATUS, C
bcf GPIO, GP0
;-- G-LED Control
movf PWM_G, W
addwf TMR0, W
btfss STATUS, C ;Check over
bsf GPIO, GP1 ;Turn off LED_B
btfsc STATUS, C
bcf GPIO, GP1
;-- B-LED Control
movf PWM_B, W
addwf TMR0, W
btfss STATUS, C ;Check over
bsf GPIO, GP2 ;Turn off LED_G
btfsc STATUS, C
bcf GPIO, GP2 |
В таком варианте:
1. Скважность будет абсолютно одинаковая по каналам при одинаковых значениях регистров PWM_R(G,B), отличия будет только в фазах сигналов.
2. Время выполнения фрагмента не зависит от условий.
|
|
|
|
05.02.2012, 10:06
|
|
Прописка
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
|
Re: Регулирование яркости светодиодов по ШИМ на PIC12F629
Bumbarra, у тебя много ошибок. нерабочая программа. а идея хорошая. у меня воще по-другому программа реализуется. в моем варианте задействуются только РОНы. а таймеры, прерывания не трогаю пока. кстати, насчет схемы включения светодиодов на общий анод...там порты работают только на общий минус, походу порты реализованы как "выход эмиттера")))ю не смарел еще выходы портов как сделаны. вот схема и у меня заработало. ошибка в проге нет!! единственное приходилось менять в проге-это соответствующее инверитрование некоторых команд, чтобы работал на общий минус. вот кстати схема пределанная. А то что реализуете схемы на компьютере-не полностью заменяет практику!!! я уже давно забросил эту тему, так как не все точно описывают практику! лучше практика рулит!!!! это типичные проги, такие как Протеус, Воркбенч-мною проверенные проги, от котрорых остались несовсем хорошие впечатления. поэтому в данное время я ими воще не пользуюсь!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:50.
|
|