Предыдущая Следующая

//------------------------------------------------------------------------

#include <iolpc2129,h> // подключение стандартных заголовков и определений #include "hardware.h" // подключение специальных заголовков и определений tinclude "pwm.h" // подключение специальных заголовков и определений

volatile extern U8 flagn_knO, flagn_knl, flagn_kn2, flagn_kn3; static U8 ledl_old_state=0;

static U32 T_PWM; // 1/8 периода PWM в периодах pclk

//------------------------------------------------------------------------

void main(void)

{

CPUinitO; //инициализация системы

_disable_interrupt(); //запрет прерываний

INTERRUPTSinit(); //инициализация прерываний

TIMEROinitstart(); //инициализация ТО

_enable_interrupt(); //разрешение прерываний

delay(1000000); //задержка на сброс ЖКИ

lcd_init(); //инициализация ЖКИ

delay(1000000); //

lcd_clear(); //очистка экрана ЖКИ

PWMinitf); //инициализация модуля PWM

T_PWM = 1;

PWMset(8*T_PWM); //задание параметров PWM в каналах 2 и 4 *

A_LEDl_OFF; //Погасить светодиоды 1, 2

A_LED2_OFF; )

while(1) //Начало основного цикла

{

//преобразование в десятичное представление и индикация //периода PWM в периодах pclk PWMt_ind(8*T_PWM);

if (flagn_kn0==l) //нажималась ли кнопка 0 {

flagn_kn0=0; //да, сбросить флаг нажатия

T_PWM++;

if (T_PWM > 9999999) T_PWM = 1;

PWMset(8*T_PWM); //задание параметров PWM в каналах 2 и 4 }

if (flagn_knl==l) //нажималась ли кнопка 1 {

flagn_knl=0; //да, сбросить флаг нажатия

T_PWM--;

if (T_PWM == 0) T_PWM = 1;

PWMset(8*T_PWM); //задание параметров PWM в каналах 2 и 4 }

if (flagn_kn2==l) //нажималась ли кнопка 3

304 {

flagn_kn2=0; //да, сбросить флаг нажатия

if (ledl_old_state==OFF) {

ledl_old_state=ON; PWMset(8*T_PWM);

PWMstart(); //включение модуля PWM

//задание параметров PWM в каналах 2 и 4 A_LED1_0N; //зажечь светодиод 1 }

else

{

ledl_old_state=OFF;

//задание нулевых параметров PWM в каналах 2 и 4

PWMset(0);

PWMstopf); //отключение модуля PWM A_LED1_0FF; //погасить светодиод 1 }

}

} }

//------------------------------------------------------------------------

Программа позволяет организовать одновременную генерацию двух импульсных последовательностей, сдвинутых по фазе на 90°. Скважность импульсов в последовательностях подобрана таким образом, чтобы между импульсами из разных последовательностей гарантированно не было взаимного перекрытия. Последнее может оказаться важным, при использовании данной программы, например, в качестве задающего генератора в импульсном источнике питания с двумя ключевыми элементами. Отсутствие перекрытий позволяет избежать возникновения сквозного тока через силовые ключи. Временные диаграммы, иллюстрирующие параметры генерируемых программой импульсных последовательностей, изображены на Рис. 33.4. Временной интервал T_PWM, значение которого отсчитывается в периодах pclk, используется в программе в качестве базового для построения импульсных последовательностей. Период импульсов в каждой последовательности всегда равен восьми интервалам T_PWM. Программа использует для своей работы выходы каналов PWM 2 и 4, в каждом из которых производится управление двойным перепадом.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_313.html on line 194

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_313.html on line 194

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_313.html on line 194