Autor Tema: Pino não muda de estado!!! Porque?  (Leído 1998 veces)

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

Desconectado ivan braga

  • PIC12
  • **
  • Mensajes: 77
Pino não muda de estado!!! Porque?
« en: 22 de Mayo de 2007, 04:47:05 »
  Olá a todos.
 
  Como resolver isso?

 O que acontece é que quando terminei um programa que fiz para testar o proton, e depois de simular no proteus, tudo estava bem na compilação e na simulção, porem quando montei o pic no protoboard junto com os leds e os outros componentes para testar, os pinos de entrada  que deveriam ler o estado se 1 ou 0 nada mudava. Por exemplo, se estava  em 0 e se mudasse para 1 para mudar o estado em outro pino nada acontecia.
  Então fiz o mesmo programa no mikrobasic e funcionou como deveria.
 Depois de tentar entender o que estava acontecendo, notei no proteus que a unica diferença é que os pinos que pernaneciam com a cor cinza (ceniza) no mikrobasic, acho que é isso, desculpe se não for, conseguiam ler o estado de entrada. Mas quando eles estavam azul (quando 0) no proton a leitura não era feita.

Proton

MKB


Abaixo o programa.

device = 16f628a
        xtal = 4
       
    REMINDERS = Off   
    Config      INTRC_OSC_NOCLKOUT' Internal Oscillator
    REMINDERS = ON
    ALL_DIGITAL = TRUE
    WATCHDOG = ON
   
   
    trisa=1
    trisb=0
    porta=0
    portb=0
   
main:   if porta.0=1 then
        portb=%11111111
        endif
        delayms 1000
        if porta.1=1 then
        portb=%11111110
        endif
        delayms 1000
        if porta.2=1 then
        portb=%11111101
        endif
        delayms 1000
        if porta.3=1 then
        portb=%11111011
        endif
        delayms 1000
        if porta.6=1 then
        portb=%11110111
        endif
        goto main
       
        end

Porque isso acontece, e como resolver.

Desde já agradeço.
« Última modificación: 22 de Mayo de 2007, 04:59:50 por ivan braga »
"Mesmo o objeto mais inanimado tem movimento suficiente para ficar na sua frente e provocar um acidente."
"Incluso el objeto más inanimado tiene suficiente movimiento para interponerse en su camino y provocar un accidente."
"Even the most inanimate object has enough movement to stand in your way and cause an accident."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Pino não muda de estado!!! Porque?
« Respuesta #1 en: 22 de Mayo de 2007, 14:53:41 »
Hola Ivan, al parecer la directiva ALL DIGITAL no funciona muy bien que digamos es por ello que deberias usar el registro CMCON=7 para que se lean como digitales los pines del PIC. Siempre es mejor ya que aseguras el valor del registro del comparador o del ADC.

Por otro lado le hice unas pequeñas modificaciones a tu programa, para que se viera los cambios que deseabas. Los ELSE y DELAY los comente para ver si es asi como querias que se comportara. Ya lo probe en Proteus y funciona no se si como desees pero al menos ya enciende los pines del PORTB.


Código: FreeBasic
  1. DEVICE = 16F628A
  2. DECLARE XTAL = 4
  3. declare all_digital = TRUE
  4. DECLARE WATCHDOG = TRUE
  5.    
  6.     CMCON = 7
  7.     trisa=%11111111
  8.     trisb=0
  9.     porta=0
  10.     portb=0
  11.    
  12. main:  
  13.         if porta.0=1 then
  14.         portb=%11111111
  15. '        ELSE
  16. '        PORTB=0
  17.         ENDIF
  18.         'delayms 1000
  19.        
  20.         if porta.1=1 then
  21.         portb=%11111110
  22. '        ELSE
  23. '        PORTB=0
  24.         ENDIF
  25.         'delayms 1000
  26.        
  27.         if porta.2=1 then
  28.         portb=%11111101
  29. '        ELSE
  30. '        PORTB=0
  31.         ENDIF
  32.         'delayms 1000
  33.        
  34.         if porta.3=1 then
  35.         portb=%11111011
  36. '        ELSE
  37. '        PORTB=0
  38.         ENDIF
  39.         'delayms 1000
  40.        
  41.         if porta.6=1 then
  42.         portb=%11110111
  43. '        ELSE
  44. '        PORTB=0
  45.         ENDIF
  46. goto main
  47.        
  48. End

Por cierto asi quedo el circuito. Uso una resistencia de 10k en mclr porque no hemos declarado que este en off esta opcion. y los botones llevan sus pulldowns para asegurar el estado del pin del PIC


Saludos
« Última modificación: 22 de Mayo de 2007, 14:59:12 por navaismo »
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado ivan braga

  • PIC12
  • **
  • Mensajes: 77
Re: Pino não muda de estado!!! Porque?
« Respuesta #2 en: 23 de Mayo de 2007, 18:56:01 »
  Hola Navaismo,

  Gostaria de agradecer sua atenção, quanto ao manejo do proton ja conheço um pouco, pois andei lendo o help do programa e ele parece um pouco com MKB, porem o que mais gosto no proton é sua variedade de comandos, seguirei testando e qualquer duvida postarei aqui no forum(foro) :c)

Gracias
"Mesmo o objeto mais inanimado tem movimento suficiente para ficar na sua frente e provocar um acidente."
"Incluso el objeto más inanimado tiene suficiente movimiento para interponerse en su camino y provocar un accidente."
"Even the most inanimate object has enough movement to stand in your way and cause an accident."


 

anything