Autor Tema: 18f1320 y conversion A/D  (Leído 3126 veces)

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

Desconectado juanez

  • PIC12
  • **
  • Mensajes: 90
18f1320 y conversion A/D
« en: 17 de Abril de 2007, 07:17:30 »
Hola solo consigo hacer funcionar el primer canal A/D del 18f1320, supongo que es tema de los registros ADCON o algo mas, pero llevo poco tiempo con el pbp, y estoy mirando el datasheet de microchip y no me aclaro mucho.

Haber si alguien sabe que hay que hacer para poder leer varios canales A/D de este chip.

Salu2.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: 18f1320 y conversion A/D
« Respuesta #1 en: 17 de Abril de 2007, 11:40:30 »
Junaez,

Sera posoble que coloques tu codigo? Ya que asi es un poquito dificil saber que estas haciendo.

Saludos.

Elreypic.

Desconectado juanez

  • PIC12
  • **
  • Mensajes: 90
Re: 18f1320 y conversion A/D
« Respuesta #2 en: 17 de Abril de 2007, 12:59:26 »
----------------------------------------------------------------------------------------------------------------------
define osc 8
include "modedefs.bas"
'Define ADCIN parameters
Define   ADC_BITS   10   ' Set number of bits in result
Define   ADC_CLOCK   3   ' Set clock source (3=rc)
Define   ADC_SAMPLEUS   50   ' Set sampling time in uS
   
    TRISA = %11111111   ' Set PORTA to all input
   ADCON1 = %00000010   ' Set PORTA analog and LEFT justify result
   ADCON0 = %11000001   ' Configure and turn on A/D Module
    ADCON0.2 = 1
   

canal1 var word[4]
canal1high var byte
canal1low var byte
canal2 var word[4]
canal2high var byte
canal2low var byte

loop:   
        adcin 0,canal1   
        adcin 1,canal2
        pause 300
         canal1high= canal1.highbyte
         canal1low= canal1.lowbyte
         canal2high = canal2.highbyte
         canal2low = canal2.lowbyte
        serout2 portb.1,3313,["T",canal1high,canal1low]
        pause 200
        serout2 portb.1,3313,["B",canal2high,canal2low]

pause 400
goto loop   
-------------------------------------------------------------------------------------------------------------------

El reypic2, lo que quiero hacer con este programa es leer el valor de varios canales A/D del pic, y esos valores enviarlos directamente a traves del puerto serie. si necesitas algo mas dimelo.

Saludos.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: 18f1320 y conversion A/D
« Respuesta #3 en: 17 de Abril de 2007, 14:05:02 »
Que tal Juanez,

Ahora si, lo primero que veo es que no estas configurando correctamente el ADC del microcntrolador.
Cuando usas el ADC en 10 bits debes justificar el resultado hacia la derecha. Ver pagina 43 del manual de PIC Basic Pro. ADCON2.7 = 1 o bien HIGH ADCON2.7
ADCON1 debe ser igual a cero si deseas utilizar todos los canales analogicos. Ver pagina 43 manual de PBP y pagina 156 del datasheet del microcontrolador.
No mencionas como usaras el voltaje de regferencia, asi que yo supondre que este lo tomaras del VDD, por lo tanto ADCON0.0 = 1 , ya que como lo tienes configurado le estas diciendo que use otro valor de referencia externo.
La forma en que usas las variables no es la correcta. Las variables en donde se asignara el resultado de la conversion de cad canal deben ser del tipo WORD ya que el resultado sera de 10 bits. Entonces podria ser algo asi:
ADCRESULT1    VAR     WORD     'Variable que contiene el resultado para el canal 1 del ADC
ADCRESULT2     VAR     WORD    'Variable qeu contiene el resultado para el canal 2 del ADC

    Para leer los canales seria asi:
ADCIN  0,ADCRESULT1
ADCIN  1,ADCRESULT2

