TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: ivan braga en 22 de Mayo de 2007, 04:47:05

Título: Pino não muda de estado!!! Porque?
Publicado por: ivan braga 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
(http://img201.imageshack.us/img201/4774/protonns7.jpg)
MKB
(http://img168.imageshack.us/img168/8947/mkbia0.jpg)

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.
Título: Re: Pino não muda de estado!!! Porque?
Publicado por: navaismo 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

(http://img106.imageshack.us/img106/4894/ctomu7.jpg)

Saludos
Título: Re: Pino não muda de estado!!! Porque?
Publicado por: ivan braga 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