Autor Tema: problema con proteus y delay_ms(10)  (Leído 2443 veces)

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

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
problema con proteus y delay_ms(10)
« en: 03 de Junio de 2008, 01:23:21 »
Hola como están hace no mucho que estoy haciendo un contador, como lo abran notado en otro tema que puse, pero ahora tengo un pequeño drama mi contador funciona bien con un delay_ms(60)  pero a la hora que pongo el delay a delay_ms(10) la secuencia de la múltiplexación se me vuelve loca y no se porque, el código de la mux es: 
          output_low(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[h]);//...1º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_low(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[j]); //...2º 7seg");
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_low(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[w]); //...3º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_low(PIN_C3);
          output_high(PIN_C4); 
          output_B(salida7seg[z]); //...4º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_low(PIN_C4);
          output_B(salida7seg[g]); //...5º 7seg
          delay_ms(10);
lo raro de todo es que me funciona como dije con un delay de ms(60)y mas, pero cuando disminuyo se vuelve loco esto es cuando lo simulo en proteus no lo e probado en la realidad todavía. y aprovechando como se aria esta multiplexacion si tengo una entrada que varia entre 0 y 7Khz? Y ¿ como lo puedo hacer para que cuente por cada flanco de subida?. E estado analizando esto y se que se puede hacer con setup_ccp1   y ccp_capture_re pero lo que no se es como integrar esto al programa e tratado varias veces pero en definitiva me la gano. Espero que esta ves me puedan ayudar por favor, antemano gracias.
les dejaria el programa pero no C como subier cosas ^^

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: problema con proteus y delay_ms(10)
« Respuesta #1 en: 03 de Junio de 2008, 12:05:08 »
Saludos japifer!
Qué tal si colocas el código completo que tienes y la simulación en proteus?
Así se te puede ayudar mejor.
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: problema con proteus y delay_ms(10)
« Respuesta #2 en: 04 de Junio de 2008, 14:27:17 »
hola grax por leee em mje bueno pero mi drama es que no C como suibir cosas pero el codigo es este:
//programa: contador de 00000 a 99999
// nombres: japifer
//         
// variables:
//          * h -> indice tabla 7seg para mostrar digito en 1º display
//          * j -> indice tabla 7seg para mostrar digito en 2º display
//          * w -> indice tabla 7seg para mostrar digito en 3º display
//          * z -> indice tabla 7seg para mostrar digito en 4º display
//          * g -> indice tabla 7seg para mostrar digito en 5º display
//          * b -> variable incrementa contador       
// Conexiones:
//         . RA0 -> entrada a contar ó a contador 
//         . RA1 -> reset contador
//         · RC0 -> Display 1º 7seg
//         · RC1 -> Display 2º 7seg
//         · RC2 -> Display 3º 7seg
//         · RC3 -> Display 4º 7seg
//         . RC4 -> Dosplay 5º 7seg
//         · RB0 -> a 7seg---->pins 7
//         · RB1 -> b 7seg---->pins 6
//         · RB2 -> c 7seg---->pins 4
//         · RB3 -> d 7seg---->pins 2
//         · RB4 -> e 7seg---->pins 1
//         · RB5 -> f 7seg---->pins 9
//         · RB6 -> g 7seg---->pins 10         
//////////////////////////////////////////////////////////////////////////////////
#include <16f876a.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use delay (clock=4000000) //cristal=4Mhz
#use fixed_io(B_outputs=PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6)
#use fixed_io(C_outputs=PIN_C0,PIN_C1,PIN_C2,PIN_C3,PIN_C4)
#use standard_io(A)// entrada y salida del puerto A estandar

