Autor Tema: 18f2550, modulo comparador imposible para mi... ayuda x favor!  (Leído 1999 veces)

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

Desconectado xiran

  • PIC16
  • ***
  • Mensajes: 100
Hola a todos, antes q nada, agradezco su tiempo por leerme. Fijense q tengo un enorme problemita, con el pic mencionado, y 1 de sus comparadores... El problema es el siguiente: estoy tratando de hacer funcionar uno de ellos, concretamente el c1, en modo ref. interna, ya q necesito q switchee cuando detecte, cualquier voltaje (el objetivo es .3v o .6v), las pruebas las he hecho en proteus, y fisicamente, pensando q proteus seria el del problema. Fisicamente, puse una resistencia variable, 5v, ra0 del pic, y gnd, cada uno a cada pata. Configuro cvrcon=11101111, y cmcon=00010110, no habilito las interrupciones, ni nada, las reviso en proteus, y ciertamente estan desactivadas. en fin, el programa lo q hace es sensar el c1out, para q cuando detecte algun cambio, encienda un led en rb7, caso contrario, este apagado. El caso es q no logro hacerlo...
Pego el codigo:


Código: ASM
  1. ;------------------------------------------------------------
  2. ; Código assembler generado por Niple V5.6.0
  3. ; Proyecto: fffff
  4. ; Autor: IRAN ESPINOZA
  5. ; Fecha: 20/05/2014
  6. ; PIC: 18F2550
  7. ; Velocidad de reloj: 20 Mhz
  8. ; Descripcion:
  9. ;------------------------------------------------------------
  10.  
  11.  
  12.  LIST    P=PIC18F2550
  13.  
  14.  
  15. _PLLDIV_1             equ  0xF8
  16. _CPUDIV_OSC1_PLL2     equ  0xE7
  17. _USBDIV_1             equ  0xDF
  18. _FOSC_HS              equ  0xFC
  19. _FCMEN_OFF            equ  0xBF
  20. _IESO_OFF             equ  0x7F
  21. _PWRT_ON              equ  0xFE
  22. _BOR_OFF              equ  0xF9
  23. _BORV_0               equ  0xE7
  24. _VREGEN_ON            equ  0xFF
  25. _WDT_OFF              equ  0xFE
  26. _WDTPS_1              equ  0xE1
  27. _MCLRE_OFF            equ  0x7F
  28. _LPT1OSC_OFF          equ  0xFB
  29. _PBADEN_OFF           equ  0xFD
  30. _CCP2MX_OFF           equ  0xFE
  31. _LPT1OSC_OFF          equ  0xFB
  32. _STVREN_OFF           equ  0xFE
  33. _LVP_OFF              equ  0xFB
  34. _ICPRT_OFF            equ  0xDF
  35. _XINST_OFF            equ  0xBF
  36. _DEBUG_OFF            equ  0xFF
  37. _CP0_OFF              equ  0xFF
  38. _CP1_OFF              equ  0xFF
  39. _CP2_OFF              equ  0xFF
  40. _CP3_OFF              equ  0xFF
  41. _CPB_OFF              equ  0xFF
  42. _CPD_OFF              equ  0xFF
  43. _WRT0_OFF             equ  0xFF
  44. _WRT1_OFF             equ  0xFF
  45. _WRT2_OFF             equ  0xFF
  46. _WRT3_OFF             equ  0xFF
  47. _WRTB_OFF             equ  0xFF
  48. _WRTC_OFF             equ  0xFF
  49. _WRTD_OFF             equ  0xFF
  50. _EBTR0_OFF            equ  0xFF
  51. _EBTR1_OFF            equ  0xFF
  52. _EBTR2_OFF            equ  0xFF
  53. _EBTR3_OFF            equ  0xFF
  54. _EBTRB_OFF            equ  0xFF
  55. _config1l             equ  0x300000
  56. _config1h             equ  0x300001
  57. _config2l             equ  0x300002
  58. _config2h             equ  0x300003
  59. _config3h             equ  0x300005
  60. _config4l             equ  0x300006
  61. _config5l             equ  0x300008
  62. _config5h             equ  0x300009
  63. _config6l             equ  0x30000a
  64. _config6h             equ  0x30000b
  65. _config7l             equ  0x30000c
  66. _config7h             equ  0x30000d
  67.  
  68.  __config _config1l, _PLLDIV_1 & _CPUDIV_OSC1_PLL2 & _USBDIV_1
  69.  __config _config1h, _FOSC_HS & _FCMEN_OFF & _IESO_OFF
  70.  __config _config2l, _PWRT_ON & _BOR_OFF & _BORV_0 & _VREGEN_ON
  71.  __config _config2h, _WDT_OFF & _WDTPS_1
  72.  __config _config3h, _MCLRE_OFF & _LPT1OSC_OFF & _PBADEN_OFF & _CCP2MX_OFF
  73.  __config _config4l, _STVREN_OFF & _LVP_OFF & _ICPRT_OFF & _XINST_OFF & _DEBUG_OFF
  74.  __config _config5l, _CP0_OFF & _CP1_OFF & _CP2_OFF & _CP3_OFF
  75.  __config _config5h, _CPB_OFF & _CPD_OFF
  76.  __config _config6l, _WRT0_OFF & _WRT1_OFF & _WRT2_OFF & _WRT3_OFF
  77.  __config _config6h, _WRTB_OFF & _WRTC_OFF & _WRTD_OFF
  78.  __config _config7l, _EBTR0_OFF & _EBTR1_OFF & _EBTR2_OFF & _EBTR3_OFF
  79.  __config _config7h, _EBTRB_OFF
  80.  
  81.  
  82. ;------------------------------------------------------------
  83. ;                  Declaración de Registros
  84. ;------------------------------------------------------------
  85. w                     equ  0x0000
  86. _np_tiempo            equ  0x000f
  87. _np_tiempo1           equ  0x0010
  88. _np_tiempo2           equ  0x0011
  89. _np_tiempo3           equ  0x0012
  90. porta                 equ  0x0f80
  91. portb                 equ  0x0f81
  92. portc                 equ  0x0f82
  93. lata                  equ  0x0f89
  94. late                  equ  0x0f8d
  95. trisa                 equ  0x0f92
  96. trisb                 equ  0x0f93
  97. trisc                 equ  0x0f94
  98. cmcon                 equ  0x0fb4
  99. cvrcon                equ  0x0fb5
  100. adcon2                equ  0x0fc0
  101. adcon1                equ  0x0fc1
  102. adcon0                equ  0x0fc2
  103. status                equ  0x0fd8
  104. bsr                   equ  0x0fe0
  105. pclath                equ  0x0ffa
  106.  
  107.  
  108. ;------------------------------------------------------------
  109. ;                  Declaración de Bits
  110. ;------------------------------------------------------------
  111. adon                  equ  0   ;
  112. c                     equ  0   ;
  113. c1out                 equ  6   ;
  114. rb7                   equ  7   ;
  115. vcfg0                 equ  4   ;
  116. vcfg1                 equ  5   ;
  117. z                     equ  2   ;
  118.  
  119.  
  120. ;------------------------------------------------------------
  121. ;               Declaración de Registros EEPROM
  122. ;------------------------------------------------------------
  123.  
  124.  
  125. ;------------------------------------------------------------
  126. ;                        Inicio
  127. ;------------------------------------------------------------
  128.  
  129.    org 0x00
  130.    goto paso2
  131.  
  132.  
  133. ;------------------------------------------------------------
  134. ;                      programa principal
  135. ;------------------------------------------------------------
  136. paso2
  137.    movlb .0                         ;cambiar al banco 0
  138.    clrf _np_tiempo,1
  139.    clrf _np_tiempo1,1
  140.    clrf _np_tiempo2,1
  141.    clrf _np_tiempo3,1
  142.    movlw .50                        ;temporizador 100 mse
  143.    call tmp_100_mc                  ;llamada a rutina tmp_100_mc
  144.    clrf porta,0
  145.    movlw b'00110011'                ;configurar el puerto a como xxeessea
  146.    movwf trisa,0
  147.    movlw b'00001110'                ;configuracion de pines a/d
  148.    movwf adcon1,0
  149.    bsf adcon0,adon,0                ;activar activar el módulo de conv a/d
  150.    clrf portb,0
  151.    movlw b'01111111'                ;configurar el puerto b como seeeeeee
  152.    movwf trisb,0
  153.    movlw b'00110110'                ;configurar el puerto c como sseexees
  154.    movwf trisc,0
  155.    movlw b'00000110'
  156.    movwf cmcon,0
  157.    movlw b'10100111'
  158.    movwf cvrcon,0
  159. brinca_aqui
  160.    btfss cvrcon,c1out,0
  161.    goto paso12
  162.    bcf portb,rb7,0
  163.    movlw .50                        ;temporizador 100 use
  164.    call tmp_10_uc                   ;llamada a rutina tmp_10_uc
  165.    goto brinca_aqui
  166.    goto brinca_aqui
  167. paso12
  168.    bsf portb,rb7,0
  169.    movlw .50                        ;temporizador 100 use
  170.    call tmp_10_uc                   ;llamada a rutina tmp_10_uc
  171.    goto brinca_aqui
  172.    goto brinca_aqui
  173.  
  174.  
  175. ;------------------------------------------------------------
  176. ;                  Declaración de Subrutinas
  177. ;------------------------------------------------------------
  178.  
  179. tmp_100_mc
  180.    movwf _np_tiempo,1
  181.    goto tmp_100_mc_1
  182. tmp_100_mc_bucle2
  183.    nop
  184.    nop
  185.    nop
  186.    nop
  187.    nop
  188.    nop
  189.    nop
  190. tmp_100_mc_1
  191.    movlw .22
  192.    movwf _np_tiempo1,1
  193. tmp_100_mc_bucle1
  194.    movlw .150
  195.    movwf _np_tiempo2,1
  196. tmp_100_mc_bucle
  197.    decfsz _np_tiempo2,1,1
  198.    goto tmp_100_mc_bucle
  199.    decfsz _np_tiempo1,1,1
  200.    goto tmp_100_mc_bucle1
  201.    nop
  202.    decfsz _np_tiempo,1,1
  203.    goto tmp_100_mc_bucle2
  204.    return
  205.  
  206.  
  207. tmp_10_uc
  208.    movwf _np_tiempo,1
  209.    goto tmp_10_uc_10
  210. tmp_10_uc_bucle
  211.    nop
  212.    nop
  213.    nop
  214.    nop
  215.    nop
  216.    nop
  217.    nop
  218. tmp_10_uc_10
  219.    decfsz _np_tiempo,1,1
  220.    goto tmp_10_uc_bucle
  221.    return

