TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: pakofer 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:
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
-
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