Bonjour
Je souhaite effectué plusieurs conversion de tension en même temps, mais je n'y arrive pas.
J'ai trois tension à convertir Start, Start1, Start2
J'ai tout d'abord testé mes trois fonctions séparemment pour voir si elles marchaient.
Lorsque je les teste sur l'entrée AN0, elles fonctionnent, mais des que je les mets sur AN1 et AN2 ca ne marche plus.
Je pense que mon problème vient de la configuration des registres du CAN pour le Start1 et le Start2 car le Start marche et je peux voir le resultat de ma conversion.
Pouvez-vous m'aider ?
merci d'avance
PS je vous met pas tout le programme entier, juste la configuration du CAN pour chaque fonction
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
#define LED_PRES_NOK_SCGND b'00100100' ;PORTC,2 & PORTC,5
#define LED_PRES_NOK_ILL b'00010100' ;PORTC,2 & PORTC,4
#define LED_PRES_NOK_SCBAT b'01000100' ;PORTC,2 & PORTC,6
#define LED_PRES_NOK_OC b'00001100' ;PORTC,2 & PORTC,3
#define LED_TEMP_NOK_SCGND b'00100001' ;PORTC,0 & PORTC,5
#define LED_TEMP_NOK_ILL b'00010001' ;PORTC,0 & PORTC,4
#define LED_TEMP_NOK_SCBAT b'01000001' ;PORTC,0 & PORTC,6
#define LED_TEMP_NOK_OC b'00001001' ;PORTC,0 & PORTC,3
#define LED_SIGNAL_BAT b'10000000' ;PORTB,7
#define TOOL_SWITCH_ON_OFF b'10000000' ;PORTC,7
#define LED_TEMP_OK b'00010000' ;PORTB,4
#define LED_PRES_OK b'00000010' ;PORTC,1
TEMPELE EQU 0x21
NBTEMP EQU 0x22
cblock 0x020 ;Début de la zone de variable
result : 1 ;Désignation d’adresse à «*result*»
result1 : 1
result2 : 1
endc ;Fin de la zone de variable
org 0x000 ;Adresse du début après le reset
Start:
bsf STATUS,RP0 ;Sélection du registre page 1
movlw 0xFF
movwf TRISA ;Tous les Ports A sont des entrées
clrf TRISC ;Tous les Ports C sont des sorties
movlw 0x10 ;Fréquence du convertisseur /8
movwf ADCON1
bcf STATUS,RP0 ;Reviens au registre page 0
bcf STATUS,RP0 ;Adressage du registre page 2
bsf STATUS,RP1
movlw b'00000001' ;Configuration de AN0 comme pin analogique
movwf ANSEL
bcf STATUS,RP0 ;Adressage du registre page 0
bcf STATUS,RP1
movlw 0x01
movwf ADCON0 ;Configuration du convertisseur, pin RA0, justifié à gauche, convertisseur allumé
MainLoop:
nop ;Attente de 5µs
nop ;1µs
nop ;1µs
nop ;1µs
nop ;1µs
bsf ADCON0,GO ;Commencement de la conversion
btfss ADCON0,GO ;Ce bit changera d’état (=0), quand la conversion sera terminé
goto $-1
movf ADRESH,w ;Copie ADRESH dans le registre
movwf result ;Copie le registre dans la variable «*result*»
Start1:
bcf TRISB,4
bcf TRISB,7
bsf STATUS,RP0 ;Sélection du registre page 1
movlw 0xFF
movwf TRISA ;Tous les Ports A sont des entrées
clrf TRISC ;Tous les Ports C sont des sorties
clrf TRISB
movlw 0x10 ;Fréquence du convertisseur /8
movwf ADCON1
bcf STATUS,RP0 ;Reviens au registre page 0
bcf STATUS,RP0 ;Adressage du registre page 2
bsf STATUS,RP1
movlw b'00000010' ;Configuration de AN0 comme pin analogique
movwf ANSEL
bcf STATUS,RP0 ;Adressage du registre page 0
bcf STATUS,RP1
movlw 0x02
movwf ADCON0 ;Configuration du convertisseur, pin RA0, justifié à gauche, convertisseur allumé
Start2:
bsf STATUS,RP0
movlw 0xFF
movwf TRISA
clrf TRISB
movlw 0x10
movwf ADCON1
bcf STATUS,RP0
bsf STATUS,RP1
movlw b'00000100' ;Configuration de AN2 comme pin analogique
movwf ANSEL
bcf STATUS,RP0
bcf STATUS,RP1
movlw 0x03
movwf ADCON0
-----