|
Электроника схемы, устройства, справочники и т.п. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
21.12.2012, 15:26 | #11 |
VIP
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0 |
Спасибо на счет таймера.
Сегодня почитал, что еще можно использовать асинхронный таймер с часовым кварцем. Таймер тоже будет переполняться каждую секунду, не зависимо от частоты основного кварца процессора. Пока вот, что есть (во вложении исходник на BASCOM-е и проект в Proteus). Алгоритм следит за изменением длительности импульсов на одной из фаз и изменяет скважность общего ШИМ-а, который я дальше пытаюсь раскидать на аккумулятор, на потребители и балласт. Дмаю, что было-бы правильным производить вычисление и распределение ШИМ-ов не выходя из прерывания определения длительности импульса. '********Акселерометр и задача длительности импульса общего ШИМ **************** If U_r_gen < 10 Then Pwm_main = 0 Else If Period <= Period_old Then If Pwm_main < 255 Then Incr Pwm_main Else If Pwm_main > 0 Then Decr Pwm_main End If End If '************************Подпрограмма общета ШИМ-ов***************************** I_set_and_nagruzka = I_set_akb + I_r_nagruzka If U_r_akb > U_set_akb Then If Pwm_ball < Pwm_main Then Incr Pwm_ball End If If U_r_akb <= U_set_akb And I_r_akb > I_set_and_nagruzka Then If Pwm_ball < Pwm_main Then Incr Pwm_ball End If If U_r_akb <= U_set_akb And I_r_akb <= I_set_and_nagruzka Then If Pwm_ball > 0 Then Decr Pwm_ball End If Pwm_akb_and_nagruzka = Pwm_main - Pwm_ball Pwm0 = Pwm_akb_and_nagruzka Pwm2 = Pwm_ball |