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
test de l'ADC sur un pic24
Bonjour,
J'essaye de faire marcher l'ADC sur un PIC24FJ64GB202 mais comme je ne l'ai pas encore reçu, je ne sais pas si ce que j'ai fait devrait fonctionner...
J'essaye tout simplement de faire passer l'état d'une broche à 1 si la tension appliqué à une broche réglée en analogique est superieur ou égal à 2V:
Le problème, c'est que je me sert de code configurator pour gagner du temps, j'ai quasiment recopié l'exemple donné mais la fonction ADC1_ConversionResultGet() me parait louche parceque le commentaire semble indiqué une tout autre utilité à la fonction que de récupérer le résultat de la valeur:
mais le code lui semble indiquer que la fonction renvoie la valeur d'un registre
du coup je me dit que c'est peut être le commentaire qui est faux .
Qu'en pensez vous ?
J'essaye de faire marcher l'ADC sur un PIC24FJ64GB202 mais comme je ne l'ai pas encore reçu, je ne sais pas si ce que j'ai fait devrait fonctionner...
J'essaye tout simplement de faire passer l'état d'une broche à 1 si la tension appliqué à une broche réglée en analogique est superieur ou égal à 2V:
Code : Tout sélectionner
int main(void)
{
// initialize the device
SYSTEM_Initialize();
int conversion;
ADC1_Initialize();
ADC1_ChannelSelect(ADC1_CHANNEL_AN0);
ADC1_Start();
//Provide Delay
for(int i=0;i <1000;i++)
{
}
ADC1_Stop();
while(!ADC1_IsConversionComplete())
{
ADC1_Tasks(); //on baisse le flag
}
conversion = ADC1_ConversionResultGet();
if (conversion >2)
{
PORTA = 0x10;
}
while (1)
{
// Add your application code
}
return -1;
}
Le problème, c'est que je me sert de code configurator pour gagner du temps, j'ai quasiment recopié l'exemple donné mais la fonction ADC1_ConversionResultGet() me parait louche parceque le commentaire semble indiqué une tout autre utilité à la fonction que de récupérer le résultat de la valeur:
Code : Tout sélectionner
@Summary
Returns true when the conversion is completed
@Description
This routine is used to determine if conversion is completed. This routine
returns the value of the DONE bit. When conversion is complete the routine
returns 1. It returns 0 otherwise.
@Preconditions
ADC1_Initializer() function should have been
called before calling this function.
@Returns
Returns true if conversion is completed
@Param
None
@Example
Refer to ADC1_Initializer(); for an example
*/
mais le code lui semble indiquer que la fonction renvoie la valeur d'un registre
Code : Tout sélectionner
uint16_t ADC1_ConversionResultGet(void)
{
return ADC1BUF0;
}
du coup je me dit que c'est peut être le commentaire qui est faux .
Qu'en pensez vous ?
test de l'ADC sur un pic24
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
Je ne conais pas les PIC24 ,mais je doute que la fonction renvoie un resultat en volts..
le resultat de la conversion devrait etre en points 0 à 1023 ,
si alim en 5V ( +VREF=VDD, -VREF=VSS) , 2V correspondrait à environ 409 points.
En effet le commentaire s'appliquerait plutot à
la fonction ADC1_IsConversionComplete qui retourne un etat logique (DONE_bit)
je poussoie, en effet, la valeur retournée est un entier 16 bits
de meme le label ADC1BUF0 est assez parlant
il y a peut etre un ERRATA émit posterieurement par microchip.. ?
J'essaye tout simplement de faire passer l'état d'une broche à 1 si la tension appliqué à une broche réglée
en analogique est superieur ou égal à 2V:
Je ne conais pas les PIC24 ,mais je doute que la fonction renvoie un resultat en volts..
Code : Tout sélectionner
conversion = ADC1_ConversionResultGet();
if (conversion >409) // was 2
{
PORTA = 0x10; // a voir s'il vaut mieux utiliser LATA4_bi=1t; ou LATA=0x10
}
else
{
LATA4_bit=0;
}
le resultat de la conversion devrait etre en points 0 à 1023 ,
si alim en 5V ( +VREF=VDD, -VREF=VSS) , 2V correspondrait à environ 409 points.
le commentaire semble indiqué une tout autre utilité à la fonction que de récupérer le résultat de la valeur:
En effet le commentaire s'appliquerait plutot à
la fonction ADC1_IsConversionComplete qui retourne un etat logique (DONE_bit)
mais le code lui semble indiquer que la fonction renvoie la valeur d'un registre
Code : Tout sélectionner
uint16_t ADC1_ConversionResultGet(void)
{
return ADC1BUF0;
}
je poussoie, en effet, la valeur retournée est un entier 16 bits
de meme le label ADC1BUF0 est assez parlant
il y a peut etre un ERRATA émit posterieurement par microchip.. ?
test de l'ADC sur un pic24
Merci pour ta correction, je crois que je comprends mieux comment fonctionne l'ADC maintenant.
Je suis un peu rassurer par rapport aux commentaires parce que comme je n'ai pas encore le pic je ne peux pas tester pour voir qui a raison entre le commentaire et l'exemple mais comme tu penses la même chose que moi je me dit que la bonne solution est celle donné dans l'exemple
Je suis un peu rassurer par rapport aux commentaires parce que comme je n'ai pas encore le pic je ne peux pas tester pour voir qui a raison entre le commentaire et l'exemple mais comme tu penses la même chose que moi je me dit que la bonne solution est celle donné dans l'exemple
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 53 invités