y para enviarlos via serial
SEROUT2  PORTB.1,3313,(dec  ADCRESULT1)
SEROUT2  PORTB.1,3313,(dec  ADCRESULT2

Veo que usas un baud rate de 300 bps es una velocidad no muy standard, yo te recomiendo uasr 9600 bps
Otra cosa que te recomiendo es usar el USART del micro para que puedas usar el HSEROUT.

Te recomiendo que leas bien el capitulo del ADC en el datasheet del micro y el manual de PICBASIC
Saludos y espero todo vaya bien.

Elreypic.

Desconectado juanez

  • PIC12
  • **
  • Mensajes: 90
Re: 18f1320 y conversion A/D
« Respuesta #4 en: 18 de Abril de 2007, 13:19:15 »
Hola he puesto los registros tal como comentas, pero sigue sin funcionar.
Lo de la velocidad ponia esa por ser la mas lenta para descartar problemas, pero ya he puesto 9600, no quiero usar voltaje de referencia como bien dices, y quiero usar oscilador interno a 8mhz, en realidad la velocidad me da igual, pero quiero usar el oscilador interno.

He estado mirando lo del usart en el datasheet, pero no se como se usa en pbp, estoy mirando el ejemplo del pbp y voy a probar a ver si me aclaro.





-----------------------------------------------------------------------------------
define osc 8
include "modedefs.bas"
'Define ADCIN parameters
Define   ADC_BITS   10   ' Set number of bits in result
Define   ADC_CLOCK   3   ' Set clock source (3=rc)
Define   ADC_SAMPLEUS   50   ' Set sampling time in uS
   
    TRISA=1 ' Puerto a como entradas
   
    ADCON2.7=1
    ADCON1=0
    ADCON0.0=1


canal1 var word
canal1high var word
canal1low var word
canal2 var word
canal2high var word
canal2low var word

loop:   
        adcin 0,canal1
        adcin 1,canal2
        pause 300
         canal1high= canal1.highbyte
         canal1low= canal1.lowbyte
         canal2high = canal2.highbyte
         canal2low = canal2.lowbyte
         serout2 portb.1,9600,["X",dec canal1high,dec canal1low]
        pause 400
        serout2 portb.1,9600,["Y",dec canal2high,dec canal2low]

pause 400
goto loop   
------------------------------------------------------------------------------------------------

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 18f1320 y conversion A/D
« Respuesta #5 en: 18 de Abril de 2007, 13:51:44 »
Hola segun leo en el data una configuracion para el ADC seria asi:

ADCON0=%00011111
 Donde los 2 primeros 0 son para no usar vrefs el tercer 0 es porque no se implementa, los siguientes 111 son para no configurar el canal ad ya que si ponemos cualquier otro solo se activara ese pin de entrada. se supone que poniendo 111 regresa un valor a escala completa con ese valor puedes jugar para ver que pasa. el siguiente 1 es godone osea activa la conversion. y el ultimo 1 activa el AD

luego viene ADCON1=%0000000 Todo en cero el bit 7 no se implementa y del bit6 al bit0, se configuran a 0 para habilitar el pin como AD.

y por ultimo ADCON2.7=1 que es le bit 7 de adcon2 y te lo justifica a la derecha.

Para usar el iscilador interno procura poner el @ DEVICE INTIO2 y el registro OSCCON configurarlo correctamente. Por ejemplo para una frecuencia de 8MHZ seria

OSSCON=%01111100


SALUDOS.
"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 juanez

  • PIC12
  • **
  • Mensajes: 90
Re: 18f1320 y conversion A/D
« Respuesta #6 en: 22 de Abril de 2007, 13:05:53 »
Estoy dandole vueltas al tema y el pbp me da error al poner :

@ DEVICE INTIO2

Ahora mismo estoy probando con el mikrobasic que se pueden configurar los fuses en el mismo proyecto, pero no en mikrobasic no consigo hacer una comunicacion rs-232, estoy intentando usar el usart con el mkb, pero no funciona.

Tambien he visto en la documentacion del mkb la libreria del manchester code, que tambien me serviria, pero me tira para atras lo que dice que las routinas tienen limitadas el baud rate  a 340-560bps

¿Alguien a usado el manchester code en su aplicacion?