NewSistems Опубликовано 16 июля, 2016 Жалоба Поделиться Опубликовано 16 июля, 2016 Всем привет. Решил подключить RGB светодиод к Atmega8. И возникла проблема. Сперва опишу как подключил: К пинам порта D, подключил через PNP транзисторы ножки светодиода PD0 - Blue PD1 - GREEN PD3 - RED Что бы светодиод работал как нужно, мне нужно использовать ШИМ. Для этого я использовал прерывания от таймера T0. И в нем веду счетчик ШИМ и управляю ножками светодиода. ; PD0 = RED; PD1 = GREEN; PD2 = BLUET0:push r25push r26push r27in r25, PORTDlds r26, COUNT_PWM ; Счетчик ШИМcpi r26, 0brne T0_redcbr r25, 0x0B ; Если счетчик ШИМ на нуле включаем все светодиоды; Если значение счетчика ШИМ достигло LED1_*** то выключаем нужные светодиодыT0_red:lds r27, LED1_REDcp r26, r27brne T0_greensbr r25, 0x01 ; Отключам REDT0_green:lds r27, LED1_GREENcp r26, r27brne T0_bluesbr r25, 0x02 ; Отключам GREENT0_blue:lds r27, LED1_BLUEcp r26, r27brne T0_exitsbr r25, 0x08 ; Отключам BLUET0_exit:out PortD, r25; Увеличиваем счетчик ШИМinc r26sts COUNT_PWM, r26pop r27pop r26pop r25reti Этот код отлично работает! Светодиод горит как нужно. Проблема заключается в том что у меня еще на контроллере висит дисплей, датчик температуры, и еще кое какие фентиплюшки. И из за того что я использую регистры в таймере T0, у меня временами глючит дисплей, так как для передачи данных дисплею эти регистры используются. 1. Так вот, в программе часто используется delay, соответственно, код из таймера я ни как не могу перенести в программу, потому что из за задержки светодиод гаснет! 2. Я не могу перенести выводы светодиода на встроенные ШИМ контроллера, так как они уже заняты. 3. Я пробовал все регистры от r16 до r31. Все равно, дисплей глючит. Как мне сделать такой ШИМ что бы не трогать регистры? Раздел: AVR Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.