Всем доброго дня!
Прошу помощи.
Начал осваивать LPC2129 с нуля. Платка OLIMEX, Keil и больше ничего.
Скомпилировал код обработки прерываний Timer0 и Uart0.
Таймер управляет бдинком диодов, порт принимает и отправляет байт.
При запуске диоды мигают и Uart0 принимает и отправляет байт.
Но таймер после первого байта затыкается, хотя Uart0 продолжает принимать и отправлять байты.
Почему??? Вот мой код.
CODE
void init_uart0 (int boudrate) {
U0LCR = 0x00000083;
U0DLL=14745600/(16*boudrate);
U0DLM=((14745600/(16*boudrate))>>8);
U0LCR = 0x00000003;
VICVectAddr1 = (unsigned long)uart0;
VICVectCntl1 = 0x20 | 6;
VICIntEnable |= 0x00000040;
U0IER = 0x01;
}
void uart0 (void) __irq {
putchar(getchar());
}
void init_timer (void) {
T0MR0 = 149999; // 10mSec = 150.000-1 counts
T0MCR = 3; // Interrupt and Reset on MR0
T0TCR = 1; // Timer0 Enable
VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0
VICVectCntl0 = 0x20 | 4; // use it for Timer 0 Interrupt
VICIntEnable |= 0x00000010; // Enable Timer0 Interrupt
}
void tc0 (void) __irq {
++timeval;
T0IR = 1; // Clear
VICVectAddr = 0; // Acknowledge Interrupt
}
Сообщение отредактировал IgorKossak - Mar 19 2012, 10:21
Причина редактирования: [codebox]