TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Algec en 26 de Mayo de 2007, 13:02:15
-
No funciona una rutina con salida en A4 en proteus, si funciona si selecciono por ejemplo A0 pero no puedo entender donde esta el error, debe ser de configuracion. Os pego el codigo a ver donde falla
//code
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT
#use delay(clock=1000000)
int tiempo =20;
// rutina de interrupcion si se gira el encoder
#INT_EXT
void giro (void){
disable_interrupts(global);
/////// EJE X //////////////
If(input(PIN_C1)) // esta seleccionado X en el selector
{
output_high(PIN_A3); // desbloquea X
// depende del sentido de giro del encoder fija el bit de direccion de X
if(input(PIN_B1))
output_high(PIN_A2); // direccion a un lado
else
output_low(PIN_A2); // direccion a un lado
// hace la salida del pulsos de X
output_high(PIN_A1);
delay_ms(tiempo);
output_low(PIN_A1);
delay_ms(tiempo);
output_low(PIN_A3); // bloquea X
}
/////// EJE Y //////////////
If(input(PIN_C2)) // esta seleccionado Y en el selector
{
output_high(PIN_C4); // desbloquea Y
// depende del sentido de giro del encoder fija el bit de direccion de Y
if(input(PIN_B1))
output_high(PIN_A5); // direccion a un lado
else
output_low(PIN_A5); // direccion a un lado
// hace la salida del pulsos de X
output_high(PIN_A4);
delay_ms(tiempo);
output_low(PIN_A4);
delay_ms(tiempo);
output_low(PIN_C4); // bloquea Y
}
/////// EJE Z //////////////
If(input(PIN_C3)) // esta seleccionado Z en el selector
{
output_high(PIN_C7); // desbloquea Z
// depende del sentido de giro del encoder fija el bit de direccion de Z
if(input(PIN_B1))
output_high(PIN_C6); // direccion a un lado
else
output_low(PIN_C6); // direccion a un lado
// hace la salida del pulsos de Z
output_high(PIN_C5);
delay_ms(tiempo);
output_low(PIN_C5);
delay_ms(tiempo);
output_low(PIN_C7); // bloquea X
}
enable_interrupts(global);
}
void main(){
enable_interrupts(INT_EXT);
enable_interrupts(global);
while(TRUE){
}
}
encode//
-
Si no recuerdo mal ese pin es Schmitt Trigger y necesita de una pullup (http://elrebujito.es/wikipic/index.php/Pull-up) externa para funcionar.
-
Hola.
Correccion se llaman open colector y correcto llevan un pullup
Saludos
-
Bingo chicos, mil gracias.
Alguna salida mas necesita pull ups? casi es mejor usar otra salida si puedo reformando el esquema.
-
Dale una ojeada a la hoja de datos del pic para salir de dudas.
-
Venga gracias por todo, ya he cambiado a usar otra salida, no me convenia que quedase a positivo fijo.
-
Hola.
Correccion se llaman open colector y correcto llevan un pullup
Saludos
Tienes razón, gracias por la corrección