[an error occurred while processing this directive]
Некорректная симуляция таймеров 5502 в CCS2.20 - не работают прескалеры (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено _A_K 03 ноября 2003 г. 13:27

проц 5502
пытаюсь на симуляторе проверить работу таймеров в режиме непрерывного счета от внутреннего генератора
устанавливаю разные предделители частоты :
*(TIM0_BASE + TIM_CLK) = 0x0008; // CPU_CLK / 8
*(TIM1_BASE + TIM_CLK) = 0x0002; // CPU_CLK / 2
а считают в симуляторе оба с частотой CPU_CLK, то есть делитель не работает? таймера просто так считают
в чем дело ?
ассемблерный код верный - например для первой строки выдает
mov #4099, ar3
mov #8, port(*ar3)
TIMx_BASE и смещения объявлены через ioport int*

и еще - начинают таймера считать почему-то после того, как reload program нажмешь, после первой загрузки и инициализации не считают

вот исходный код:

void init_tmr(void)
{
*TSSR = 0x0000;
*(TIM0_BASE + TIM_EMU) = 0x0003; // TIM0 free run
*(TIM0_BASE + TIM_CLK) = 0x0008; // CPU_CLK / 8
*(TIM0_BASE + TIM_GPEN) = 0x0003; // TIM I/O as GPIO
*(TIM0_BASE + TIM_PRD1) = 0x0F00; // TIM PRD = 0x0000 0000 0000 0F00
*(TIM0_BASE + TIM_PRD2) = 0x0000;
*(TIM0_BASE + TIM_PRD3) = 0x0000;
*(TIM0_BASE + TIM_PRD4) = 0x0000;
*(TIM0_BASE + TIM_CTL1) = 0x0080; // continuos mode
*(TIM0_BASE + TIM_GCTL1) = 0x0003; // no prescaler, timer not in reset
}


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru