Autor Tema: swtch en real no funciona  (Leído 1617 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JoseV

  • PIC10
  • *
  • Mensajes: 2
swtch en real no funciona
« en: 12 de Agosto de 2020, 06:55:58 »
Hola.
Soy aprendiz de primeros pasos. He hecho este programita y en simulación si va pero en real no ejecuta "switch". Ccc s Compiler 5.076. ¿Me echais una mano?. Gracias.
    #include <16F630.h>
     
    #fuses nocpd, noprotect, nobrownout, nomclr, noput,nowdt,intrc 
    #use delay(clock=4000000)
 
    #define A         PIN_C0          //SALIDAS A,B,C,D
    #define B         PIN_C1         
    #define C         PIN_C2         
    #define D         PIN_C3         
    #define Boton     PIN_C5          //BOTON
    #define EN        PIN_C4          //ACTIVA L293

    int pasos=255;                           
    int sentido;
    int s=15;
    ///////////////////////////////////////////////////////////

      void main(){                                                       
        set_tris_c(0b00100000);
        output_c(0b00000000);
                                                 
      while(1){ 
         
      while (!input(Boton)); //SI ESTA A "0" NO SALE DEL BUCLE
        delay_ms(10);   
             
      switch (sentido) {                                                 
     
      case  1:
         for (int i = 0; i < pasos; i++) {     
            output_High(EN);
       
       //...... Codigo
       
        }                         
        Output_low(EN);       
   
        sentido = 0;
        break;
                                     
     case 0:               
        for (int i = 1; i < pasos; i++) {                                                                                     
            output_High(EN);
                                                                     
       //......Codigo
       }                          //bucle for case 0             
       output_low(EN);       
       
       output_c(0b00111000);
       
       sentido = 1;
       break;     
      }                             
      }                           
      }                           
       

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:swtch en real no funciona
« Respuesta #1 en: 12 de Agosto de 2020, 12:54:24 »
Primero siempre defini un valor de inicio

Código: C
  1. int sentido = 0;

Nunca dejes las cosas al azar.

---------------------------------------------------------------

Si no funciona en la realidad y si en la simulacion pueden ser varias cosas:

- Tiempos y todo ocurre muy rapido, lo cual en la simulacion no.
- Problemas de hardware (MLCR, Oscilador mal contacto)
- FUSES (que generalmente el simulador no lo tiene en cuenta)


Código: C
  1. while (!input(Boton));

Mientras esta en 0 se queda encerrado.... pero si esta en 1, es como si no existiera eso... Luego una demora de 10ms y luego el resto del programa.

Si estas esperando que el boton este en 1, para ejecutar el programa, espero que el resto del programa sea lo suficientemente lento como para que retires el dedo, sino va a entrar varias veces. y cambiando de sentido.


Desconectado JoseV

  • PIC10
  • *
  • Mensajes: 2
Re:swtch en real no funciona
« Respuesta #2 en: 12 de Agosto de 2020, 13:47:59 »
Hola KILLERJC.
Te agradezco que te hayas parado a ver mi programa.
Si, el tiempo que tenemos hasta volver a preguntar por el botón "while (!input(Boton));" es suficiente, unos 3 segundos. He hecho pruebas y el micro si que arranca pero cuando llega a "switch" de ahí no progresa. Item mas: he tratado de cambiarlo por otro tipo de bucle

      if (sentido==0){ 
     for (int i = 0; i < pasos; i++) {   
.
.
.
    else if(sentido==1){
     for (int i = 0; i < pasos; i++) { 

y tampoco va en real. Si quito el bucle "if...Else if", sin problemas...(con lo bien que cacharreaba yo con mi ASM).
Veo que me falta mucho en C.
Gracias y un saludo
JoseV

   


 

anything