Haremos uso del módulo MTU6 con el que cuenta el MCU R5F562N8 de la tarjeta de evaluación YRDKRX62N. Generaremos una frecuencia de 10 Khz que será reflejado en un LED por medio de la variación del potenciómetro (duty cycle).
- Inicializaremos la unidad de timer MTU6
- Inicializaremos el ADC de 10 bits
- Variaremos el potenciómetro para modificar el duty cycle de la frecuencia de 10Khz
DESARROLLO:
- Del RX62N Group User's Manual: Hardware página 842 está especificado la salida MTIOC6C que utilizaremos del módulo MTU6.
- Del YRDKRX62N schematic haremos un puente en el conector JN3, entre el pin 11 y 13. Esto con la finalidad de que la señal de salida del PWM del TIOC6C pase al LED1:
PASOS:
- Creación de un proyecto:
2.- New/ C Project / Renesas RXC ToolChain
3.- Seleccionar el target R5F562N8, debug hardware Segger jLink, después next
4.- Seleccionar C/C++ Source file y por ultimo Finish.
5.- La inicialización del MTU6 se encuentra en el archivo pwm.c y se muestra a continuación:
void MTU6_Init(void)
{
// MTU6 = PWM Mode 1
MSTP(MTU6)
= 0; // Wake up MTU6
MTU6.TCR.BIT.TPSC = 1; // PCLK/4 = 12 Mhz
//MTU6.TCR.BIT.CKEG = 1; // Count rising edge
MTU6.TCR.BIT.CCLR = 6; // TCNT cleared by TGRD compare match
MTU6.TMDR.BIT.MD =
2; // PWM mode 1
//MTU6.TMDR.BIT.BFA = 0; //
TGRA, TGRC normal mode
MTU6.TIORL.BIT.IOC = 1; // Output from TIOC6C: 0 at initial, 1
on compare match
MTU6.TIORL.BIT.IOD = 2; // 0 at initial, 0 on compare match
MTU6.TGRD = 1200-1; // 10KHz --> 12 Mhz / 1200 = 10 khz
MTU6.TGRC = 600; // Duty 50%
MTU6.TCNT = 0; // Clear Count
MTUB.TSTR.BIT.CST0 = 1; // Count Start // Enable MTU6.
}
void main(void)
{
set_ipl(0); // enable interrupts
SR_Oscilador(); // F = 96 Mhz
SR_TIMER_0(); // Inicializa
el Timer 0 en cascada para 16 bits
SR_ADC(); // ADC 10 bits ch 4
SR_INIT_PWM(); // inicia pwm MTU6 pin A2
while(1)
{
AdcValue =
adc_get_vdd(); // adquiere el valor 10 bits del ch 8
// MTU6.TGRD = 1200;
MTU6.TGRC = 600; al 50%
// 1024 --- 1200
// AdcValue --- X
period = 0xFFFF & (MTU6.TGRD);
u16DutyCycle = (period *
AdcValue) / 1024;
MTU6.TGRC = u16DutyCycle; // duty cycle 0 -- 100%
delay_ms(100);
}
}
- Agregar código, compilar y debug:
--> Practica #13
2.- Compilar con el icono del martillo y debug con el icono del insecto:
VÍDEO:
No hay comentarios.:
Publicar un comentario