I want to interface MCB2140 with a pressure sensor which will give input for every 1 second.. I connected UART0 to pressure sensor output, UART1 to serial port of PC. The pressure sensor gives the integer value as output.The UART0 will receive data from sensor and should display in hyper terminal for every 1 minute..I wrote the following code..The code gets hanged in startup file at BX R0...Please let me know any other changes required #include <LPC21xx.H> void init_serial (void); int main(void) { init_serial();
while(1) { int getc_serial0; int putc_serial1; } } void init_serial (void) {
PINSEL0 = 0x00050005;
U0LCR = 0x00000083;
U0DLL = 98;
U0LCR = 0x00000003;
U1LCR = 0x00000083;
U1DLL = 98;
U1LCR = 0x00000003;
}
int getc_serial0(void)
{
while (!(U0LSR & 0x01));
return U0RBR;
} int putc_serial1(void)
while (!(U1LSR & 0x20));
U1THR=U0RBR;
return (U1THR);
It doesn't matter how new you are to embedded.
1) You just have to learn to debug. Therea are no alternatives, since people on web forums will not copy/paste code just to debug for you.
2) You have received multiple comments about your strange plays with your get/put functions. In the first code you didn't do any calls at all. In the second sets of code you don't do what you should - return a byte from getc() and send a byte to putc(). You somehow thinks putc() should copy data between two SFR which is the wrong thing to do.
3) Being new to something means a large need to read. What have you been reading? The datasheet for your processor? Don't assume that a transmit holding register (used for writing data to a serial port) is a register that can also be read. Exactly what do you think it will return? If the receive and transmit registers where actually the same thing - wouldn't the processor just have a "data register" then? And for a processor that can cache multiple outgoing bytes - which byte should the transmit holding register then return? And what if the transmitter is empty - what should the transmit holding register then return?
Lots of questions in my text? Yes. Why? Because you need to see for yourself that you are making assumptions. To assume is sometimes spelled ass-u-me because assumptions is the best way to do something wrong. Assumption is just a "finer" word for "guessing". Datasheets, user manuals, application notes, sample code packages etc are there so that developers will not have to guess.
Remember that I - and everyone else on this forum - are regularly new to different processors. But we can't then write random code lines and ask on a forum why the lines doesn't work. We have to read until we find text sections that tells us what is needed to get data from a serial port. Or for sending data to a serial port. Or asking if data is available. Or the transmitter have room for more data. Or how to set the correct baudrate.
Experience just means we better knows what terms to scan for in the manuals. And that we are quicker at "guessing" where to put breakpoints in the code - or trace output - to compare what really happens with what was intended to happen.