Haremos uso de la interface RIIC0 con el que cuenta el MCU R5F563NB de la tarjeta de evaluación YRDKRX63N. Haremos funcionar el sensor de temperatura ADT7410 cuyo protocolo es I2C e imprimiremos su valor en la LCD gráfica en grados Celsius.
- Inicializaremos el módulo RIIC0
- Se crearán rutinas de lectura y escritura I2C
- Se implementará la API del sensor de temperatura para manejo de sus funciones.
DESARROLLO:
- Del YRDKRX63N schematic ubicamos el sensor de temperatura y su dirección:
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.- Las rutinas de lectura del sensor de temperatura se encuentran en el archivo TemperatureSensor.c
/* ADT7420 IIC Registers */
#define ADT7420_ADDR 0x90
#define ADT7420_TEMP_MSB_REG 0x00
#define ADT7420_CONFIG_REG 0x03
#define BSP_TEMP_ADDR (ADT7420_ADDR >> 1)
void Temperature_Init(void)
{
uint8_t temp_data[2];
temp_data[0]
= ADT7420_CONFIG_REG; /* configure temperature sensor */
temp_data[1]
= 0x00;
I2C_Write(BSP_TEMP_ADDR,
&temp_data[0], 2, true);
}
unsigned int Temperature_Get(void)
{
uint8_t temp_data[2];
uint16_t temp;
temp_data[0]
= ADT7420_TEMP_MSB_REG;
I2C_Write(BSP_TEMP_ADDR,
&temp_data[0], 1, false);
I2C_Read(BSP_TEMP_ADDR,
&temp_data[0], 2, false);
temp
= temp_data[0] << 8;
temp
+= temp_data[1];
return temp;
}
void I2C_Start(void);
void I2C_Read(uint8_t
addr, uint8_t *p_data, uint32_t
len, bool start)
void I2C_Write(uint8_t
addr, uint8_t *p_data, uint32_t
len, bool stop)
void main(void)
{
set_ipl(
0 ); // enable interrupts
SR_Oscilador(); // configura oscilador a 96 Mhz
SR_TIMER_0(); // Inicializa
el Timer 0 en cascada para 16 bits para libreria
delay
SR_LCD_GRAPH(); // LCD 96x64
SR_TEMPERATURE_SENSOR(); // sensor de Temperatura I2C ADT7410TRZ
while(1)
{
u16TemperatureSensor =
Temperature_Get(); // consigue el valor de temperatura
fValueTemp =
u16TemperatureSensor / 100.0;
LCDPrintf(0, 0, "Microcarsil ");
LCDPrintf(1, 0, " 2017 ");
LCDPrintf(2, 0, "Carlos Silva");
LCDPrintf(3, 0, " ");
LCDPrintf(4, 0, "Practica #9");
LCDPrintf(5, 0, " ");
LCDPrintf(6, 0, "Temp = %.2f",
fValueTemp);
LCDPrintf(7, 0, " Celsius ");
delay_ms(100);
}
}
- Agregar código, compilar y debug:
--> Practica #9
2.- Compilar con el icono del martillo y debug con el icono del insecto:
No hay comentarios.:
Publicar un comentario