Hi! I tried to view my output ( using rprintf ) on the Hercules terminal by choosing the COM1 and the appropriate baud rate but after thousands of tries, I got only this kind of response :
Serial port COM1 opened
ÑÔ9ä11ëÔÃ())6Ô{FF}())6Ô{FF}())6Ô{FF}())6Ô{FF}()+4Ô{FF}(++4Ô{FF}(++4Ô{FF}(++4Ô{FF}(++4Ô{FF}(++4Ô{FF}(++4Ô{FF}(++4Ô
or
Serial port COM1 opened
ü´ùþ”ûþ–ùü´ùü´ùþ–ûü–ùü´ùþ”ûþ
Serial port COM1 closed
Any idea why I can’t view the good words ???
             
            
              
            
           
          
            
              
                n1ist  
              
                  
                    March 1, 2011,  1:59pm
                   
                  2 
               
             
            
              Looks like the baud rate isn’t correct (either it is programmed wrong or the processor clock is set up wrong).
/mike
             
            
              
            
           
          
            
            
              Yes, I was thinking about the baud rate too, but
in my Makefile, it is 38400
 
when I initialise the serial port, I put 38400 as parameter
 
when I use HERCULES SETUP UTILITY I choose 38400
 
 
And I did the same manipulation with 9600 everywhere !!
Here is my code :
SERIAL.C
#include "LPC214x.h"
#include "target.h"
#include "serial.h"
#define CR     0x0D
/* Initialize Serial Interface UART0 */
void init_serial0 ( unsigned long baudrate )
{
    unsigned long Fdiv;
    PINSEL0 |= 0x00000005;                  /* Enable RxD0 and TxD0              */
    U0LCR = 0x83;                          /* 8 bits, no Parity, 1 Stop bit     */
    Fdiv = ( Fcclk / 16 ) / baudrate ;     /* baud rate                        */
	U0DLM = Fdiv / 256;
    U0DLL = Fdiv % 256;
    U0LCR = 0x03;                           /* DLAB = 0                         */
}
/* Write character to Serial Port 0 with \n -> \r\n  */
int putchar_serial0 (int ch)
{
    if (ch == '\n')
    {
        while (!(U0LSR & 0x20));
        U0THR = CR;                  /* output CR */
    }
    while (!(U0LSR & 0x20));
    return (U0THR = ch);
}
/* Write character to Serial Port 0 without \n -> \r\n  */
int putc_serial0 (int ch)
{
    while (!(U0LSR & 0x20));
    return (U0THR = ch);
}
And here is the function I am using :
void bootUp(void)
{
	//Init rprintf
	init_serial0(38400);				//Set up the baud rate
	
	//Initialize UART for RPRINTF
    rprintf_devopen(putc_serial0);
	//Initialize I/O Ports and Peripherals
	IODIR0 |= LED; ///P0.15 is set as an output
	
    //Setup the Interrupts
	//Enable Interrupts
	VPBDIV=1;	// Set PCLK equal to the System Clock	
	VICIntSelect = ~(INT_TIMER0|INT_UART0);
		VICVectCntl0 = 0x20 | 4;						//Timer 0 Interrupt
	VICVectAddr0 = (unsigned int)ISR_Timer0;
		VICVectCntl1 = (0x20 | 6);
	VICVectAddr1 = (unsigned int)ISR_UART0;					
}
So what about the processor clock ??
             
            
              
            
           
          
            
            
              What about peripherals clock ? Baudrate is derived from it.
Angelo
             
            
              
            
           
          
            
            
              Yes, i agree, but I don’t know what am I doing wrong…