Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

pic18f4550 adc et interruption diificulté

Envoyé par mick 
pic18f4550 adc et interruption diificulté
vendredi 2 juin 2006 11:54:22
Bonjour votre site est trés interresant et deplus je travaille sur ce pic donc j'ai compris plein de chose grace a votre site.
Mais je me retrouve a quelque point qui me sont encore difficile d'acces et en particulier les interruptions bien que l'adc (analog to digital convertor) m'est accessible.

Mon projet c'est d'effectuer une convertion A/N et ensuite lecture par Pc et avoir une vitesse maximal possible pour le transfert de donnée et avoir une cadence d'echantillonage maximal.

Voici mes mon problemes:
Au niveau de l'adc c'est d'avoir une cadence d'echantillonage maximal lors de la conversion pour ce la j'ai fais des différents manip au niveau des registres à l'aide du datasheet mais je ne sais pa si ca fonctionne à la cadence maximum?
Au niveau des interruption je ne comprend pas grand chose si vous pourriez m'aider, enfaite ma communication carte-->PC se fais en mode bulk donc j'aimerais que ca soit fais en mode interruption mais je ne vois pas comment et ou intervenir pour cela?
Merci de vorte aide.

Re: pic18f4550 adc et interruption diificulté
samedi 3 juin 2006 21:58:42
Salut,

Quote

Au niveau de l'adc c'est d'avoir une cadence d'echantillonage maximal lors de la conversion pour ce la j'ai fais des différents manip au niveau des registres à l'aide du datasheet mais je ne sais pa si ca fonctionne à la cadence maximum?

Ca va être un petit peu difficile de te répondre sans voir ce que tu fais winking smiley... Ce que je peux te répondre, c'est que tu as plusieurs channel d'acquisition, mais qu'un seul systeme dans la puce qui effectue la conversion, Microchip dans son datasheet recommande que lorsqu'on l'on passe d'un channel a un autre, c'est a dire tu fais une acquisition sur un channel puis sur un autre, d'avoir un certain temps d'attente avant de lancer cette conversion toute les equations pour calculer ton temps de conversion et savoir quelle erreur maximum tu ferras se trouve a la page 264 du datasheet

Au sujet des interruptions, je te conseil de regarder cette exemple de code programmer pour l'hid, mais bon tu verras comment l'interruption est déclarée en C:
[forum.microchip.com]
Re: pic18f4550 adc et interruption diificulté
mardi 6 juin 2006 08:23:02
Bonjour
Mon projet c'est de convertitr un signal analogique en numerique et ensuite de le visualiser sur le pc.
Mais il faut que j'utilise la puissance max du pic c'est a dire le pic doit effecuter la conversiton à son maximum et la viteese de communication avec le pc doit etre au max aussi.

J'ai vu sur votre site que pour le transfert il n'y a que 2 critérs la taille et le temps entre 2 trame deplus j utiliser un logiciel usbview pour avoir certain information sur mon port usb donc j'ai pu remarquer que pour la vitesse de communication c'est marquer:
Device Bus Speed: Full donc je pense que la viteese à son max pourrait je faire confiance à ca?

Sino l'interruption je travaille mais pas encore réussi je suis toujours en mode bulk.
Sino pour pour l'echantillonage je vais voir sur le data sheet merci de m'avoir indiqué la page.



Modifié 1 fois. Dernière modification le 06/06/06 08:23 par mick.
Re: pic18f4550 adc et interruption diificulté
lundi 12 juin 2006 08:16:31
Bonjour
J'ai quelque question au niveau de l'interruption voila j'ai contourner le programme "int_driven_mouse" fournit sur le forum de microchip et j pu remarquer que les interuptions ne sont font pas au niveau du sous programme ProcessIO mais parcontre dans le main.c j'ai remarquer quelque code qui pourrait bien indiqué les interuption mais je ne vois pas ou est déclenché l'interuption si vous pourriez m'aidez?

merci
Re: pic18f4550 adc et interruption diificulté
lundi 12 juin 2006 10:28:35
Salut,

Une interruption n'est pas "déclenchée" dans un sous programme, c'est tout simplement un bout de code qui s'exécute prioritairement lorsque certaines conditions hardware ou software sont remplie.... Donc en fait le bout de code suivant:

