La Red de Conocimientos Pedagógicos - Conocimientos primarios - Cómo utilizar el microcontrolador ATMEGA16 para controlar el tcd1304

Cómo utilizar el microcontrolador ATMEGA16 para controlar el tcd1304

AVR, parece que entiendo esto, use AVR. Supongo que deberías estudiar optoelectrónica porque estás usando un controlador CCD. Aunque también soy una persona optoelectrónica, nunca he creado un controlador CCD.

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

}

}