Ojalá pudieran ayudarme... He de decir, q lo hago con un 12f675, y funciona sin problemas. Gracias de antemano.
« Última modificación: 30 de Mayo de 2014, 18:44:54 por MGLSOFT, Razón: Resalte del código con GeSHi... »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: 18f2550, modulo comparador imposible para mi... ayuda x favor!
« Respuesta #1 en: 30 de Mayo de 2014, 18:48:15 »
No es normal repetir el código en varios foros, es mas, sugerimos que no se haga, pero te recomiendo en este caso, que abras un hilo con este tema en el subforo de Niple.
Allí seguramente te ayudaran mejor, ya que uno de los moderadores es el creador del lenguaje Niple.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado xiran

  • PIC16
  • ***
  • Mensajes: 100
Re: 18f2550, modulo comparador imposible para mi... ayuda x favor!
« Respuesta #2 en: 30 de Mayo de 2014, 23:17:42 »
No es normal repetir el código en varios foros, es mas, sugerimos que no se haga, pero te recomiendo en este caso, que abras un hilo con este tema en el subforo de Niple.
Allí seguramente te ayudaran mejor, ya que uno de los moderadores es el creador del lenguaje Niple.
Muchas gracias por responder mglsoft, si uso niple, pero hay cosas q no puedo hacer ahi, entonces lo q hago es hacerlo en asm, leo el datasheet del pic, y la parte q no trae niple, la confecciono en asm, no se si alguien tuviera entre sus cachivaches algun programa en asm q utilice los comparadores en el modo de vref interna, no tengo problema en usar asm, comentame x fa, si aun asi posteo en el subforo de niple, saludos y gracias de antemano!