void main() {  //inicio del programa
//variables
   int b ;
    int  j = 0, w = 0, z = 0, g = 0, h = 0;
    int salida7seg[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67}; //7seg hex 0-9
   set_tris_a(0xC0);//por a como salida y entrada 11000000
   //inicio programa
    do { 
      if(h < 11) { //¿se ha mostrado por 1º 7seg digito 9?   
          output_low(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[h]);//...1º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_low(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[j]); //...2º 7seg");
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_low(PIN_C2);
          output_high(PIN_C3);
          output_high(PIN_C4);
          output_B(salida7seg[w]); //...3º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_low(PIN_C3);
          output_high(PIN_C4); 
          output_B(salida7seg[z]); //...4º 7seg
          delay_ms(10);
          output_high(PIN_C0);
          output_high(PIN_C1);
          output_high(PIN_C2);
          output_high(PIN_C3);
          output_low(PIN_C4);
          output_B(salida7seg[g]); //...5º 7seg
          delay_ms(10);
         
         if (h > 8){ //¿se ha mostrado por 1º 7seg digito 9, si, entonces buelve a cero y incrementa 2º display
            h =- 1;
            j++;// incrementa indice j
         }
            if(j > 9){ //¿se ha mostrado por 2º 7seg digito 9, si, entonces buelve a cero y incrementa 3º display
            j = 0; //SI -> j=0 (muestra digito 0)
            w++; //incremento indice w
            }
            if(w > 9) { //¿se ha mostrado por 3º 7seg digito 9, si, entonces buelve a cero y eincrementa 4º display
               w = 0; //SI -> w=0 (muestra digito 0)
               z++; //incremento indice z
            }
               if(z > 9){ //¿se ha mostrado por 4º 7seg digito 9, si, entonces buelve a cero y eincrementa 5º display
                  z = 0;
                  g++; //SI -> z=0 (muestra digito 0)
               }
                  if(g > 9){ //¿se ha mostrado por 5º 7seg digito 9, si, entonces buelve a cero display
                     g = 0; //SI -> g=0 (muestra digito 0)
                  }
            else {
            if(input(PIN_A0)) {// se a pulsado boton, si, entonces incrementa contador
             b=1;
             h = h + b; //incrementa contador en 1
            }                         
            if(input(PIN_A1)) { //se a pulsado boton, si, tonces resetea contador
               j=0;w=0;z=0;g=0; h=0;
          }
          }
        }
      }
   while(TRUE);//bucle infinito
}/* indica el termino del programa*/

esta en el compilador ccs c poecual quier cosa
sorri pero no C como subir algo perdon este es mi codigo pero en proteus funciona bien pero como dije con un delauy de 50ms y +

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: problema con proteus y delay_ms(10)
« Respuesta #3 en: 04 de Junio de 2008, 14:40:41 »
Saludos!
Bueno en lo que tenga un chance trato de compilar tu código...
Pero sería bueno que cargaras lo que tienes hecho en proteus...
Lo que tienes que hacer es tomar el archivo de proteus donde está tu circuito y el .hex que estás probando y lo comprimes... puede ser .rar o .zip... y luego lo cargas al foro... cuando coloques el mensaje, en la parte inferior izquierda aparece un botón que dice "opciones adicionales"... dale click y te saldrá un botón de examinar para que cargues el archivo... es tal como adjuntar un archivo en un correo electrónico... no te preocupes, que no es nada del otro mundo.
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: problema con proteus y delay_ms(10)
« Respuesta #4 en: 05 de Junio de 2008, 20:25:03 »
hola grax por la explicacion, bueno te comento, el programa ya lo monte en el pic y me funciona bien pero ahora tengo otro ploblema que es con el tema de el ingreso de la señal, a este le e puesto una entrada de 3khz y no me cuenta bien o se hace cero el digito mas significativo y los demas se apagan esto es referido al display, tambie le puse una entrada de menos frecuencia y se le ese dificil seguir el ritmo de el conteo pero a la hora de poner el pin A0 a 1 el contador cuenta solo yo creo que se deve a la forma que e programado el pic en el centido que puse todo el codigo en wile(true) se repite en total un lapso de la secuencia de los display osea eso creo yo, si me pudieras alludar o dar un indicio de lo que esta mal o lo que podria modificar seria genial, yo creo que esto de el conteo por si solo cuando lo mando a 1 la entrada se deve a que es activado por nivel y no por flancos????, y como lo ago para que el contador cuente con una entrada de 7khz o al estar bien diseñado el programa en el pic lo ara sin problemas ?? buieno espero tus respuesta y te dejo el cto en proteus.
saludos grax