// OK
// test emission simple chaine de caractere
// sprintf ok


#include <p33FJ64MC802.h>
#include <stdio.h>
#include <timer.h>
#include <uart.h>
#include "delay.h"
#include "drvUART.h"


//config oscillateur
_FOSCSEL(FNOSC_PRIPLL);								// Choix du oscillateur + PLL
_FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF  & POSCMD_XT);	// Pas de basculement d'horloge
													// pas de OSC2
													// type d'oscillateur XT
_FWDT(FWDTEN_OFF); // watchdog off;



void InitPORT_AND_PIN() 
{  // depend du schema de la carte
	// Rx : RP15
	// Tx:RP14
	_U1RXR=15;	                    //RX sur RP15/RB15
	_RP14R=3;                        //TX sur RP14/RB14
	
	TRISBbits.TRISB15=0; //RP15/RB15 en sortie

}

	void InitClock2() 
{   // CHOIX DES COEF DE LA PLL : voir notice OSCILLATOT
	// FOSC = FIN •(M/(N1*N2))  et Fcy=Fosc/2 = fréquence de fct des périphriques
	// ex: quartz 8Mhz et Fosc=80Mhz => Fosc=8M*(40/4)
	PLLFBD = 38;				// M = 40       
	CLKDIVbits.PLLPOST = 0;		// N1 = 2
	CLKDIVbits.PLLPRE = 0;		// N2 = 2
	OSCTUN = 0;
	RCONbits.SWDTEN = 0;

	while(OSCCONbits.LOCK != 1) {}; // attente verrouillage PLL
}
	


unsigned char BUFF[50]={'i','u','t','\n','\0'};

int main (void)

{	InitClock2() ; //init oscillateur

	InitPORT_AND_PIN(); // init broche remapable
	InitUART1(); // init broche remapable

	// exemple 1 : appel à la fct  UART_puts
	//passage du tableau à envoyer
	UART_puts(BUFF);
	///////////////////////////

	// exemple 2 : formatage avec sprintf
	// BUFF: tableau de caractere résultat de la conversion 
	sprintf(BUFF,"Un entier: %d\n Un float: %f \r",10,10.5);
	UART_puts(BUFF); // envoi sur RS232 du resultat

	for (;;)
	{
		Delay(Delay_15mS_Cnt); // tempo BLOQUANTE: attention pour demo uniquement!!!
		UART_puts(BUFF); // envoi en bouble
	
	}
}
