POR Eric Sanchez Briones — El admin je je je je
” EL CONOCIMIENTO TE HACE LIBRE ” VIVA GNU
En el siguiente programa se pretende controlar un motor con un encoder de vueltas integrado…. La finalidad es contar hasta 255 vueltas detenerse y girar hacia el otro lado utilizando
Un AVR …. ATMEGA16.. El programa fue desarrollado en C++ Bajo el compilador GNU de AVR para C en plataforma Linux.
//// PROGRAMA ENCODER PARA MOTOR CD ///
#include <avr/io.h>
#include <util/delay.h>
///////////////////////////////////////
int incremento=1; // Variable contadora de el encoder
int direccion=1; // Variable de Direccion
int main(void)
{
DDRB=0xff;
INICIO: //Etiqueta de inicio
while(incremento != 255) //Ciclo de incremento mientras la variable sea diferente a 255
{ if(PIND==0×10) // Preguntar se el PIN A0=1
{
incremento ++; // Incrementa Variable
while(PIND==0×10) // D4=1 ?
{} // NO hacer nada hasta q sea cero de nuevo la entrada para evitar rebotes
} //TERMINA CICLO incremento
PORTA=incremento; // Opcional para debugear y ver el registro ” solo para Atmega16
PORTB=direccion; // Poner la direccion en el puerto
} //TErmina Loop infinito
incremento=0;
//// DRIVER DE SENTIDO /////
if(direccion==1)
{direccion=2;
goto INICIO ;}
if(direccion==2)
{direccion=1;
goto INICIO;}
} // FIN DE LA APLICACIÓN
Por…. Eric Sánchez.. dudas a eric_sanchez@prodigy.net.mx