Hey
I'm trying to get the UART0 and UART1 working on my LPC2124 Olimex
board. I use the WINARM GNU toolchain.
I've wrote a simple code to test the UART. But when i send a byte to
my PC, the received byte is wrong.
This is my test program:
void SetUART(int baud){
unsigned int divisor = pCF / (16 * baud);
PINSEL0 |= 0x00050005; /* Enable UART0 & UART1 */
U0IER = 0x00; // disable all interrupts
U0IIR; // clear interrupt ID
U0RBR; // clear receive register
U0LSR; // clear line status register
U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit, DLAB=1*/
U0DLL = divisor;
U0DLM = (divisor >> 8);
U0LCR = 0x03; /* DLAB = 0 - no access to UART1 Div. */
U0IER = 1;
U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit, DLAB=1*/
U1DLL = divisor;
U1DLM = (divisor >> 8);
U1LCR = 0x03;
U1IER = 1;
U0FCR = 0x07; //enable the FIFO's
U1FCR = 0x07; //enable the FIFO's
}
void __attribute__ ((interrupt("IRQ"))) tc0(void) {
timeval--;
T0_IR = 1; // Clear interrupt flag
VICVectAddr = 0; // Acknowledge Interrupt
}
void __attribute__ ((interrupt("IRQ"))) u0(void) {
putcha(U0RBR);
U0IIR;
VICVectAddr = 0;
}
void __attribute__ ((interrupt("IRQ"))) u1(void) {
status |= (1<<UART_1);
dummy = U1RBR;
U1IIR;
VICVectAddr = 0; // Acknowledge Interrupt
}
void setInterrupt(void)
{
enableIRQ();
VICIntEnClear = ~0x000000d0;
VICIntSelect &= ~0x000000d0;
VICIntEnable = 0x000000d0;
VICVectAddr0 = (unsigned long)tc0;
VICVectCntl0 = 0x20 | TIM0;
VICVectAddr1 = (unsigned long)u0;
VICVectCntl1 = 0x20 | UART_0;
VICVectAddr2 = (unsigned long)u1;
VICVectCntl2 = 0x20 | UART_1;
}
void init(void)
{
systemInit();
ledInit();
setInterrupt();
SetUART(9600);
}
char putcha(char ch)
{
while (!(U0LSR & 0x20));
return(U0THR=ch);
}
int main (void) {
init();
while(1)
{
if (IOPIN0 & (1<<SWPIN))
{}
else
putcha(0x30);
}
}
When I run this code, I receive 0x63 on my PC?? Any suggestions ??
What am I missing...
I've tested the board with the Keil CHARM compiler, with succes.....
Almost the same code....
Regards
Jesper Kristensen
DenmarkMessage
UART transmit problem with GNU
2005-04-28 by jesperkr123
Attachments
- No local attachments were found for this message.