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:
PASOS:
- Creación de un proyecto:
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
}
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;
}
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:
--> Practica #17
2.- Compilar con el icono del martillo y debug con el icono del insecto:
No hay comentarios.:
Publicar un comentario