Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - 02arca14

#1
Electrónica / Re: Problema motor paso a paso
17 Abril 2012, 18:53 PM
 me funciona sin declarar tris  ya que utilize output_a con lo que digo mi q todo mi puerto a es de salida y lo cheque en proteus y si me salio utilizo pic c para programar.
y en mi paro de emergencia de mi motor necesito ponerlo a 1 toda mis salidas de mi pic para q entren en el ulm2803 y asi enclavar mi motor paso
a paso . mi diagrama tiene un pic el 18f4550,ulm2803,y un motor paso a paso

#INT_EXT     /  este es mi interrupcion B0 cuando mi interrupcion entre mi  bandera si esta en cero la cambiara a 1 y si es uno a cero y cambiara el funcionamiento de mi programa principal lo encendera y  para mi motor normalment.

void interrupts_ext0(void){
if (bandera){
bandera=0;
output_a(0x00);
}
else {
bandera=1;}

}


#INT_EXT1     /interrupcion B1 este funcionara cuando mi bandera este en uno la cambiara a cero por lo cual saldra en mis salida por todo el puerto a un 1 y asi anclando mi motor esta interrupcion es mi paro de emergencia amarra el motor para que no siga girando por inercia
void interrups_ext1(void){
if (bandera){
output_a(0xff);
bandera=0;
}
else{
output_a(0x00);}

         
         }
#2
Electrónica / Re: Problema motor paso a paso
16 Abril 2012, 22:51 PM
la declaracion output_a(0xff) me explicaron que declaro mi todo mi puerto a  que tenga comom salida 1 .
la bandera si le entendi como usarla a tu explicacion y utilize para cambiar mi codigo .
cambiando el codigo y usando 2 interunciones mas se logra anclear el motor q es el paro de emergencia
es este mi segundo codigo


#include <18F4550.h>
#use delay(clock=48M)
#fuses HSPLL,NOPROTECT,NOWDT,NOMCLR,NOLVP,NODEBUG,USBDIV,PLL5,VREGEN

int bandera;

#INT_EXT
void interrupts_ext0(void){
if (bandera){
bandera=0;
output_a(0x00);
}
else {
bandera=1;}

}
#INT_EXT1
void interrups_ext1(void){
if (bandera){
output_a(0xff);
bandera=0;
}
else{
output_a(0x00);}

         
         }
       
     const char pasos[5]={0x0c,0x06,0x03,0x09};
         signed  int8 i;
      void main(){
          enable_interrupts(INT_EXT);
          enable_interrupts(INT_EXT1);
          enable_interrupts(GLOBAL);
          ext_int_edge(L_TO_H);
         
   
   for(;;){

             
     if(bandera){   /*me pregunta por el estado de la badera si es 1 realiza las operacion del bucle ya que maneja una an si n o es 1 no lo realiza*/
   
           for(i=0;i<=3&&bandera;i++)
              {output_a(pasos);
              delay_ms(250); }
                                 
           
          for(i=3;i>0&&bandera;i--)
            {output_a(pasos);
              delay_ms(250); } 
   
     
     }
       
     
   }
   
  }
     
   

#3
Electrónica / Problema motor paso a paso
16 Abril 2012, 19:16 PM
tengo mi programa para que mi motor paso a paso trabaje y encienda con un boton pero tiene un segundo que es el paro de emergencia el cual va anclar el motor la primera parte me la hace bien enciende y apaga el motor pero no me lo ancla estoy utilizando una interrupcion externa para ello necesito bandera pero no se como utilizarlo mi codigo es el seguiente

#include <18F4550.h>
#use delay(clock=48M)
#fuses HSPLL,NOPROTECT,NOWDT,NOMCLR,NOLVP,NODEBUG,USBDIV,PLL5,VREGEN

int bandera;
#INT_EXT
void interrupts_ext0(void){
bandera=0;
output_a(0xff);
}

       
     const char pasos[5]={0x0c,0x06,0x03,0x09};
         signed  int8 i;
      void main(){
          enable_interrupts(INT_EXT);
          enable_interrupts(GLOBAL);
          ext_int_edge(L_TO_H);
   
   for(;; ){

             
     if(input(pin_a5)){
     bandera=1;}
     
    if(bandera){
    bandera=1;
           for(i=0;i<=3&&bandera;i++)
              {output_a(pasos);
              delay_ms(250); }
                                 
           
          for(i=3;i>0&&bandera;i--)
            {output_a(pasos);
              delay_ms(250); } 
     
     }
      else{
      output_a(0x00);
     
      }   
     
   }
   
  }
     
   

#4
tengo duda sobre las banderas en pic c como utilizarlas
me pueden ayudar ::)
#5
´no se usar muy bien pic c pero ise un prpgrama de para un seguidor de luz con el pic es el siguiente es necesario declarar los fuses?

#include <16F84A.h>
#use delay (clock=4M)

void main()
{

  while (true)
{
           //  0   Y     1          Y      0
    if (!input (pin_b0) && !input(pin_b1)&& !input(pin_b2)){
     output_low(pin_a0);
     output_low(pin_a1);
   }
   if (!input (pin_b0)&& input(pin_b2)&& !input(pin_b1)){
      output_low(pin_a0);
      output_high(pin_a1);
   }
   if (!input (pin_b0)&&!input(pin_b2)&&input(pin_b1)){
       output_high(pin_a0);
       output_high(pin_a1);
   }
   if (input (pin_b2)&& input(pin_b1)&&!input(pin_b0)){
       output_low(pin_a0);
       output_high(pin_a1);
   }
   if (!input(pin_b1)&&!input(pin_b2)&&input(pin_b0)){
       output_high(pin_a0);
       output_low(pin_a1);
   }
   if (input (pin_b2)&&input(pin_b0)&&!input(pin_b1)){
       output_low(pin_a0);
       output_low(pin_a1);
     }
   if (input (pin_b0)&&input (pin_b1)&&!input(pin_b2)){
       output_high(pin_a0);
       output_low(pin_a1);
   }
   if (input (pin_b0)&&input(pin_b1)&&input(pin_b2)){
   output_high(pin_a1);
   output_high(pin_a0);
   }
}
}