Tout d'abord j’espère que vous avez passez de bonnes fêtes de Noël !
J'essaye éperdument de configurer des entrées en analogiques pour lire les valeurs qui arrivent dessus. Au final j'e nsuis réduit aà essayer que sur une seule entrées pour le moment !
Peut être que cela est à cause du PPS , mais je n'arrive pas à lire les valeurs "traditionnellement" on va dire .
D'habitude il suffit d'initialiser le partie " conversion ana/num" avec un ADC_Init();
Puis de lire la valeur avec un ADC_Read(3); ou ADC_Get_Sample(3);.
J'ai vérifier la tension sur ma broche RD5 qui varie bien de presque 0V à quasiment Vcc grâce a mon joystick (Potar de 10K).
Plusieurs HIC :
Comment nommer la broche à lire ? d’après la DS(page 10) , la broche RD5 c'est la broche analogique nommée AND5 mais le terme AND5 n'est pas reconnu dans mikroC . Je pense donc qu'il faut mettre le numéro de la broche c'est à dire 3 pour un TQFP 44 pins?
Pour le moment je n'ai essayé qu'avec les librairies toutes faites de mikroC ( normalement c'est prévue pour ca), et je n'est pas encore essayer la lecture et configuration manuelle.
Je pense que j'ai oublié quelques choses dans la confiration mais je ne sais pas quoi .
j'ai essayé de mettre le bit ADON à 1 pour activer l'ADC ADON_bit = 1;
J'ai essayé de configurer le bit ADPCH et de le mettre sur RD5 avec ADPCH = 0b011101;
Rien n'a fonctionner .
Je vous joint mon programme en ayant supprimé "normalement" les parties complétement inutile pour simplifier la lecture :
Code : Tout sélectionner
// PROGRAMME pour la télécommande-radio du robot
// DS du PIC : http://ww1.microchip.com/downloads/en/DeviceDoc/40001844D.pdf
#define RESET LATC.B3 // Sortie
#define CONFIG LATD.B0 // Sortie
#define CTS LATC.B4 // Sortie
#define RTS PORTC.B5 // Entrée
#define DATA_REQ LATD.B2 // Sortie
#define DATA_IND PORTD.B3 // Entrée
#define TRX_DIS LATD.B1 // Sortie
#define LED_R LATC.B2 // Sortie led rouge
#define LED_V LATC.B1 // Sortie led verte
#define BP PORTE.B0 // Entree pour BP
//################################## Variables ##############################################
char i, Compteur, Ok ;
char Joystick_D_HB, Joystick_D_DG, Joystick_G_HB, Joystick_G_DG;
#include "Initialisation_AMB8626.h"
//#################################################################################################
//######################################### MAIN ########################################
//#################################################################################################
void main() {
// RAZ des broches
LATA = LATB = LATC = LATD = LATE = 0;
// registres des I/O
TRISA = 0xEF; // RA4 en sortie pour liaison
TRISB = 0xDF; // RB5 en sortie Pour UART-TX2
TRISC = 0xA1; // En sortie RC1 et RC2 pour led test, RC3 et RC4 pour liaison AMB et RC6 pour Tx1
TRISD = 0xF8; // En sortie RC0, RC1 et RC2 pour liaison AMB
TRISE = 0xFF; // Tout en entrée
// registre analogiques
ANSELA = 0x80; // RA7 en analogique
ANSELC = 0x01; // RC0 en analogique
ANSELD = 0xA0; // RD5 et RD7 en analogique
ANSELB=ANSELE = 0x00;
// Registre des Pull-UP
WPUA = 0x0F; // RA0, RA1, RA2 et RA3 en Pull UP
WPUB = 0x0F; // RB0, RB1, RB2 et RB3 en Pull UP
WPUE = 0x01; // RE0 en pull up pour BP
WPUC = WPUD = 0x00;
// ----------------- Initialisation UART ----------------------------------
//----- UART1
UART1_Init(57600);
RC1IE_bit = 1; // Active les Interruptions sur Rx UART 1
RC1IF_bit = 0; // RAZ flag
//----- UART2
UART2_Init(57600);
RC2IE_bit = 1; // Active les Interruptions sur Rx UART 2
RC2IF_bit = 0; // RAZ flag
/*
//--------------------------- PPS --------------------------------------------------
// Séquence de déverouillage des PPS page 218 de la DS
INTCON.GIE = 0; // On désactive les INT
Unlock_IOLOCK(); // On deverouille les PPS
RX1PPS = 0x17 ; // RC7->EUSART1:RX1;
RC6PPS = 0x09; // RC6->EUSART1:TX1;
RX2PPS = 0x0F; // RB7->EUSART2:RX2;
RB5PPS = 0x0B; // RB5->EUSART2:TX2;
Lock_IOLOCK(); // On verouille les PPS
//------------------------------ INTERRUPTION -------------------------------------
//----- GLOBAL
INTCON.PEIE = 1 ; // On active les INT périphériques
INTCON.GIE = 1 ; // On active toutes les INT
//Initialisation_AMB8626(); // Se trouve dans un Header
*/
// ----------------- Initialisation de la lecture analogique/numérique ----------------------------------
ADC_Init();
// ADON_bit = 1;
//ADPCH = 0b011101;
// séquence de clignotement au demarrage (3 fois)
for (i=0;i<=5;i++){
LED_R = ~LED_R ;
delay_ms(100);
}
//#################################################################################################
//############################### BOUCLE PRINCIPALE #####################################
//#################################################################################################
while(1){
Joystick_G_HB = ADC_Read(15); // Broche RD5
delay_ms(200);
UART1_Write(Joystick_G_HB);
delay_ms(200);
}
}
Comme vous pouvez le voir j'envoie la valeur lue en UART pour afficher sur realterm.
Auriez vous une idée pour configurer la broche RD5 en entrée analogique correctement et réussir à lire la valeur ?
Merci

