
Кусок кода прилагаю:
CODE
// обработчик системных прерываний
void ISR_Sys(void)
{
unsigned int status;
status = RTT_GetStatus(AT91C_BASE_RTTC);
// прерывания от RTT
if (statusRTT !=0)
{
printf("rtt ");
TX_En=~TX_En;
}
status = PIT_GetStatus() & AT91C_PITC_PITS;
// прерывания от PIT
if (status != 0)
{
timestamp ++;
switch(var)
{
.
.
.
}
}
}
// разрешение системных прерываний
void ConfigureSYS_IRQ (void)
{
IRQ_DisableIT(AT91C_ID_SYS);
IRQ_ConfigureIT(AT91C_ID_SYS, 0, ISR_Sys);
IRQ_EnableIT(AT91C_ID_SYS);
}
void ConfigurePit(void)
{
// Initialize the PIT to the desired frequency
PIT_Init(PIT_PERIOD, BOARD_MCK / 1000000);
// Configure interrupt on PIT
PIT_EnableIT();
// Enable the pit
PIT_Enable();
}
void ConfigureRTT (void)
{
RTT_SetPrescaler(AT91C_BASE_RTTC, 32768); // настройка таймера
RTT_EnableIT(AT91C_BASE_RTTC, AT91C_RTTC_RTTINCIEN); // разрешение прерывания
}