Cómo utilizar el microcontrolador ATMEGA16 para controlar el tcd1304
AVR, parece que entendemos esto, el que usamos es AVR. Supongo que tu especialidad es la optoelectrónica, porque usas un controlador CCD. Aunque también me especializo en optoelectrónica, nunca he trabajado con un controlador CCD.
Si desea que mega16 genere pulsos, puede usar T0, T1 y T2 del microcontrolador para generar PWM que es de 16 bits, lo cual es un poco problemático de usar, por lo que puede usar T0. Puede usar el puerto T0 como salida PWM (especifique el puerto, no cada IO. Para una mejor conducción, agregue un transistor a la salida como precontrolador, puede usar 8050). Lo que se debe hacer en el programa es configurar la frecuencia PWM, que está relacionada con la división de frecuencia del temporizador, y la configuración del ciclo de trabajo está relacionada con el valor inicial y coincidente del temporizador. Te daré un pequeño programa para que le eches un vistazo y lo modifiques. //Incluir los archivos de encabezado requeridos
#include?lt;ioM16v.hgt;
#include?lt;macros.hgt;
/*-- ----Definición de macro------*/
#define?uchar?unsigned?char
#define?uint?unsigned?int
//Inicialización de puerto
void?port_init(void)
{ PORTA?=?0x00; DDRA?=?0x00; PORTB?=?0x00; PORTC?=?0x00; DDRC?=?0x00; PORTD?=?0x00; DDRD?=?0x00;
}
//Inicialización del temporizador T0
void?timer0_init(void)
{ TCCR0?=?0x00; //Detener el temporizador TCNT0?=?0x00; //Valor inicial OCR0=?0x01; //Valor coincidente, el valor cambia. cambie el ciclo de trabajo más tarde. Cuanto mayor sea el valor, mayor será el ciclo de trabajo. También puede cambiar el ciclo de trabajo de PWM cambiando este valor en la función principal. TIMSK?|=?0x00; //Habilitar interrupción TCCR0?=?0x61; //Inicia el temporizador, la división de frecuencia se establece aquí
}
void?init_devices(void)
{ CLI();?//Deshabilitar todas las interrupciones MCUCR?=?0x00; MCUCSR?=?0x80; //Deshabilitar JTAG GICR=?0x00; //Habilitar interrupción global
}
//Función principal
void?main(void)
{ init_devices();/ /Inicializar función de servicio while(1) { NOP(); //Cambiar a su programa}
}