viernes, 10 de febrero de 2017

PRACTICA # 17 INTERNAL TEMPERATURE SENSOR

OBJETIVO:
       Haremos uso del sensor de temperatura interno con el que cuenta el MCU R5F563NB de la tarjeta de evaluación YRDKRX63N. Utilizaremos el modulo AD d 12 bits para convertir el voltaje por medio de una formula temp vs volts e imprimiremos dicha temperatura en la LCD gráfica.
  • Inicializaremos el sensor de temperatura interno
  • Inicializaremos el modulo A/D de 12 bits dando como entrada el canal aux del sensor
  • Se imprimirá en tiempo real la temperatura en el LCD

DESARROLLO:
  • Del RX63N Group User's Manual: Hardware página 1781 se muestra el bloque del sensor de temperatura interno:
Página 1717 se muestra la entrada al convertidor A/D del sensor de temperatura interno.


PASOS:
  • Creación de un proyecto:
1.- Abrir el software e2studio
2.- New/ C Project / Renesas RXC ToolChain


3.- Seleccionar el target R5F563NB, debug hardware Segger jLink, después next


4.- Seleccionar C/C++ Source file y por ultimo Finish.


5.- La inicialización tanto del adc 12 bits como la del sensor de temperatura interno se muestra en el archivo r_cg_adc.c:

void RTC_Init(void)
{
            /* Set RTC clock input from sub-clock, and supply to RTC module */
            RTC.RCR4.BIT.RCKSEL = 0;
            RTC.RCR3.BIT.RTCEN = 1;

            RTC.RCR2.BIT.START = 0;  // Stop RTC

            while (RTC.RCR2.BIT.START == 1)
            {
            } // wait for START bit to be written as 0 – this is necessary since the RTC’s clock source speed is less than that of Sakura’s clock

            RTC.RCR2.BIT.RESET = 1;

            // Wait until reset is complete
            while(RTC.RCR2.BIT.RESET);

            RTC.RYRCNT.WORD = 0x0017;  // year

            RTC.RMONCNT.BYTE = 0x02;   // month
            RTC.RDAYCNT.BYTE = 0x27;   // day

            RTC.RWKCNT.BYTE = 0x04;  // day of week
            RTC.RHRCNT.BYTE = 0x23;  // Hour

            RTC.RMINCNT.BYTE = 0x59;  // minute
            RTC.RSECCNT.BYTE = 0x53;  // second

            RTC.RCR2.BIT.START = 1;   // Start RTC
            while (RTC.RCR2.BIT.START == 0)
            {
            } // wait for START bit to be written as 1

            IEN(RTC, CUP) = 0;

            RTC.RCR1.BIT.CIE = 1;  // carry interrupt is enabled
}

6.- Para obtener el valor digital de la temperatura del sensor interno:

unsigned int adc_get_vdd (void)
{
            unsigned int ADC12bits;

            S12AD.ADCSR.BIT.ADST = 1;
            while (S12AD.ADCSR.BIT.ADST == 1)
            {
                        __nop();
            }
            /* Convert conversion result into voltage */
            ADC12bits = S12AD.ADTSDR;
            return ADC12bits;
}

7.- La función main queda de la siguiente forma:

void main(void)
{

            set_ipl(0);              // enable interrupts
            SR_Oscilador();          //  F = 96 Mhz
            SR_LCD_GRAPH();          //  LCD 96x64
            SR_TIMER_0();            // Inicializa el Timer 0 en cascada para 16 bits
            SR_ADC();                // ADC 12 bits

            while(1)
            {
                        AdcValue = adc_get_vdd();          // adquiere el valor 12 bits
                        T_v = (3.3 * AdcValue) / 4096.0;
                        v1 =1.26; /*voltage at 25 degree Celcius*/  // 25 DegC = 1.26V = 1564,
                        s =0.0041; /* V/C */
                        T = ((T_v-v1)/s) + 25;
                        LCDPrintf(0, 0, "Microcarsil ");
                        LCDPrintf(1, 0, "    2017    ");
                        LCDPrintf(2, 0, "Carlos Silva");
                        LCDPrintf(3, 0, "            ");
                        LCDPrintf(4, 0, "Practica #17");
                        LCDPrintf(5, 0, "            ");
                        LCDPrintf(6, 0, "DegC = %.2f ", T);
                        LCDPrintf(7, 0, "            ");
                        delay_ms(100);
            }
}


  • Agregar código, compilar y debug:
1.- Bajar el código de:
--> Practica #17

2.- Compilar con el icono del martillo y debug con el icono del insecto:



VÍDEO:


No hay comentarios.:

Publicar un comentario