Se configurará el Compare Match Timer (CMT) con la que cuenta el MCU R5F563NB de la tarjeta de evaluación YRDKRX63N. Este CMT de 16 bits lo utilizaremos para generar funciones de retardo de tiempo como delay_100us y delay_ms por medio de su interrupción.
- Configurar el CMT de 16 bits
- Crear interrupción CMT0 CMI0
- Parpadear un Led cada segundo utilizando las funciones delay_ms
DESARROLLO:
- Del manual Renesas RX63N RDK User's Manual ubicamos el LED 4
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.- Configuraremos el CMT 0 e iniciamos interrupción CMI0 en el archivo CMT.c:
/* The CMT in this example is clocked at
a rate of
(PCLK / 32) or (48 MHz / 32) = 1500000 cuentas para llegar a
1000 ms
1500000 -- 1000 ms
x -- 0.1 ms = 100 us
x = 150
*/
void CMT_0_init (void)
{
/* Power up CMT0 */
MSTP(CMT0) = 0;
/* Stop the clock */
CMT.CMSTR0.BIT.STR0 = 0;
/* Trigger 100 us from now */
CMT0.CMCOR =
150;
/* CMCR - Compare Match Timer Control
Register
b6 CMIE: 1 = Compare match
interrupt (CMIn) enabled
b1:b0 CKS: 1 = Clock selects is PCLK/32
*/
CMT0.CMCR.BIT.CMIE = 0x01;
CMT0.CMCR.BIT.CKS =
0x01;
/* Set interrupt priority in ICU */
IPR(CMT0, CMI0) = 0x01;
/* Enable the interrupt in the ICU */
IEN(CMT0, CMI0) = 1;
/* Start the clock running */
CMT.CMSTR0.BIT.STR0 = 1;
} /* End of function CMT_init() */
void CMT_0_Start(void)
{
IR(CMT0,CMI0) = 0; // Clear IRQ if it was on for some reason
IEN(CMT0,CMI0) = 1; // Enable the interrupt in the ICU
}
void CMT_0_Stop(void)
{
IR(CMT0,CMI0)
= 0; // Clear IRQ if it was on for some
reason
IEN(CMT0,CMI0)
= 0; // Disable the interrupt in the ICU
}
6.- Agregaremos el siguiente código a la interrupción que está en el archivo interrupt_handlers.c
// CMT0 CMI0
void Excep_CMT0_CMI0(void)
{
G_100usTimer++;
if ((G_100usTimer % 10) == 0)
G_msTimer++;
}
void main(void)
{
set_ipl(
0 ); // enable interrupts
SR_Oscilador(); // F = 96 Mhz
SR_INIT_PORTS(); // Inicializa
los I/O
SR_CMT_0(); // Inicializa
el Compare Match Timer 0
while(1)
{
LED4
= ~LED4;
delay_ms(1000);
}
}
- Agregar código, compilar y debug:
--> Practica #22
2.- Compilar con el icono del martillo y debug con el icono del insecto:
VÍDEO:
qual a senha do arquivo?
ResponderBorrar