Autor Tema: problema con el CAD 16f877  (Leído 4006 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
problema con el CAD 16f877
« en: 24 de Junio de 2007, 08:40:53 »
hola a todos
tengo un problemilla con el cad , y es que no deberia usar datos superiores a 127 en el reg adresl, he pensado usar una tension de referencia mayor a la que entra por los comparadores ,he deducido(no soy muy bueno con las mates) que si tiene diez bits de resolucion adresh/adresl que son 1023 posiciones de resolucion, con diez voltios a hara un incremento en adresh/l cada 0,009...V entonces para 127 tendria que usar 127*0,009..= 1,24V aprox. como maximo para que no pase de 127 en adresl

otra forma que le estoy dando vueltas es la de dividir por dos 4 veces los diez bits 1023:8=127,875 que asi saldria proporcional y  "casi" sin pasar del valor aunque no se como hacerlo con dos registros diferentes  :?

que harian ustedes para no encontrar valores superiores a 127 en adresl por si conocen otra forma de hacerlo

gracias y un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: problema con el CAD 16f877
« Respuesta #1 en: 24 de Junio de 2007, 11:10:37 »
una pregunta, me parece que quieres conectarle 10V al pin análogo del pic?
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: problema con el CAD 16f877
« Respuesta #2 en: 24 de Junio de 2007, 15:22:05 »
hola , a los analogicos an1 an2 an3 y an5 de 0 a 1,24 y 10 al de vref, si utilizase seria 5v para vref y que el reg adresl no pase de 127 seria de 0 a 0,620 por los analogicos ,  si conoceis otra forma de hacer que la conversion del cad no de mas de 127 o como roto cuatro veces adresh y l que son dos reg y no uno, no logro imaginarme como dividirlo, estaria encantado de conocerla

un saludo y gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: problema con el CAD 16f877
« Respuesta #3 en: 24 de Junio de 2007, 18:38:00 »
Amigo espero no hayas quemado tu Vref... los pics no soportan 10V de Vref.

Lee los electrical specifications del datasheet del pic que has elegido.

- 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 micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: problema con el CAD 16f877
« Respuesta #4 en: 24 de Junio de 2007, 22:54:41 »
 :? amigo los pics solo soportan 5V (5.6 creo como max). pobre pic....  :8}
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: problema con el CAD 16f877
« Respuesta #5 en: 25 de Junio de 2007, 02:57:05 »
hola, mirare en el datasheet cuanto soporta la Vref. Di por hecho que aguantaria mas :? gracias por vuestra observación
entonces como puedo hacer para que de una conversion con un maximo de 127 teneis alguna  idea  :mrgreen: 

gracias y un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: problema con el CAD 16f877
« Respuesta #6 en: 25 de Junio de 2007, 03:00:18 »
pues creo que lo primero que deberias plantearte es como vas a reducir esos 10 voltios para sensarlo con el pic.
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: problema con el CAD 16f877
« Respuesta #7 en: 25 de Junio de 2007, 13:56:41 »
hola
no tengo ningun problema en que sea 5V la tension para Vref,o usar la Vdd,  eso significa usar una tension de 0-0,620 para los canales analogicos y que la conversion no pase de 127 en adresl, por eso os preguntaba, si conociais alguna otra forma de hacerlo, usando los diez bits. siendo 1111111111=01111111=127 no conozco si se puede hacer una tabla comparativa ni si existe y que cada 8  valga 1 o si se puede dividir el registro entre 8 rotarlo 4 veces no se como hacerlo con dos registros al tiempo asi pues acudo al foro por si alguien a tenido un problema similar o sabe como ayudarme
 
gracias y un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: problema con el CAD 16f877
« Respuesta #8 en: 25 de Junio de 2007, 15:47:39 »
a ver lo que comprendo de tu problema es lo siguiente: quieres medir un valor de tensión cuyo máximo  valor debe registrarse en el CAD del pic como 127 o en hexadecimal 0X7F? si es asi entonces hay una solución y es definiendo tu Vref+, sino explicame denuevo  :-/ :mrgreen:
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: problema con el CAD 16f877
« Respuesta #9 en: 25 de Junio de 2007, 16:03:35 »
asi es¡¡ que de como maximo 127, perdona si no me habia explicado bien. :?

gracias por la santa paciencia que teneis

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: problema con el CAD 16f877
« Respuesta #10 en: 25 de Junio de 2007, 17:52:33 »
jajaja de santo no tengo nada jajjaaj pero bueno es que me llamo la atencion que querias clavarle 10 voltios al pic jijijijij pero bueno, a ver entonces ya que tenemos bien planteado el problema lo siguiente es entender el margen de captura máximo del conversor A/D, repasemos .... mmmm caballero nomas hay que dividir con rotaciones a la izquierda, mmm.... intenta lo siguiente:
- configura la lectura de 10bits con justificación a la izquierda. de tal manera que los 2 bits de menor peso esten ubicados en el adressL y los 8 de mayor peso en el registro adressH.
- entonces te olvidas del adressL, ahora fijate en el adresH, tiene 8 bits entonces le haces un desplazamiento a la derecha con RRF ADRESH,F (previamente limpia el bit C del registro status) entonces se dividira entre 2, osea si tu lectura fue la maxima digamos 0XFF ahora te quedara 0X7F, que es tu lectura máxima pero expresada en menor valor y perdiendo mucha precision debido a los calculos  de aproximación.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

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

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: problema con el CAD 16f877
« Respuesta #11 en: 25 de Junio de 2007, 17:54:25 »
con el adresl tienes para hacer esa funcion amigo.
al tener 1240mv en la entrada ra0 tendrias en la salida es 254 en binario. rotas este resultado a la derrecha y te daria 127
cogiendo los adresl como justificacion a la derecha.

