Autor Tema: como controlo un multiplexador  (Leído 3269 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
como controlo un multiplexador
« en: 18 de Junio de 2007, 16:37:14 »
hola a todos,como andan
estoy jugando con multiplexadores para usar 4 de las entradas al CAD del micro con ocho potenciometros cada una, el caso es que usando la puerta E para manejar las entradas de los multiplexadores y esta no cambia de valor ,empiezo a tener la duda de que si esta activado el CAD no puedo usar la puerta E como salidas digitales aunque creo haberla configurado bien
empieza      bcf   STATUS,5   ;pagina 1
   
   movlw   b'00000111'   ;de der. a izq. timer1 activado, tipo de reloj externo, reloj externo no sincronizado
   movwf   T1CON      ;oscilador desactivado y prescale a uno
   clrf   PIE1
   movlw   b'10111000'   ;activacion de las interrupciones
   movwf   INTCON      ;act. interrupcion del timer 0
                  ;act. interrupcion del pb0
                  ;act. interrupcion del cambio de estado de la pb4-pb7
   movlw   b'0000001'   ;reloj para adc fosc=0, canal a convertir 000, modulo adc activado
   movwf   ADCON0   
   bsf      STATUS,5    ;PAGINA 1
   movlw   b'0011'      ;ra0ra1ra2ra5re1re2=analogicas   ra3=vref re0=digitales pero porte esta configurado como salidas
   movwf   ADCON1
   movlw   b'10001111'
   movwf   TRISB                                                                                                                                           
   movlw   b'000000'
   movwf   TRISA
   movlw   b'11000000'
   movwf   TRISC
   movlw   b'111'
   movwf   TRISE
   movlw   b'10110100'
    movwf   TXSTA       ;y alta velocidad (BRGH=1)
    movlw   .42         ;Se carga 42 en el registro SPBRG
    movwf   SPBRG      ;con lo cual se trabaja a 31250baudios con 20 mgh de f.osc
   bcf     STATUS, 5   ;pagina 0
   bsf      RCSTA, 7   ;habilito rc6/out y rc7/in
   goto   programa

en cada testeo del comparador cambio la configuracion de ADCON0 para que empieze en otro canal y a convertir
canal_2          movlw   b'00001101'
                        movwf  ADCON0   
dato1      btfsc   ADCON0,2   ;bucle que testea hasta que termina la conversion AD en el bite go/done de ADCON0
         goto   dato1
         movf   ADRESL,w
         subwf   POTE2
         btfsc   STATUS,2
         call   envio
         retfie

el programa es muy sencillo ,deberia incrementar la puerta e,no?
trama       bcf      STATUS,5   
         incfsz   PORTE   
         retfie
         clrf   PORTE ;por si aca lo borra a cero
         retfie
pero no cambia de estado las salidas de la puerta y para el uso es muy comodo que tenga tres salidas
lo que sigue al programa es testeo de cada uno de los canales, comparando el valor de adresl con el anterior testeo del mismo si cambia saca el dato por la usart

gracias y un saludo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: como controlo un multiplexador
« Respuesta #1 en: 18 de Junio de 2007, 16:41:16 »
¿qué pic estas usando?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: como controlo un multiplexador
« Respuesta #2 en: 18 de Junio de 2007, 16:43:28 »
apps , un 16f877

un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: como controlo un multiplexador
« Respuesta #3 en: 19 de Junio de 2007, 01:52:40 »
hay algo que no entiendo, en tu circuito, que chip hace las veces de multiplexor?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: como controlo un multiplexador
« Respuesta #4 en: 19 de Junio de 2007, 16:18:10 »
Hola, estoy usando el 74251, conecto la salida a una entrada con CAD. RA0/AN0 y controlo las entradas del multiplexor desde el puerto E del micro.
http://eshop.engineering.uiowa.edu/NI/pdfs/00/64/DS006415.pdf  datasheet del 74251

en este circuito usan un 4051 para lo mismo
[img alt=]http://www.ucapps.de/mbhp/mbhp_ainx4.jpg[/img]

gracias y un saludo
« Última modificación: 19 de Junio de 2007, 17:20:27 por alogic.on »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: como controlo un multiplexador
« Respuesta #5 en: 19 de Junio de 2007, 20:16:08 »
amigo una pregunta más, estas conectando los 8 potenciometros a este chip? porque segun entiendo tu quieres multiplexar tensiones que varian de 0V a 5V, lo malo es que este chip permite entradas digitales , no análogas, sugiero el chip 4066.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: como controlo un multiplexador
« Respuesta #6 en: 20 de Junio de 2007, 04:39:24 »
oK,  ,gracias .emmm , pero el 4066 es un conmutador analogico cuadruple y no un multiplexador, lo cambio por el 4051 y ya ta, que ademas ya tengo el circuito hecho :mrgreen:

aun asi de momento tengo otro problema, algo estoy haciendo mal que no cambia de valor la salida del pic para manejar el multiplexor mmmmmpf  :? estoy probando hacerlo con otra puerta y nada
os dejo el codigo, a ver si me podeis ayudar a encontrar que tiene mal la configuracion del programa
he intentado ser lo mas escueto posible poniendo parte del programa y aun así  :shock: creo que me he pasao

gracias y un saludo
Código: ASM
  1. [/empieza               bcf     STATUS,5        ;pagina 1
  2.         movlw   b'10110000'
  3.         movwf   CANAL
  4.         movlw   b'11111110'
  5.         movwf   SENSING
  6.         movlw   b'00000111'     ;de der. a izq. timer1 activado, tipo de reloj externo, reloj externo no sincronizado
  7.         movwf   T1CON           ;oscilador desactivado y prescale a uno
  8.         clrf    PIE1
  9.         movlw   b'10111000'     ;activacion de las interrupciones
  10.         movwf   INTCON          ;act. interrupcion del timer 0
  11.                                                 ;act. interrupcion del pb0
  12.                                                 ;act. interrupcion del cambio de estado de la pb4-pb7
  13.         movlw   b'0000001'      ;reloj para adc fosc=0, canal a convertir 000, modulo adc activado
  14.         movwf   ADCON0 
  15.         bsf             STATUS,5        ;PAGINA 1
  16.         movlw   b'0011'         ;ra0ra1ra2ra5re1re2=analogicas  ra3=vref re0=digitales pero porte esta configurado como salidas
  17.         movwf   ADCON1
  18.         movlw   b'10001111'
  19.         movwf   TRISB                                                                                                                                            
  20.         movlw   b'000000'
  21.         movwf   TRISA
  22.         movlw   b'11000000'
  23.         movwf   TRISC
  24.         movlw   b'111'
  25.         movwf   TRISE
  26.         movlw   b'00000111'
  27.         movwf   TRISD
  28.         movlw   b'10110100'
  29.     movwf   TXSTA       ;y alta velocidad (BRGH=1)
  30.     movlw   .42         ;Se carga 42 en el registro SPBRG
  31.     movwf   SPBRG       ;con lo cual se trabaja a 31250baudios con 20 mgh de f.osc
  32.         bcf     STATUS, 5       ;pagina 0
  33.         bsf             RCSTA, 7        ;habilito rc6/out y rc7/in
  34.         goto    programa
  35. programa        call    aum1
  36.                         clrf    CONTROLADOR     ;limpia el registro del numero del controlador
  37.                         call    canal_1         ;selecciona el canal AN0
  38.                         call    pote_1
  39.                         call    canal_2         ;selecciona el canal AN1
  40.                         call    pote_2
  41.                         call    canal_3         ;selecciona el canal AN2
  42.                         call    pote_3
  43.                         call    canal_4         ;selecciona el canal AN4
  44.                         call    pote_4
  45.                         call    aum2            ;aumenta uno en los multiplexadores comienza el testeo del siguiente canal
  46.                         call    compara         ;aumenta el nº de potenciometro hasta 32 luego pasa a cero
  47.                         call    canal_1         ;selecciona el canal AN0
  48.                         call    pote_5         
  49.                         call    canal_2         ;selecciona el canal AN1
  50.                         call    pote_6...................y continua testeando hasta completar 8 canales de los mult por 4 del pic
  51. ;------------------------------------------------------------CALLS-------------------------------
  52. compara         incf    CONTROLADOR
  53.                         movlw   .32
  54.                         subwf   CONTROLADOR
  55.                         btfsc   STATUS,2
  56.                         clrf    CONTROLADOR
  57.                         retfie
  58. ;-----------------------------------                   
  59. dato            bcf             STATUS,5
  60.                         movwf   ADCON0
  61. dato1           btfsc   ADCON0,2        ;bucle que testea hata que termina la conversion AD
  62.                         goto    dato1
  63.                         bsf             STATUS,5
  64.                         movf    ADRESL,w
  65.                         bcf             STATUS,5
  66.                         retfie
  67. ;-----------------------------------------------------------
  68. pote_1          call    dato   puuffff como esta solo os pongo 4 son 32 iguales solo que cambia el nº de potenciometro
  69.                         subwf   POTE1
  70.                         btfsc   STATUS,2        ;SI ESTA A UNO EL RESULTADO ERA IGUAL QUE LA ANTERIOR VEZ
  71.                         call    envio
  72.                         retfie
  73. ;--------------------------------
  74. pote_2          call    dato
  75.                         subwf   POTE2
  76.                         btfsc   STATUS,2
  77.                         call    envio
  78.                         retfie
  79.  
  80. ;-------------------------------
  81. pote_3          call    dato
  82.                         subwf   POTE3
  83.                         btfsc   STATUS,2
  84.                         call    envio
  85.                         retfie
  86. ;---------------------------------
  87. pote_4          call    dato
  88.                         subwf   POTE4
  89.                         btfsc   STATUS,2
  90.                         call    envio
  91.                         retfie 
  92. ;---------------------------------
  93. aum1            bcf             STATUS,5        como esta hay ocho para cambiar el canal del multiplexador
  94.                         movlw   b'00000000'
  95.                         movf    PORTD
  96.                         retfie
  97. ;---------------------------------
  98. aum2            bcf             STATUS,5
  99.                         movlw   b'00000001'
  100.                         movf    PORTD
  101.                         retfie
  102. ;PRIMERO ENVIA EL NUMERO DE CANAL---------------------------------
  103. envio           bcf             STATUS, 5       ;pagina 0
  104.                         bcf             INTCON,7        ;deshabilita las interrupciones
  105.                         movf    CANAL,w         ;señal de timming clock
  106.                         movwf   TXREG   ; Movemos lo que queremos transmitir de w a TXREG
  107.                         goto    FIN                     ;mueve a FIN
  108.  
  109. FIN                     bsf             STATUS, 5       ;pagina 1
  110.                         btfss   TXSTA, 1        ; Compruebo si el bit TMRT del registro esta
  111.                                         ; a '1' o a '0'.
  112.                                                                 ; Si esta a '0' es que esta lleno TMRT y no
  113.                                                                 ; ha terminado de transmitir,
  114.                                                                 ; para ello TRMT tiene que estar a 1, hasta
  115.                         goto    FIN                                     ; entonces esperamos.
  116. ;SEGUIDO DEL NUMERO DE CONTROLADOR-------
  117. envio1          bcf             STATUS, 5       ;pagina 0
  118.                         bcf             INTCON,7        ;deshabilita las interrupciones
  119.                         movf    CONTROLADOR,w                   ;señal de timming clock
  120.                         movwf   TXREG   ; Movemos lo que queremos transmitir de w a TXREG
  121. FIN1            bsf             STATUS, 5       ;pagina 1
  122.                         btfss   TXSTA, 1        ; Compruebo si el bit TMRT del registro esta
  123.                                         ; a '1' o a '0'.
  124.                                                                 ; Si esta a '0' es que esta lleno TMRT y no
  125.                                                                 ; ha terminado de transmitir,
  126.                                                                 ; para ello TRMT tiene que estar a 1, hasta
  127.                         goto    FIN1                                    ; entonces esperamos.
  128. ;Y POR ULTIMO EL VALOR DEL CONTROLADOR----------
  129. envio2          bcf             ADRESL, 5       ;pagina 0
  130.                         bcf             INTCON,7        ;deshabilita las interrupciones
  131.                         movf    ADRESL,w                        ;señal de timming clock
  132.                         movwf   TXREG   ; Movemos lo que queremos transmitir de w a TXREG
  133. FIN2            bsf             STATUS, 5       ;pagina 1
  134.                         btfss   TXSTA, 1        ; Compruebo si el bit TMRT del registro esta
  135.                                         ; a '1' o a '0'.
  136.                                                                 ; Si esta a '0' es que esta lleno TMRT y no
  137.                                                                 ; ha terminado de transmitir,
  138.                                                                 ; para ello TRMT tiene que estar a 1, hasta
  139.                         goto    FIN2                                    ; entonces esperamos.
  140.                         bsf             INTCON,7        ;cuando deja de transmitir entoces puede haber interrupcion
  141.                         retfie]
« Última modificación: 20 de Junio de 2007, 05:31:33 por alogic.on »

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: como controlo un multiplexador
« Respuesta #7 en: 21 de Junio de 2007, 16:06:13 »
pues nada que el programa funciona en el picsimulator pero no en el proteus isis, alguna vez os habia pasado??  :shock:
mmmmmpf muy bonito se le pone por las nubes, pero na de na a mi no me convence.Ya me ha pasado alguna otra vez con comparadores analogicos o con un simple transistor que da fallos , pero siempre da un mensaje de error
pero esta vez simplemente no hace lo que quiero, se queda parado contando el tiempo que pasa(por aqui hablan del tiempo incfinito)
Alguna sugerencia   :( como algun tipo de simulador hard u otro programa para simular , el picsimulator no me es muy comodo. aunque eso de ver el codigo moviendose dentro del pic llama la atención :mrgreen:

gracias y un saludo