Cómo utilizar el microcontrolador ATMEGA16 para controlar el tcd1304
Para generar los pulsos de salida del mega16, puede utilizar los T0, T1 y T2 del microcontrolador para generar PWM. T1 es de 16 bits, lo cual es un poco problemático. Simplemente use T0. Puede utilizar el puerto T0 como salida PWM (puerto especificado, no todas las IO). Para una mejor conducción, agregue un transistor en el extremo de salida como precontrolador; puede usar 8050. Lo que el programa debe hacer es configurar la frecuencia de PWM. Esta frecuencia está relacionada con la división de frecuencia del temporizador. La configuración del ciclo de trabajo está relacionada con el valor inicial y el valor coincidente del temporizador. Te daré un pequeño programa. Solo échale un vistazo y modifícalo. //Incluir los archivos de encabezado requeridos.
#¿Incluir? <IOM 16v.h>
¿#Contiene? & ltmacros.h & gt
/*-Definición de macro-*/
#¿Definición? ¿Uchar? ¿No firmado? Té
#Definición? uint? ¿No firmado? (Igual que organizaciones internacionales) Organizaciones internacionales
//Inicialización de puerto
¿No es válido? port_init(vacío)
{
PORTA? =?0x00
¿DDRA? =?0x00
PORTB? =?0x00
DDRB? =?0x00
PORTC? =?0x00
DDRC? =?0x00
¿Portado? =?0x00
DDRD? =?0x00
}
//El temporizador T0 está inicializado
¿No es válido? Temporizador 0_init (no válido)
{
TCCR0? =?0x00//Detener temporizador
TCNT0? =?0x00//Valor inicial
OCR0=? 0x 01; //Valor coincidente, puede cambiar el ciclo de trabajo. Cuanto mayor sea el valor, mayor será el ciclo de trabajo. También puede cambiar el ciclo de trabajo de PWM cambiando el valor en la función principal.
¿Timsk? |=?0x00//Habilitar interrupción
TCCR0? =?0x 61; //Inicia el temporizador, configura la división de frecuencia aquí.
}
¿Anulado? Inicializar dispositivo (no válido)
{
CLI();? //¿Desactivar todas las interrupciones
MCUCR? =?0x00
MCUCSR? =?0x80//Desactivar JTAG
GICR=? 0x00
puerto _ init();
Temporizador 0 _ init();
SEI() //Activar interrupción global
}
//Función principal
¿No es válida? Main (no válido)
{
init _ devices(); //Función de servicio de inicialización
while(1)
{
NOP(); //Cambia a tu programa
}
}