saludos
 

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: problema con el CAD 16f877
« Respuesta #12 en: 26 de Junio de 2007, 07:12:39 »
muchas gracias por su ayuda, no entendia que era justificar a derecha o izq ahora ya si :-/
 al tajo, a ver que sale

gracias y un saludo

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: problema con el CAD 16f877
« Respuesta #13 en: 27 de Junio de 2007, 08:36:18 »
Holas de nuevo, aqui estoy comiendome la cabesa con los simuladores  :? si no es uno es otro
os hago un resumen de lo que hace el programa:(vaya ser que sea eso)
primero pone los pines 0 1 2 de PORTD a cero, asi elige el canal 1 del multiplexador ,seguido lee canal 1 (AN0) hace la conversion A/D, copia ADRESH en GUARDA, lo divide entre dos,y lo resta con el registro del potenciometro si no da cero salta a copiar el nuevo dato en el reg POTE1 y a la rutina ENVIA que manda los datos por la usart, si fueron iguales cambia al AN1 repite con POTE2asi repite hasta que completa 32 POTES cambiando entre los ocho canales de los multiplexores y los cuatro A/D AN0/1/2/4 y vuelve a empezar. Todo seria muy bonito  si no fuese por que en el simulador se queda pillao con poner un valor diferente a cero , parece que no pone a uno el bit Z de STATUS si la resta que hace entre GUARDA y POTEX no es entre 0 y 0   :shock: eso en proteus y en picsimulator se queda dando vueltas en el envio de la usart cosa que en isis no sucede(estoy que me tiro de los pelos) he repasado el codigo un millon de veces y como en el simulador funcionan unas cosas y en otras no os voy a poner ese pedacito de programa que os he descrito , por si vosotros lo hariais de otra forma

                        bcf      STATUS,5
         movlw   b'00000000'
         movwf   PORTD

                        clrf       CONTROLADOR   ;limpia el registro del numero del controlador 0-32
                        movlw   b'00000101'
                          movwf         ADCON0
dato1   btfsc         ADCON0,2   ;bucle que testea hasta que termina la conversion AD
         goto     dato1
         movf   ADRESH,w
         movwf   GUARDA

         RRF    GUARDA,F
         MOVF   GUARDA,W
         subwf   POTE1,0
;aqui en proteus si no es 0-0 no da cero nunca la resta, rarisimo con cualquier valor siempre salta a enviar cosa que no pasa en picsimulator
         movf   GUARDA,w     ;esta parte la pondria dentro de la rutina envio pero ya la he probado aqui y alli. Y da igual el prog hace lo mismo
         movwf   POTE1                     ;si fue igual deja lo mismo y si no otro

         btfss   STATUS,2   ;si esta a uno el resultado fue igual que el anterior
         call   envio                ;si es diferente salta a enviar los datos por la usart y pone a cero el bit Z por si aca no lo hacia
         retfie                        ;y va a por el pote2 cambiando el canal analogico a convertir cuando a leido los cuatro cambia la salida de portc a 001 y vuelve a convertir el canal uno pote5 canal1 pote6.......hasta 32
                          bcf      STATUS,5
         movlw   b'00000001'
         movwf   PORTD
                        incf        CONTROLADOR..........
                        etc etc etc...............POTE5

--------------------------------------------------------------------------
envio      bsf      STATUS, 5   ;pagina 1
         bsf      TXSTA,5      ;activo   el emisor
         bcf      STATUS, 5   ;pagina 0
         bcf      STATUS,2
         bcf      INTCON,7   ;deshabilita las interrupciones
         movf   GUARDA,w    ;señal de timming clock
         movwf   TXREG   ; Movemos lo que queremos transmitir de w a TXREG
         

         bsf      STATUS, 5   ;pagina 1
         
FIN         btfss   TXSTA, 1   ; Compruebo si el bit TMRT del registro esta
                              ; a '1' o a '0'.
                        ; Si esta a '0' es que esta lleno TMRT y no
                        ; ha terminado de transmitir,
                        ; para ello TRMT tiene que estar a 1, hasta
         goto   FIN               ; entonces esperamos.aqui se queda pillao en picsimuator volviendo a FIN continuamente
                        bsf      INTCON,7                ;activa las interrupciones
                        goto    salida
he copiado las rutinas una detras de otra, quitando las instrucciones de CALL para que no pierda leerlas aun asi adjunto el asm por si pueden simularlo ustedes y aclarame que estoy haciendo mal

gracias y un saludo

a ver si tengo un rato y voy a la tienda por material pa clavarle unos voltios al pic y ver que pasa :mrgreen:

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: problema con el CAD 16f877
« Respuesta #14 en: 07 de Julio de 2007, 13:30:54 »
holas he modificado el codigo y parece que ya funciona  :-/ :-/solo me falta montarlo y probar fuera del simulador
por si a alguien le sirve dejo como adjunto el asm y la simulacion en proteus, si teneis alguna critica constructiva hacedla que siempre viene bien un punto de vista diferente :-)

esta echo para 64 entradas analogicas con ocho 4051


un saludo y gracias por su ayuda que sin ella seguro que aun estaria colgado 
« Última modificación: 08 de Julio de 2007, 05:56:03 por alogic.on »


 

anything