[/code]
#pragma code high_vector = 0x08
void high_interrupt (void)
{
_asm goto usb_itr _endasm
}[/code]

Indique au processeur que lorsque la condition x,y est remplie il doit exécuter tel bout de code, mais lorsque l'on rentre dans les interruptions vaut mieux un peu s'intérésser a l'assembleur.... Si tu vas sur le site de microchip, sur la page ou tu peux télécharger cc18 tu as tout un tas de pdf relativement intéréssant sur la programmation en C et en assembleur, et tu as beaucoup d'information a ce sujet...

Au niveau du 18f4550 j'ai trouvé peu d'information sur les interruptions, et je pense que la principale raison c'est que vu que windows ne fonctionne pas avec des interruption, que l'on ne gagne pas forcément de temps a lancer envoyer les données apres une interruption... enfin je pense...

Mais en ce qui concerne ton probleme, tu n'es pas obligé d'utiliser l'interruption, une technique qui se fait est de metre une boucle qui tourne dans le vide qui attend que le bit de fin de conversion analogique repasse à 0... et dans ce cas ton programme réagira même plus vite qu'une interruption, car lorsque tu fais une interruption tu dois sauvegarder tout un tas d'information.... le désavantage est que lorsque tu fais une conversion ton pic ne peut pas travailler sur autre chose en même temps...
Re: pic18f4550 adc et interruption diificulté
mardi 13 juin 2006 14:28:01
bonjour
Pour les interruption je commence à comprendre mais je serais curieux de connaitre votre technique qui tourne dans le vide car je ne vois pas trés bien ce que vous voulez dire par la?
Est ce que c'est quelque chose qui ressemble a ca:

if (adc==0)
if(!mHIDTxIsBusy())
{
HIDTxReport(buffer, DEVICE_RETURNDATA_SIZE);
}
else
{
}
si mon idée est correct pour detecter la fin de conversion A/N (adc==0) je dois faire comment?
Merci.



Modifié 1 fois. Dernière modification le 13/06/06 14:28 par mick.
Re: pic18f4550 adc et interruption diificulté
mardi 13 juin 2006 16:57:52
Salut,

C'est simplement ce que j'utilise dans le firmware dispo sur ce site :


ADCON0bits.GO = 1; lance la conversion
while (ADCON0bits.GO); attend que ce soit fini

activé le bit GO lance la conversion et ce bit repasse à 0 quand c'est fini et peut par la même occasion lancé une interruption
Re: pic18f4550 adc et interruption diificulté
lundi 19 juin 2006 09:24:38
bonjour
ah oui merci j'avais pas du tout pensé à ca.
ET vous savez pour connaitre le temps de cadence d'echantillonage maximum du convertisseur je suis allez voir sur le data sheet comme vous m'avez indiqué j'ai une super formule bien expliquer mais ce ci est juste un cas possible donc comment je pourrais faire pour connaitre les propriété de ma carte que j'ai besoin pour calculer cette valeur?

ET puis si j'ai bien compris cette exemple, il nous donne Tacq=2.45µs cette valeur est vrai dans le meilleure des cas c'est dire que 2.45µs est le temps de cadence max d'echanillonage de l'adc??

Merci bien

la formule:

TACQ = Amplifier Settling Time + Holding Capacitor Charging Time + Temperature Coefficient
= TAMP + TC + TCOFF
Re: pic18f4550 adc et interruption diificulté
lundi 19 juin 2006 15:51:58
Salut,

Le temps d'acquisition est tres difficile a calculer, comme tu le remarques il dépend de différent parametre, dont la temperature... Donc tu ne pourras jamais donner une valeur exact, mais en faire l'approximation et dire que l'acquisition aura lieu au minimum tous les x µs si on se situe dans une temperature d'activité entre y et z degré...
Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 08:33:46
Bonjour
merci pour les explication concernant l'acquisition sino j'aimerais savoir vomment vous avez effetuer le test d'acquisition de l'adc comme j'ai vu sur votre site test d'ADC j'aimerais faire la meme chose et voire à quoi ressemble mon signal gbf à la sortie de la carte.
A premiére vu je vois que vous avez utilisé excel mais comment vous avez fait pour reccupérer les valeurs numérique de la conversion?

Merci de votre aide
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter