Autor Tema: Hola, grave problema....  (Leído 11280 veces)

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

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Hola, grave problema....
« en: 18 de Febrero de 2009, 01:36:19 »
Hola que tal muchachos, me encuentro aquí por un problema que no es muy común, al menos para mi caso... Explico...

Tengo un diseño el cual he simulado y me funciona perfectamente en la simulación.... Lo monte, y la primera vez que le meti tensión funcionaba bien, luego lo desconecte y volvi a conectar y pues allí vinieron los problemas... El circuito es la bomba de gasolina, compuesto por LCD; teclado y PIC 18f4550...

Probe la LCD, está buena.
Probe el pic, está bueno.
Medi tensión en cada pin, todo esta bien.

Pero la LCD cuando enciendo el circuito me muestra todo el tiempo esto:



Modifique el programa tres veces, es decir cambiando la LCD de puerto al igual que el teclado. Nada que funciona. :x
Arme y desarme el montaje 3 veces... Nada de nada que funciona. :x
Cambie de componentes, nada de nada que funciona :shock:
Cambie de PIC, naadaaaaaa!!! :shock:
Cambie la LCD, nadaaaaaaaaaa!! :?
Cambie el proto Board, y nada que funciona...

El programa inicialmente estaba con el reloj interno, es decir, tenia en el fuse el INTRC_IO, nada que funcionaba, pense que era por eso y decidi colocar el cristal y colocarlo en modo XT... NADA!!!!!!!!! :x

Configure bien el programador!!!!!!!!!! nada........ :z)

Ya no encuentro más que hacer... He hecho de todo... Hasta lo golpee y nadaaaaaaaaaa!!!!!! :5]

A alguien le ha pasado esto alguna vez??? alguien podría sugerirme que más revisar para ver que puede estar afectando al circuito....

Aquí les dejo el circuito en proteus y el C. Pero les digo en Proteus funciona todo belllo!!!!!!!!!

Atte: Enigma... La llanerita de Guayana :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Hola, grave problema....
« Respuesta #1 en: 18 de Febrero de 2009, 03:12:00 »
¿No se habrá jodido el pic?

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Hola, grave problema....
« Respuesta #2 en: 18 de Febrero de 2009, 03:17:21 »
Hola:

Según comentas todos tus perifericos estan bien, pero el lcd no. Graba en el pic un programa de prueba de mensajes en el lcd en un circuito aparte, asi descartas si el lcd está en buen estado. Si esto funciona bien debe ser un problema de ruido al momento de conectar la alimentación, tal vez esas bombas de gasolina están afectando al circuito en el transitorio sobretodo al lcd que parece que se queda bloqueado.

Puedes probar en iniciar tu programa en el pic luego de 1seg por ejemplo, es decir al iniciar tu programa debes llamar a un delay de 1seg y a partir de ahi recien inicializar todos tus periféricos incluyendo al lcd y a ver como te va.

Prueba tambien usando una fuente independiente del sistema de la bomba de gasolina, tal vez una fuente switching sirva.

Javicho.

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 230
Re: Hola, grave problema....
« Respuesta #3 en: 18 de Febrero de 2009, 08:33:06 »
Hola multiplexas el LCD con el teclado?, si es asi.. de que valor son las resistencias de pull ups, el otro dia tuve un problema parecido y eran las resistencias de pull ups que tenian un valor bajo (1k), coloque de (4k7) y todo a la perfeccion.
Pareciera ser que no inicia bien el LCD.

Saludos.
Alejandro

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Hola, grave problema....
« Respuesta #4 en: 18 de Febrero de 2009, 09:05:07 »
Hola Enigma !

No veo en la imagen los capacitores de desacoplo de 100nF, ni ningún electrolítico de 10uF, ó 47uF montados sobre el protoboard. Yo acostumbro a cargar el proto con todos ésos capacitores al iniciar un montaje. Tal vez éso te esté faltando. Coloca un par de 103, 104 y 10uF ó 47uF en las líneas de alimentación del protoboard y luego prueba lo que dice Javicho, de armar un mini-programa con muestras elementales de mensajes, limpieza del LCD (CLS se dice en Basic) y de a poco llegarás a la fuente del problema.

