Вот код main, здесь только инициализация Uartoв производится и постоянный опрос камеры.
CODE
int main(void)
{
// -- Заполняем массив состояний камер значениями 0x04(Камера выключена) --------
for(i=1; i<6; i++)
{
Status[i] = 0x04;
}
// ------------------------------------------------------------------------------
ConfigureUsartDirect(); // Конфигурация Usart, ретранслирующего от ПЭВМ к БЛВС и ВК
ConfigureUsartReverse(); // Конфигурация Usart, ретранслирующего от ВК, БЛВС к ПЭВМ
ConfigureUsartVk(); // Конфигурация Usart для работы с ВК
ConfigureUsartAlarm(); // Конфигурация Usart для работы со средством обнаружения
USART_DIRECT->US_IER = AT91C_US_RXRDY; // Включение прерываний по USART_DIRECT
USART_REVERSE->US_IER = AT91C_US_RXBUFF; // Включение прерываний по USART_REVERSE
USART_VK->US_IER = AT91C_US_RXRDY; // Включение прерываний по USART_VK
USART_ALARM->US_IER = AT91C_US_RXRDY; // Включение прерываний по USART_ALARM
unsigned char CountVK = 1; // Счетчик номера опрашиваемой камеры
// Основной цикл программы
while(1)
{
if(CountVK==6) //Сбрасываем счетчик, когда опрошено 5 камер
{
CountVK=1;
}
Query(NumBLVS, CountVK);
CountVK++; // Увеличение счетчика номера камеры
}
А это инициализация одного из Usartoв.
CODE
void ConfigureUsartReverse(void)
{
#define MODE_ASYNCHRONOUS (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE | AT91C_US_NBSTOP_1_BIT)
const Pin pinsUsart[] = {USART_REVERSE_TXD, USART_REVERSE_RXD};
PIO_Configure(pinsUsart, PIO_LISTSIZE(pinsUsart));
PMC_EnablePeripheral(USART_REVERSE_ID);
USART_Configure(USART_REVERSE, MODE_ASYNCHRONOUS, 115200, BOARD_MCK);
// Configure the interrupt
AIC_ConfigureIT(USART_REVERSE_ID, AT91C_AIC_PRIOR_HIGHEST, ISR_UsartReverse);
AIC_EnableIT(USART_REVERSE_ID);
// Enable receiver & transmitter
USART_SetReceiverEnabled(USART_REVERSE, 1);
USART_SetTransmitterEnabled(USART_REVERSE, 1);
}
Правда я думаю я в прерываниях не до конца разобрался, поэтому так и выходит, что либо они все время срабатывают, либо не работают.
Еще возник вопрос, думаю сделать ретрансляцию через PDC, чтобы не загружать процессор. Правда в даташите на контроллер немного написано, да и примеров для работы с PDC под этот контроллер нет. Может кто посоветует пример для другого какого, чтобы я мог разобраться?
Сообщение отредактировал IgorKossak - Mar 3 2011, 15:18