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
Module ADC et buffer du dsPIC33EP
Bonjour,
J'ai du mal à comprendre le fonctionnement du module ADC surtout la manière de récupérer les résultats dans le ADCxBUFn. J'ai environ 15 broches analogique à lire.
Dans la doc, parfois le ADC1BUF0 sert pour récupérer le résultat de conversion de AN5 ou parfois AN8 et le problème est le même sur les autres broches. Je pense bien qu'il y a des registre à initialiser mais je comprend pas trop.
Est ce que quelqu'un peut m'expliquer s'il vous plait ?
Merci pour votre aide.
EDIT : Désolé j'ai été un peu bête. j'utilise le dsPIC33EP512MU814
J'ai du mal à comprendre le fonctionnement du module ADC surtout la manière de récupérer les résultats dans le ADCxBUFn. J'ai environ 15 broches analogique à lire.
Dans la doc, parfois le ADC1BUF0 sert pour récupérer le résultat de conversion de AN5 ou parfois AN8 et le problème est le même sur les autres broches. Je pense bien qu'il y a des registre à initialiser mais je comprend pas trop.
Est ce que quelqu'un peut m'expliquer s'il vous plait ?
Merci pour votre aide.
EDIT : Désolé j'ai été un peu bête. j'utilise le dsPIC33EP512MU814
Module ADC et buffer du dsPIC33EP
Module ADC et buffer du dsPIC33EP
Je ne débute pas, j'ai déjà utilisé d'autre PIC mais je ne suis pas expert non plus
Par contre c'est la première fois que j'utilise un dsPIC mais il m'est imposé pour mettre du code généré par SIMULINK.
Voilà mon code pour init l'ADC :
Je vais faire juste avec AN0 et AN1 pour le moment pour comprendre...
J'utilise sur MPLAB XC16 1.26.
Voilà mon code pour init l'ADC :
Code : Tout sélectionner
void Init_ADC ()
{
//AD1 CLEAR
AD1CON1 = 0x0000; // Clock / Mode / Main
AD1CON2 = 0x0000; // Channel / Interrupt Config
AD1CON3 = 0x0000; // Clock Things
AD1CON4 = 0x0000; // DMA Stuff
AD1CHS0 = 0x0000; // Channel 0 Setup
AD1CSSL = 0x0000; // Channel Scan Selections (Scan AN1, Front Pot and AN15, Rear Pot)
AD1CON1bits.SAMP = 1; // ADC Sample/Hold amplifiers are sampling
AD1CON1bits.ADSIDL = 1; // Disontinue module operation when device enters Idle mode
AD1CON1bits.ASAM = 1; // Sampling begins immediately after last conversion. SAMP bit is auto-set.
AD1CON1bits.SIMSAM = 1; // Samples CH0, CH1, CH2, CH3 simultaneously (when CHPS<1:0> = 1x);
AD1CON1bits.SSRCG = 0;
AD1CON1bits.SSRC = 7; // Internal Counter ends sampling and starts conversion
AD1CON2bits.CSCNA = 1; // Scan INputs for CH0+ during sample A bit
AD1CON2bits.CHPS = 2; // Converts CH0, CH1, CH2 and CH3 */
AD1CON3bits.ADRC = 1; // ADC Internal RC clock */
AD1CON3bits.SAMC = 1; // 15TAD For Sampling
AD1CSSLbits.CSS0 = 0; // Enable AN0 for channel scan
AD1CSSLbits.CSS1 = 1; // Enable AN1 for channel scan
AD1CON1bits.ADON = 1; // Turn on
AD1CON1bits.SAMP = 1; // Start Sampling
}Je vais faire juste avec AN0 et AN1 pour le moment pour comprendre...
J'utilise sur MPLAB XC16 1.26.
Module ADC et buffer du dsPIC33EP
Bonjour
Désole de vous répondre si tard pas très dispos en ce moment.
Les CAN (définition bien de chez nous
) sont assez complexes sur ce type de µC, plutôt qu'un long discours ici http://ww1.microchip.com/downloads/en/D ... 70046E.pdf
Avec des exemples chapitre 17
A+
Désole de vous répondre si tard pas très dispos en ce moment.
Les CAN (définition bien de chez nous
Avec des exemples chapitre 17
A+
Module ADC et buffer du dsPIC33EP
- sylvain54

Amateur- Messages : 194
- Âge : 53
- Enregistré en : août 2015
- Localisation : Dans l'est de la France
Ça va être dur de t'aider car je n'ai pas ce type de PIC en stock.
Vas tu voir l'état du bit DONE qui signale que la conversion est finie ?
Potasse le doc que Mai a mis à ta disposition et commence par la lecture d'un seul port analogique. Es tu sur que ton Pic démarre ? je mets toujours une petite led qui clignote au démarrage du Pic pour être sur de mon coup.
Bon courage.
A ++
Vas tu voir l'état du bit DONE qui signale que la conversion est finie ?
Register 17-1: ADCON1: A/D Control Register 1 (Continued)
bit 1 SAMP: A/D Sample Enable bit
1 = At least one A/D sample/hold amplifier is sampling
0 = A/D sample/hold amplifiers are holding
When ASAM = 0, writing ‘1’ to this bit will start sampling
When SSRC = 000, writing ‘0’ to this bit will end sampling and start conversion
bit 0 DONE: A/D Conversion Status bit (Rev. B silicon or later)
1 = A/D conversion is done
0 = A/D conversion is NOT done
Cleared by software or start of a new conversion
Clearing this bit will not effect any operation in progress
Potasse le doc que Mai a mis à ta disposition et commence par la lecture d'un seul port analogique. Es tu sur que ton Pic démarre ? je mets toujours une petite led qui clignote au démarrage du Pic pour être sur de mon coup.
Bon courage.
A ++
Module ADC et buffer du dsPIC33EP
Oui mais il n'est pas vraiment là mon problème.
Enfaîte je n'arrive pas à comprendre dans quel buffer va être enregistré ma conversion. Ici, je ne test qu'un seul buffer car j'utilise qu'un seul port analogique sur mon proto mais sur ma futur carte j'en ai 15 à utiliser.
J'aimerais comprendre comment fonctionne l'ordre de conversion du CAN. Je pourrais très bien les tester un à un jusqu'à savoir que tel buffer c'est telle entrée analogique mais bon...
J'avais trouvé la doc du CAN du dsPIC33Ep mais il montre un code et la conversion se passe comme sur l'image par exemple. Regardez la page 40 de cette doc : http://ww1.microchip.com/downloads/en/D ... 70621c.pdf et c'est ça que je n'arrive pas à m'expliquer.
Je veux faire au plus simple. Le channel 0 pour avoir toute mes conversions en 12 bits.
AN0 --> ADC1BUF0
AN1 --> ADC1BUF0
...
AN15 --> ADC1BUFF
Mais c'est surtout que je veux le comprendre. Je crois que il y a un lien avec MUXA et MUXB.
Code : Tout sélectionner
void __attribute__((__interrupt__, __auto_psv__)) _T1Interrupt(void)
{
IFS0bits.T1IF = 0;
if (AD1CON1bits.DONE)
{
AD1CON1bits.DONE = 0;
if(ADC1BUF1 > 512)
LED1 = 1;
else
LED1 = 0;
AD2CON1bits.SAMP = 1; // Start sampling again
}
}Enfaîte je n'arrive pas à comprendre dans quel buffer va être enregistré ma conversion. Ici, je ne test qu'un seul buffer car j'utilise qu'un seul port analogique sur mon proto mais sur ma futur carte j'en ai 15 à utiliser.
J'aimerais comprendre comment fonctionne l'ordre de conversion du CAN. Je pourrais très bien les tester un à un jusqu'à savoir que tel buffer c'est telle entrée analogique mais bon...
J'avais trouvé la doc du CAN du dsPIC33Ep mais il montre un code et la conversion se passe comme sur l'image par exemple. Regardez la page 40 de cette doc : http://ww1.microchip.com/downloads/en/D ... 70621c.pdf et c'est ça que je n'arrive pas à m'expliquer.
Je veux faire au plus simple. Le channel 0 pour avoir toute mes conversions en 12 bits.
AN0 --> ADC1BUF0
AN1 --> ADC1BUF0
...
AN15 --> ADC1BUFF
Mais c'est surtout que je veux le comprendre. Je crois que il y a un lien avec MUXA et MUXB.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Module ADC et buffer du dsPIC33EP
- sylvain54

Amateur- Messages : 194
- Âge : 53
- Enregistré en : août 2015
- Localisation : Dans l'est de la France
Simlock a écrit :
Je veux faire au plus simple. Le channel 0 pour avoir toute mes conversions en 12 bits.
AN0 --> ADC1BUF0
AN1 --> ADC1BUF0
...
AN15 --> ADC1BUFF
.
Je ne suis pas d'accord avec ce que tu dis par rapport au schéma que tu joins
AN0 => ADC1BUF1
AN1 => ADC1BUF2
AN2 => ADCBUF3
.... Jusquà AN5 => ADC1BUF7
AN8 => ADC1BUF0Module ADC et buffer du dsPIC33EP
Module ADC et buffer du dsPIC33EP
Module ADC et buffer du dsPIC33EP
Je sais sylvain54... j'ai bien vu mais j'ai dit que c'est ce que je voulais faire... j'ai donné la doc et la page donc si tu descends plus bas tu tombes sur cette image
Et on voit que ADC1BUF2 maintenant est pour AN9 et il y d'autres endroit dans la doc où ADC1BUF0 est pour AN2.
Je veux comprendre quels registres me permettent de changer l'ordre de conversion pour faire :
AN0 --> ADC1BUF0
AN1 --> ADC1BUF0
...
AN15 --> ADC1BUFF
Merci mai pour l'exemple, je vais regarder ça
Et on voit que ADC1BUF2 maintenant est pour AN9 et il y d'autres endroit dans la doc où ADC1BUF0 est pour AN2.
Je veux comprendre quels registres me permettent de changer l'ordre de conversion pour faire :
AN0 --> ADC1BUF0
AN1 --> ADC1BUF0
...
AN15 --> ADC1BUFF
Merci mai pour l'exemple, je vais regarder ça
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Qui est en ligne
Utilisateurs parcourant ce forum : kakal62 et 8 invités


