[an error occurred while processing this directive]
Да в том то и дело ...
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Андрей О. 06 ноября 2004 г. 15:41
В ответ на: В T1CON(0x007404) - For GPT1 Control Register. отправлено Sl_ 06 ноября 2004 г. 12:35

Да в том то и дело, что то о чем Вы говорите, сделано. Хотя впрочем
вот исходный код, инициализирующий EVx:

#include "reg28x.h"
void InitEVx()
{
int buff;
/* TxCON = 11 0 11 000 0 1 00 01 1 0; // в переменной buff формируем значение
// __ _ __ ___ _ _ __ __ _ _ для инициализации T1CON и T3CON
// | | | | | | | | | |
// | | | | | | | | | не используется в T1CON T3CON
// | | | | | | | | разрешаем операции сравнения (TECMPR(1)=1)
// | | | | | | | перезагрузка регистров сравнения
// | | | | | | | для режима двунаправленного счета (TCLD(3-2)=01)
// | | | | | | тактирование от внутреннего сигнала HSPCLK (TCLKS(5-4)=00)
// | | | | | разрешаем тактировать модуль EV (TENABLE(6)=1)
// | | | | не используется в T1CON T3CON
// | | | частота тактирования равна HSPCLK/1 (TPS(10-8)=000)
// | | двунаправленный режим счета (TMODE(12-11)=11)
// | | не используется
// таймер не останавливается во время эмуляции (SOFT(15-14)=11) */

buff = 0xD846; //1101100001000110;
T1CON = buff; // Инициализируем T1CON и T3CON
T3CON = buff; // T2CON и T4CON не испольуются

/* GPTCONx = 0 0 0 0 0 00 11 0 0 0 00 00; // в переменной buff формируем значение
// _ _ _ _ _ __ __ _ _ _ __ __ для инициализации GPTCONA и GPTCONB
// | | | | | | | | | | | |
// | | | | | | | | | | | полярность выхода Т1 (не имеет значения)
// | | | | | | | | | | полярность выхода Т2 (не имеет значения)
// | | | | | | | | | разрешение выхода сравнения Т1 (запрещено)
// | | | | | | | | разрешение выхода сравнения Т2 (запрещено)
// | | | | | | | разрешение выходов сравнения Т1 и Т2 (запрещено)
// | | | | | | запуск ADC по событию таймера Т1 (11-в момент сравнения)
// | | | | | запуск ADC по событию таймера Т2 (00-запрещено)
// | | | | не задействован
// | | | не задействован
// | | текущий статус таймера Т1 (только чтение, 0-вниз 1-вверх)
// | текущий статус таймера Т2 (только чтение, 0-вниз 1-вверх)
// не используется */

buff = 0x0180; //0000000110000000;
GPTCONA = buff; //Инициализируем GPTCONA
GPTCONB = 0; //Инициализируем GPTCONB, анологично GPTCONA, но запретив запуск ADC

/* COMCONx = 1 01 0 01 0 0 1 1 1 00 0 0 0; // в переменной buff формируем значение
// _ __ _ __ _ _ _ _ _ __ _ _ _ для инициализации COMCONA и COMCONB
// | | | | | | | | | | | | |
// | | | | | | | | | | | | C1TRIP Enable (запрещено)
// | | | | | | | | | | | C2TRIP Enable (запрещено)
// | | | | | | | | | | C3TRIP Enable (запрещено)
// | | | | | | | | | не используется
// | | | | | | | | Full Compare 1 Output Enable
// | | | | | | | Full Compare 2 Output Enable
// | | | | | | Full Compare 3 Output Enable
// | | | | | This bit reflects the current status of the PDPINTA pin (только чтение)
// | | | | Full Compare Output Enable (общий)
// | | | Action control register reload condition (01-двойная перезагрузка)
// | | Space vector PWM mode enable
// | ???
// Compare enable */

buff = 0xa4e0; //1010010011100000;
COMCONA = buff; //Инициализируем COMCONA и COMCONB
COMCONB = buff; //

/* ACTRx = 0 000 00 00 00 00 00 00; // в переменной buff формируем значение
// _ ___ __ __ __ __ __ __ для инициализации ACTRA и ACTRB
// | | | | | | | |
// | | | | | | | Action on compare output pin 1 (00-Forced low)
// | | | | | | Action on compare output pin 2 (00-Forced low)
// | | | | | Action on compare output pin 3 (00-Forced low)
// | | | | Action on compare output pin 4 (00-Forced low)
// | | | Action on compare output pin 5 (00-Forced low)
// | | Action on compare output pin 6 (00-Forced low)
// | Basic space vector bits (не задействовано)
// Space vector PWM rotation direction (не задействовано) */

buff = 0;
ACTRA = buff; //Инициализируем ACTRA и ACTRB
ACTRB = buff; //

// Инициализируем регистры периодов в EVA и EVB

T1PR = Period;
T3PR = Period;

}

А в основной процедуре выполняется такой код:

void main()
{
EALLOW;
HISPSP = 0; //устанавливаем High-Speed Peripheral Clock (HSPCLK) равную SYSCLKOUT
EDIS;

// Вычисляем длительность полупериода ШИМ-несущей из исходных значений
// OSCCLK - задающая частота внешнего кварцевого резонатора
// PLLCR - коэффициент умножения в блоке PLL
Period = ((PLLCR * OSCCLK) / F_PWM) * 250;

InitEVx(); //начальная инициализация модулей EVx

EALLOW;
PCLKCR = 0x040b; //включаем EVA, EVB, ADC и SCI
EDIS;
}

Если есть желание проверить вышенаписанное, могу и весь проект выслать.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru