[an error occurred while processing this directive]
|
проц 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: info@telesys.ru