Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
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 :
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
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
Configuration des entrées analogiques
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Jeremy et à tous,
Ce PIC est particulierement compliqué !
aussi , je pense qu'utiliser MPLAB XPRESS est une solution ( de facilité peut etre ?) ,mais qui doit etre efficace.
pour extraire la methode adéquate d'init ADC.
MikroC n'etant pas ausssi évolué ... semble dormir sur ses lauriers ! .. fanés.
si ça continue, je vais migrer aussi .
partie config RD5 analogique
ou le projet complet ( non testé !)
A+
Ce PIC est particulierement compliqué !
aussi , je pense qu'utiliser MPLAB XPRESS est une solution ( de facilité peut etre ?) ,mais qui doit etre efficace.
pour extraire la methode adéquate d'init ADC.
MikroC n'etant pas ausssi évolué ... semble dormir sur ses lauriers ! .. fanés.
si ça continue, je vais migrer aussi .
partie config RD5 analogique
ou le projet complet ( non testé !)
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Merci Paul ,
J'avais oublié ce logiciel c'est une excellente idée .
Par contre en feuilletant rapidement tes fichiers, cela revient a faire la configuration manuelle du coup .
Quid des librairies de mikroC ? car si en effet les librairies de mikroC deviennent inopérantes , effectivement ils va falloir qu'il se bougent le cul. car mon but était quand même d'utiliser les librairies toutes faites . Si maintenant faut se faire ces librairies mikroC devient obsolète.
Je vais peut être ouvrir un fil sur le forum mikroC pour faire monter la pression, car je trouve cela inadmissible.
Je vous tiens au jus de mes avancées.
Si vous voyez d'autres solutions je suis tout ouïe !
J'avais oublié ce logiciel c'est une excellente idée .
Par contre en feuilletant rapidement tes fichiers, cela revient a faire la configuration manuelle du coup .
Quid des librairies de mikroC ? car si en effet les librairies de mikroC deviennent inopérantes , effectivement ils va falloir qu'il se bougent le cul. car mon but était quand même d'utiliser les librairies toutes faites . Si maintenant faut se faire ces librairies mikroC devient obsolète.
Je vais peut être ouvrir un fil sur le forum mikroC pour faire monter la pression, car je trouve cela inadmissible.
Je vous tiens au jus de mes avancées.
Si vous voyez d'autres solutions je suis tout ouïe !
Configuration des entrées analogiques
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Salut satinas,
Je suppose que tu fais allusion au char pour stocker la valeur lue qui en fait un INT car sur 10 bit non ?
Je m'en suis rendu compte après mon message . J'ai décidé de créer un nouveau programme test rien pour mettre au point la lecture de mes potars.
Les parties commentées , c'est que j'ai essayé :
Je suppose que tu fais allusion au char pour stocker la valeur lue qui en fait un INT car sur 10 bit non ?
Je m'en suis rendu compte après mon message . J'ai décidé de créer un nouveau programme test rien pour mettre au point la lecture de mes potars.
Les parties commentées , c'est que j'ai essayé :
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
/*
Fosc = 64Mhz
UART1 = 57600 bauds
UART2 = 57600 bauds
*/
#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 ;
unsigned int Valeur_lue;
//#################################################################################################
//######################################### MAIN ########################################
//#################################################################################################
void main() {
// RAZ des broches
LATA = LATB = LATC = LATD = LATE = 0;
// registres des I/O
TRISA = TRISB =TRISC =TRISD =TRISE = 0xFF ; // Tout en entrée
// registre analogiques
ANSELD = 0b00100000; // RD5 en analogique
// Registre des Pull-UP
WPUA = WPUB = WPUC = WPUD = WPUE = 0x00;
// ----------------- Initialisation UART ----------------------------------
//----- UART1
UART1_Init(57600);
// ----------------- Initialisation de la lecture analogique/numérique ----------------------------------
//ADC_Init();
ADC_Init_Advanced(_ADC_INTERNAL_REF);
//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){
Valeur_lue = ADC_Get_Sample(3);; // Broche RD5
delay_ms(200);
UART1_Write(Valeur_lue);
delay_ms(200);
}
}
Configuration des entrées analogiques
Configuration des entrées analogiques
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
UART1_Write(Joystick_G_HB);
Si lecture uniquement ADRESH ADC cadré à gauche (ADFM=0) , un byte suffit 0 à 255 , sinon cadré à adroite et un int s'impose (0 à 1023).
Par contre ne pas oublier de traduire la valeur lue en ascii
char txt[7];
.....
ByteToStr ou IntTostr
avec
ByteToStr(Joystick_G_HB,txt);
UART1_Write_Text( txt);
ou IntToStr si integer..
Si lecture uniquement ADRESH ADC cadré à gauche (ADFM=0) , un byte suffit 0 à 255 , sinon cadré à adroite et un int s'impose (0 à 1023).
Par contre ne pas oublier de traduire la valeur lue en ascii
char txt[7];
.....
ByteToStr ou IntTostr
avec
ByteToStr(Joystick_G_HB,txt);
UART1_Write_Text( txt);
ou IntToStr si integer..
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Merci de vos remarques tout a faite juste. Dans la précipitation j'en oublie l'essentiel.
Mais ca ne fonctionne toujours pas.
Mais ca ne fonctionne toujours pas.
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
/*
Fosc = 64Mhz
UART1 = 57600 bauds
*/
#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 ;
unsigned int Valeur_lue;
char txt[7];
//#################################################################################################
//######################################### MAIN ########################################
//#################################################################################################
void main() {
// RAZ des broches
LATA = LATB = LATC = LATD = LATE = 0;
// registres des I/O
TRISA = TRISB = TRISD =TRISE = 0xFF ; // Tout en entrée
TRISC = 0b11111001; // C1 et C2 en sortie pour led
// registre analogiques
ANSELD = 0b00100000; // RD5 en analogique
// Registre des Pull-UP
WPUA = WPUB = WPUC = WPUD = WPUE = 0x00;
// ----------------- Initialisation UART ----------------------------------
//----- UART1
UART1_Init(57600);
// ----------------- Initialisation de la lecture analogique/numérique ----------------------------------
ADC_Init();
//ADC_Init_Advanced(_ADC_INTERNAL_REF);
//ADON_bit = 1;
//ADPCH = 0b011101;
//#################################################################################################
//############################### BOUCLE PRINCIPALE #####################################
//#################################################################################################
while(1){
Valeur_lue = ADC_Read(3);; // Broche RD5
delay_ms(100);
IntTostr(Valeur_lue,txt);
UART1_Write_Text(txt);
delay_ms(200);
}
}
//#################################################################################################
//############################### PROGRAMME SECONDAIRE ###################################
//#################################################################################################
Configuration des entrées analogiques
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Rre,
Bonne nouvelle , en me servant du code de la DS en 555 ( pour mplab) j'ai enfin réussis à visualiser mes tensions lues !
Voici un code qui focntionne
Bonne nouvelle , en me servant du code de la DS en 555 ( pour mplab) j'ai enfin réussis à visualiser mes tensions lues !
Voici un code qui focntionne
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
/*
Fosc = 64Mhz
UART1 = 57600 bauds
*/
#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;
unsigned int Valeur_lue;
char txt[7];
//#################################################################################################
//######################################### MAIN ########################################
//#################################################################################################
void main() {
// RAZ des broches
LATA = LATB = LATC = LATD = LATE = 0;
// registres des I/O
TRISA = TRISB = TRISD =TRISE = 0xFF ; // Tout en entrée
TRISC = 0b11111001; // C1 et C2 en sortie pour led
// registre analogiques
ANSELD = 0b00100000; // RD5 en analogique
// Registre des Pull-UP
WPUA = WPUB = WPUC = WPUD = WPUE = 0x00;
// ----------------- Initialisation UART ----------------------------------
//----- UART1
UART1_Init(57600);
// ----------------- Initialisation de l'ADC ----------------------------------
ADCON0.ADFM = 1; // Justification à droite
ADCON0.ADCS = 1; // Horloge dedié FRC
TRISD.B5 = TRISD.B7 = 1; // met RD5 et RD7 en entrée
ANSELD.B5 = ANSELD.B7 = 1; // met RD5 et RD7 en analogique
ADCON0.ADON = 1; // Allume le module ADC
// 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){
delay_ms(5);
ADCON0.ADGO = 1; // lancement de la conversion
while (ADCON0.ADGO); // On attend la fin de la conversion
ADPCH = 0b00011101; // On change de broche pour lire la suivante ici RD5
Valeur_lue = (ADRESH<<8) + ADRESL; // On enregistre le résultat
IntTostr(Valeur_lue,txt); // On le convertie en string
UART1_Write_Text(txt); // On l'affiche
delay_ms(5);
ADCON0.ADGO = 1; // lancement de la conversion
while (ADCON0.ADGO); // On attend la fin de la conversion
ADPCH = 0b00011111; // On change de broche pour lire la suivante icic RD7
Valeur_lue = (ADRESH<<8) + ADRESL; // On enregistre le résultat
IntTostr(Valeur_lue,txt);
UART1_Write_Text(txt);
UART1_Write(10);
UART1_Write(13);
}
}
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 90 invités