TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Gjalken en 04 de Mayo de 2006, 23:19:05
-
Estoy trabajando con un PIC16F84A a 4MHz para mover un servo , la cosa es que necesito moverlo 90 grados a la derecha y luego de 1 hora y media moverlo 90 grados hacia la izquierda....como lo estoy haciendo??.... tengo un circuito temporizador que me temporiza +- 1 hora y media, esta señal la envio a RB0/INT para iniciar la interrupcion, para lograr el manejo del servo utilizo el desbordamiento del TMR0 sin prescaler cargado con un valor de d-"90" para obtener los 100 us que utilizo como base....hasta aca todo ok, pero como lo hago??? debo activar los bit GIE, T0IE y INTF del registro INTCON al comienzo del programa, o puedo activar solamente los bit GIE e INTF al comeinzo, para solamente responder a la interrupcion probocada por la señalización del circuito temporizador, y luego una vez activado el Servicio de Interrupcion activar el otro bit "T0IE" para activar la interrupción por TIMER0 y con esto obtener los periodos y el DUTYCICLE deceado para poder controlar el posicionamiento del servo????
Toda ayuda, idea todo sera bienvenido
-
Lo que puedes hacer es lo siguiente:
Para configurar el Timer0 como temporizador hay que limpiar el bit T0CS OPTION_REG<5>):
bcf OPTION_REG,5
Unicamente tienes que leer el valor del INTCON,2 que se activa cuando hay un sobreflujo del timero (cuando pasa de FFh a 00h), lo que si tienes que asegurarte de limpiarlo nuevamente para los siguientes usos.
Saludos :mrgreen:
-
Bueno he echo algo, cambie la interrupcion del TMR0 por retardos, empieza el programa y mando a dormir al pic (SLEEP) y configuro la interrupcion por flanco de bajada (1->0) la atencion de interrupción, primero verifica el estado anterior de una variable "Lado" ( que me sirve para indicar hacia que lado estaba el motor, en 0º (derecha), o en 90º (izquierda)), y dependiendo del estado anterior ejecuta una rutina que mueve 15º el motor cada 1 segundo y se detiene al llegar al fin, a esperar una nueva interrupcion, hasta ahi suena todo biuen y estaba feliz por que creia que lo habia logrado, mas cuando lo probe, sorpresa, el pic atiende la interrupcion ya sea por flanco de subida como por flanco de bajada, y no se que puede ser, les dejo el codigo a ver si me pueden ayudar (esta en .asm)
NOTA: el archivo Retardos.inc es el que trae el libro PIC16f84A de la editorial RA-MA.