Haz una pregunta
  Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/05/2012 #1

Avatar de smoki

Como puedo detener el motor con un logicsState o push button
Hola electrónicos
Bueno pues me estoy en enseñado a programar, y estoy haciendo este pequeño programa para saber manejar interrupciones externas, este programa es para cambio de giro de un motor de CD y hasta ahora e logrado que cambie de giro pero quisiera por medio de otra interrupción detener el motor, osea que sea cual sea hacia el lado que gire que por medio de otro logicsState o un push button lo pueda detener, pero no se como y ya le moví bastante, el programa es el siguiente:

#include <intext.h>

#int_EXT
void EXT_isr(void)
{
output_low(PIN_B7); // si esta en bajo lo apago
output_high(PIN_B6); // si esta en alto lo enciendo
}

#int_EXT1
void EXT1_isr(void)
{
output_high(PIN_B7); // si esta en alto lo enciendo
output_low(PIN_B6); // si esta en bajo lo apago

}

void main()
{
setup_timer_3(T3_DISABLED | T3_DIV_BY_1);

enable_interrupts(INT_EXT); //habilito interrucpion externa
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
enable_interrupts(GLOBAL); //habilito interrupcines globales
//disable_interrupts(INT_EXT);

while(TRUE)
{
//TODO: User Code
}

}

ojala puedan ayudarme, de antemano gracias
(adjunto la imagen de proteus)
29/05/2012 #2


usa una variable de tipo entero que si le das a una interrupcion tome un valor, si le das a otra otro ,y si le das a la otra otro, para eso necesitarias un pic con 3 external interrupts.

y en el main pues pones que si la variable esta a un valor x se encienda el puerto, y un else que si no esta se apague ese puerto, lo mismo si el valor es y para el giro en la otra direccion, y ya esta que tome un valor diferente a x o y cuando quieras que se pare

---------- Actualizado después de 2 minutos ----------

#include <intext.h>

int i=0;

#int_EXT
void EXT_isr(void)
{
i=1;
}

#int_EXT1
void EXT1_isr(void)
{
i=2;
}
#int_EXT2
void EXT2_isr(void)
{
i=0;
}
void main()
{
setup_timer_3(T3_DISABLED | T3_DIV_BY_1);

enable_interrupts(INT_EXT); //habilito interrucpion externa
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
enable_interrupts(GLOBAL); //habilito interrupcines globales
//disable_interrupts(INT_EXT);
//TODO: User Code
while(1)
{if (i=1)output_high(pin_b7);else output_low(pin_b7);
if(i=2)output_high(pin_b6);else output_los(pin_b6);
}
}

}
30/05/2012 #3

Avatar de smoki

hola Limako muchas gracias, la verdad no me funciono como me dijiste pero me diste una muy buena idea de como hacerle. Ahora solo me falta cambiar los logicsState por push button jeje que aun no me a salido, creo que tengo que habilitar 3 pines como entrada o algo así.


gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Software de Simulación y Diseño Electrónico

Todo lo relacionado con estos programas.

Cerrar
Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.