Тестовая прога для 91SAM7X под Keil
Плиз разъясните новичку:
1.Выход из прерывания PIT в случае, когда timeval = 500 - чтением PITC_PIVR сбрасываем бит PITS и обнуляем счётчик PICNT в PITC_PIVR?
2.Можно ли вместо timeval использовать значение счётчика PICNT в PITC_PIIR?
3.При выходе из прерывания в *AT91C_AIC_EOICR записывать "0" или любое другое значение?
; ------------------------------- Прога -------------------------------
extern volatile unsigned long timeval; /* Current Time Tick */
extern AT91S_PIO * pPIO_Led; /* Global Pointer to PIO */
__irq void pit_int (void) { /* System Interrupt Handler */
AT91S_PITC * pPIT = AT91C_BASE_PITC;
if (pPIT-›PITC_PISR & AT91C_PITC_PITS) { /* Check PIT Interrupt */
timeval++; /* Increment Time Tick */
if ((timeval % 500) == 0) { /* 500ms Elapsed ? */
pPIO_Led-›PIO_ODSR ^= LED_PIT; /* Toggle LED_PIT */
}
*AT91C_AIC_EOICR = pPIT-›PITC_PIVR; /* Ack & End of Interrupt */
} else {
*AT91C_AIC_EOICR = 0; /* End of Interrupt */
}
}
; ------------------------------- Конец проги --------------------------
4.Кто шарит - плиз бросьте инициализацию под 91SAM7 PIO_Int и обработчик PIO_Int под Keil
|