Saludos !
Mario

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Hola, grave problema....
« Respuesta #5 en: 18 de Febrero de 2009, 13:17:36 »
hola amiga:
1era observacion: pones mucho codigo en las interrupciones. (no creo q sea el problema pero ayuda)

2da observacion:

void main(void)
{
         delay_ms(100); // PONLE DELAY AL INICIO PORQUE EN LA REALIDAD DEMORA EN COGER EL VOLTAJE ADECUADO

         set_tris_b(0x1B);                        // Puerto B, como b'00011011 (entrada/salida)
         set_tris_c(0xF0);                        // Puerto C, como b'11111000 (Entrada/salida)
         set_tris_d(0x00);                        // Puerto D, como b'00000000 (salida)
         output_b(0);                             // Limpio el puerto B
         output_c(0);                             // Limpio el puerto C
         output_d(0);                             // Limpio el puerto D
         port_b_pullups(TRUE);                    // Activo las pullups
         setup_adc(ADC_OFF);                      // Conversores analógicos/digitales apagados
         setup_adc_ports(NO_ANALOGS);             // Puerto digitales
         setup_comparator(NC_NC_NC_NC);           // Comparadores apagados

         lcd_init();                              // Para inicializar el LCD
         //LO PUSE ACA PORQUE PUEDE SER QUE SE TE DISPAREN LAS INTERRUPCIONES Y NO VAN A DEJAR
         //QUE EL LCD INICIALIZE CORRECTAMENTE

         ext_int_edge (H_TO_L);                   // Flag INTF si flanco de bajada.
         ext_int_edge(1,H_TO_L);                  // Flag INTF si flanco de bajada.
         enable_interrupts(int_ext1);             // Habilito la interrupción externa de RB1
         enable_interrupts(global);               //Habilita máscara global de int.
         enable_interrupts(int_ext);              // Activa máscara INTE
.
.
.

3ra Observacion: puedes probar primero comentando las interrupciones de tal manera que no haya inteerrupciones y solo arranque la LCD

         lcd_init();                              // Para inicializar el LCD

//         ext_int_edge (H_TO_L);                   // Flag INTF si flanco de bajada.
  //       ext_int_edge(1,H_TO_L);                  // Flag INTF si flanco de bajada.
    //     enable_interrupts(int_ext1);             // Habilito la interrupción externa de RB1
      //   enable_interrupts(global);               //Habilita máscara global de int.
        // enable_interrupts(int_ext);              // Activa máscara INTE
.
.
.
« Última modificación: 18 de Febrero de 2009, 13:27:44 por micro_cadaver »
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Hola, grave problema....
« Respuesta #6 en: 18 de Febrero de 2009, 15:44:40 »
Hola.

Recuerdo por ahi que a algun forero le sucedio que la LCD no le iba como queria y justamente era porque tenia mucho codigo en las interrupciones, asi que no descartaria esa opcion, ya que los tiempos que usa la LCD suelen ser algo criticos y si la interrupcion se genera mientras se esta gestionando alguna comunicacion con la LCD, ésta podria quedarse trabada.

Saludos
El papel lo aguanta todo

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Hola, grave problema....
« Respuesta #7 en: 19 de Febrero de 2009, 01:16:03 »
Hola a todos, gracias por interearce en mi problema!!!!!

La LCD, está buena, probe tres  :shock:
El pic también lo cambie, y nada!!!!!! :shock:
Umm, lo capacitores??? pues, los coloque, pero luego los quite, porque no tenían efecto sobre el circuito....
Bueno no multiplexe la LCD con el teclado, coloque la LCD en el puerto D y el teclado en el puerto C
Bueno con respecto al mucho codigo en las interrupciones, si lo que hice fue que coloque una función en la interrupción, y todo ese poco de codigo lo meti en la función para liberar la interrupción.... Tampoco resulto!!!!! :(
Ummm bueno las resistencias pullup son de 390 ohm, pero antes las había colocado así y todo sirvia a la perfección....


Bueno, les explico que hice hoy....

Hice el programa pasito a pasito... Primero empece mandando el mensaje a la LCD... Todo excelente, se mostro el mensaje. Por ahí supe que no era ni la LCD ni el pic... Luego monte la interrupción, y que creen.... Las interrupciones me bloquean la LCD :shock:

Luego dije, bueno vamos a ver i es del todo cierto, quite las interrupciones e hice simple testeo del bit RB0 y RB1, y todo se mostró bien.... La LCD mostraba los mensajes, hacía algunas acciones, pero lo único es que el programa pues me saltaba una rutina, es decir, no me agarraba un while que tengo... Luego les explico cual while, a ver si alguien me da un consejito, pero primero lo primero... Porque las interrupciones me bloquean la LCD...? :?

La verdad no entiendo porque una interrupción externa me bloquea los comandos de la LCD... No se pienso, que es porque como es interrupción al programa no le da chance de ver las librerias de la LCD o algo así!!!! En vista de eso, pues decidi poner más atención en los warnings del CCS.... Miren...



Es decir, se me deshabilitan las funciones principales de la libreria de la LCD.... :shock:


Alguien me puede decir porque suceden estás cosas?

Atte: Enigma... La llanerita de Guayana :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Hola, grave problema....
« Respuesta #8 en: 19 de Febrero de 2009, 01:33:24 »
Hola.

Esos warnings es porque usas funciones que toman mucho tiempo dentro de la interrupcion, como por ejemplo un printf(); o delays muy largos de mas de 1ms.

Es mejor usar flags y en el main habiltar este tipo de funciones.

Saludos
El papel lo aguanta todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Hola, grave problema....
« Respuesta #9 en: 19 de Febrero de 2009, 02:33:28 »
eso, usar banderines, evita cargar las interrupciones con codigo.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Hola, grave problema....
« Respuesta #10 en: 19 de Febrero de 2009, 04:31:39 »
Lo que dices que los capacitores no tienen ningun efecto y los quitas xD , será mejor que los dejes y protejas en exceso que irle al tanteo , no pierdes nada.

Las resistencias de pullup a mi me van bien con las INternas y multiplexando con pantalla.ENotros casos he usado resistencias de pullup de 1K.

Tambien cuando uso protoboard agrego capacitores , los que te menciono Mario, en si en todas mis aplicaciones.
Tambien habilito el Power UP TIMER y agrego un delay de 500ms-1000ms.

Los tiempos del LCD son criticos solo al incio cunado se configura.No hay problema en eso con la libreria pues tiene bien los tiempos y lee el flag bussy.

He aprendido aqui a usar los flasg para salir rapido de interrupcion y es más organizado.

Saludos


Desconectado cchhaa

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 294
    • ¡¡peligro!!
Re: Hola, grave problema....
« Respuesta #11 en: 19 de Febrero de 2009, 09:38:23 »
yo tuve un problema idéntico hace tiempo, me salian caracteres así de raros todo el tiempo y si presionaba algún botón que afectara lo que se tiene que ver por el lcd cambiaban los caracteres raros por otros también raros. Al final me di cuenta del error, tenia los cables de entrada de datos cambiados, lo mismo no es tu caso, pero comprueba y asegúrate de que los cables están bien conectados y en el orden adecuado.

un saludo
cchhaa
Reiniciando......

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Hola, grave problema....
« Respuesta #12 en: 19 de Febrero de 2009, 14:28:27 »
mmmmmmmmm, talvez sea una tontería lo que voy a decir pero bueno. Lo digo igual.

He visto que incluyes la librería lcd.c entre medio de las configuraciones de byte y configuración de la palabra de configuración. Si el compilador le hace caso al lugar pusto, lo pondrá a partir de la pocición de interrupción. El concejo es que muevas #include (lcd.c) después de las rutinas de interrupción, así el compilador, ubicará todo la librería después de las rutina de interrupción (valga la redundancia). Recuerda que esta rutina, se graba en el pic también y un lugar equivocado genera problemas.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Hola, grave problema....
« Respuesta #13 en: 19 de Febrero de 2009, 15:31:49 »
yo tuve un problema idéntico hace tiempo, me salian caracteres así de raros todo el tiempo y si presionaba algún botón que afectara lo que se tiene que ver por el lcd cambiaban los caracteres raros por otros también raros. Al final me di cuenta del error, tenia los cables de entrada de datos cambiados, lo mismo no es tu caso, pero comprueba y asegúrate de que los cables están bien conectados y en el orden adecuado.

un saludo
cchhaa

Lo que yo hice en este caso fue poner una resistencia de 1k hacia tierra y tenoa habilitadas las pullups del pic.

Asi aunque presione cualquier boon no afecta el lcd , y para leer el teclado pongo los pines como entrada y habilito pullups.

Es como pones las resistencias del ICSP para que no interfiera con el trabajo del lcd dandole asi , prioridad.


Enigma tambien podrias poner los pines que no uses del LCD a tierra.Solo con fines de prueba , pero si te escrbie de un Inicio bien , seria descartado que se metiera ruido por ellos , pero por si las moscas.




Saludos amigos!
« Última modificación: 19 de Febrero de 2009, 15:36:44 por AKENAFAB »

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Hola, grave problema....
« Respuesta #14 en: 19 de Febrero de 2009, 23:06:31 »
Bueno, lo de mucho código de las interrupciones, pues lo había cambiado por funciones y pues no me afecto en nada, lo volvi a hacer y nada de nada! Por lo que percibo el exceso de código en los servicios de interrupción no s el problema!  :(

Bueno, complaciendo, pues deje los capacitores pero aún así el circuito sigue sin funcionar!!!!!
Bueno, con respecto a la mala conexión de la LCD, pues ese no e el problema, porque la misma está bien conectada!

Ahora lo que menciona León pic, no le he probado, voy a hacerlo a ver que tal....

Akenafab, la LCD no tiene problemas, porque luego para probar quite las interrupciones e hice un simple testeo del bit, y pues todo funciono muy bien.... El problema está cuando activo las interrupciones externas!!! pero voy a probar lo que dices de colocar los otro pines a tierra!!!

Todo es un problema vale, digo esto porque: En vista de que las interrupciones no me funcionaban decidi probar con testeo... O.k, el programa empieza muy bien, mostrando los mensajes, cuando presiono RBO o RB1 (por testeo), entra chevere al menú, muestra esto:

printf(lcd_putc,"\f");                                 // Borro pantalla
    printf(lcd_putc,"T. de gasolina");                     // Imprimo en pantalla
    lcd_gotoxy(1,2);                                       // Posiciona el cursor en la linea 2
    printf(lcd_putc,"91 octanos - RB3");                   // Imprimo en pantalla
    printf(lcd_putc,"95 octanos - RB4");                   // Imprimo en pantalla
    delay_ms(250);                                         // Tiempo de espera para que de chance de presionar el botón.

Y bien se queda allí, todo muy bien, el problema etá cuando aprieto o RB3 o RB4, deberia quedarse esperando a que uno ingrese los bsF... pero no, el salta directamente!!! hasta aquí:




No me le hace caso a las sentencias del while, con los and del pinc7 - al C4.... Y no entiendo, porque los voltajes de esos pines si están en 1 lógico, pero es como que el pic no ve eso!!!!

Rayos, este es el primer programa que me ha traido tantos problemas!!!!!! :x

Voy a probar lo que me dijeron de la LCD!!! ojala sea eso vale, porque ya estoy que me arranco las cabellos!

Cuando no me agarra el chingo, me agarra el in nariz!!!!!!!!! :?

Atte: Enigma... La llanerita de Guayana :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!