This is code for showing temperature sensed value of UART0 of lpc2138
#include <stdio.h> #include"LPC213.h" // Define LPC2148 Header File
#define CR 0x0D #define DONE 0x80000000 #define START 0x01000000 #define PRESET 0x00230600
void Delay (); void init_serial (void); int putchar (int ch); int getchar(void); int main () { unsigned long Val; char *Ptr = "Current Temperature is:"; VPBDIV = 0x02; //pclk @ 30MHz init_serial(); PINSEL1 = 0x01 << 24; //P0.28 configure as ADC0.1 AD0CR = PRESET | 0x02; AD0CR |= START; //Start Conversion NOW while (1) { do { Val = AD0GDR; } while ((Val & DONE) == 0); Val = ((AD0GDR >> 6) & 0x3FF); while (*Ptr) { putchar(*Ptr++); } printf ("%4d ", Val); putchar(getchar()); // Echo terminal
} //printf ("\xF8\F \r"); }
void Delay () { unsigned int i,j; for (i=0;i<50;i++) for (j=0;j<500;j++); }
void init_serial (void) { PINSEL0 = 0x00000005; // Enable RxD0 and TxD0 U0LCR = 0x00000083; //8 bits, no Parity, 1 Stop bit U0DLL = 0x000000C3; //9600 Baud Rate @ 30MHz VPB Clock U0LCR = 0x00000003; } int putchar (int ch) { if (ch == '\n') { while (!(U0LSR & 0x20)); U0THR = CR; } while (!(U0LSR & 0x20)); return (U0THR = ch); } int getchar(void) { while (!(U0LSR & 0x01)); return (U0RBR); }
This is the above code which shows following errors when I add studio.h header file in code
compiling adc.c... adc.c(9): warning: #1295-D: Deprecated declaration Delay - give arg types adc.c(11): error: #79: expected a type specifier adc.c(12): error: #55: too many arguments in macro invocation adc.c(12): error: #79: expected a type specifier adc.c(55): error: #79: expected a type specifier adc.c(55): error: #141-D: unnamed prototyped parameters not allowed when body is present adc.c(65): error: #55: too many arguments in macro invocation adc.c(65): error: #79: expected a type specifier adc.c(65): error: #141-D: unnamed prototyped parameters not allowed when body is present Target not created
And if I dont add studio.h header file then printf function doesn't work. What should I do in this case? I guess I need printf function in order to print ADC value to the UART terminal.
You are hard to help since you don't like to post readable code.
Why do you think printf() text should end up on the UART? What have you done to make that happen? How would the compiler/linker know that your UART should be seen as a console?
By the way - have you really found many posts that have recommended the use of a dumb busy-loop to get a trusty 1ms delay?