Autor Tema: Convertidor A/D 3 Analog Channels IN - Problemas con el codigo  (Leído 1384 veces)

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

Desconectado pakofer

  • PIC10
  • *
  • Mensajes: 24
Convertidor A/D 3 Analog Channels IN - Problemas con el codigo
« en: 12 de Abril de 2007, 06:43:40 »
Buenas;

Estoy usando un rfPIC12F675F trabajando en los 433mhz (supongo que el convertidor del PIC12F675 es el mismo) y me gustaria saber si este código es correcto, porque hay algo que no entiendo:

Código: [Seleccionar]
READ_ANALOG_ACCX

        bcf     ADCON0, CHS1        ; select analog channel AN0
        bcf     ADCON0, CHS0

        goto    READ_ANALOG

READ_ANALOG_ACCY

        bcf     ADCON0, CHS1        ; select analog channel AN0
        bsf     ADCON0, CHS0

READ_ANALOG_ACCZ

        bsf     ADCON0, CHS1        ; select analog channel AN0
        bsf     ADCON0, CHS0


READ_ANALOG

bsf     ADCON0, ADON
        movlw   D'6'                ; At 4 MHz, a 22us delay
        movwf   TEMP                ; (22us = 2us + 6 * 3us + 1us)
        decfsz  TEMP, F
        goto    $-1

        bsf     ADCON0, GO          ; start A/D conversion

        btfsc   ADCON0, GO          ; has A/D conversion completed?
        goto    $-1

        bcf     ADCON0, ADON        ; Turn off ADC module (consumes no operating current)

        return

He visto en muchos ejemplos que en la primera subrutina de lectura hace un salto hasta READ_ANALOG, osea, goto READ_ANALOG y las otras no, entonces, como se leen las otras entradas?.

Para la entrada estoy utilizando un ACELERÓMETRO DE 3 EJES , por lo que me da una entrada del orden de milivoltios, unos 150-300 mV

ALguien sabria decirme si este codigo es correcto?

Gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Convertidor A/D 3 Analog Channels IN - Problemas con el codigo
« Respuesta #1 en: 12 de Abril de 2007, 11:53:21 »
A mi modo de verlo, no es correcto.

Se debe llamar al la rutina readanalog, cada vez que cambies el canal.

Además, no usando un goto sino un 'call' ya que de esta rutina se regresa con un return.  Por último, no veo que se "lea" realmente la conversión, esto se haría haciendo un move del registro ADRESx

Saludos
- 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)