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

Recherche avancée

pic18f4550 adc et interruption diificulté

Envoyé par mick 
Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 09:55:27
Quote

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?

J'ai tout simplement écrit un programme en delphi qui fait des acquisition puis j'ai copié les valeurs dans excel... Tu peux aussi tout simplement généré depuis le logiciel un fichier cvs et l'importer dans excel ça va encore plus vite

Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 10:29:44
bonjour
vous parlez de quel logiciel pour creer un fichier cvs??
Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 11:52:25
D'aucun logiciel.... Dans le programme que tu fais pour communiquer avec ta carte, il te suffit d'ajouter quelque ligne qui enregistre les valeurs reçue dans un fichier et que ça soit mis en forme d'un fichier cvs et ça ira tout seul winking smiley
Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 12:10:59
Ah oki Mais ce que mon logiciel indique c'est ca:

le buffer 0 vaut 255 0 0 34 1 36 1 19 1 89 0
le buffer 1 vaut 255 0 3 255 3 164 3 126 2 15 3
le buffer 2 vaut 255 0 3 255 3 163 3 127 2 15 3
le buffer 3 vaut 255 0 3 255 3 165 3 129 2 15 3
le buffer 4 vaut 255 0 0 35 0 38 0 33 0 23 0
le buffer 5 vaut 255 0 0 35 0 36 0 33 0 23 0
le buffer 6 vaut 255 0 0 35 0 33 0 32 0 22 0
le buffer 7 vaut 255 0 3 255 3 157 3 124 2 16 3

Chaque colonne correspond à un buffer d'ou j'utilise 11 buffer et la premiere colonne , le buffer 0, est par defaut initialisé à 255.
Mais par contre c'est valeur sont des valeurs qui ne correpondent pas à celui du signal envoyé par mon gbf, j'ai pensé qu'il faut effectue des conversion mais je ne sais pas, il y a t-il une formule pour ce la??

sino le signal envoyé :
signal triangulaire,TTL 5V,100Hz

Ps: Je sais pas trop si je vous embete avec toute mes questions.

Merci



Modifié 2 fois. Dernière modification le 20/06/06 12:15 par mick.
Re: pic18f4550 adc et interruption diificulté
mardi 20 juin 2006 16:29:24
Quote

Mais par contre c'est valeur sont des valeurs qui ne correpondent pas à celui du signal envoyé par mon gbf, j'ai pensé qu'il faut effectue des conversion mais je ne sais pas, il y a t-il une formule pour ce la??


regarde dans le programme d'interface de la carte hid sur ce site, je montre comment convertir un nombre hexa codé en 10 bits en valeur décimal 0-5volt...
Re: pic18f4550 adc et interruption diificulté
mercredi 21 juin 2006 08:04:28
oki merci bien
sino encore une truc qui me chagrine si on prend ds mon tableau le buffer 1:

le buffer 1 vaut 255 0 3 255 3 164 3 126 2 15 3

je remarque que j que trois point au niveau de la conversion par exemple
la j 3 255 3, deux niveau bas et un niveau haut et ce que ca serait possible d'augmenter ces points?
Et j'ai l'impression que ca ne correspond pas à ce que j'envoi je pense que mon adc fonctionne mal à quoi faut faire attention pour que le adc fonctionne correctement j'ai vu dans votres site qu'il faut faire attention à la tension de référence.
pour ce la j'ai mi ADCON1bits.VSFGO = 1;

Ce que j'ai lu dans data sheet page 262:

bit 5 VCFG0: Voltage Reference Configuration bit (VREF- source)
1 = VREF- (AN2)
0 = VSS
bit 4 VCFG0: Voltage Reference Configuration bit (VREF+ source)
1 = VREF+ (AN3)

Est ce que c'est correct ce que j'ai fait?
Merci



Modifié 1 fois. Dernière modification le 21/06/06 09:22 par mick.
Re: pic18f4550 adc et interruption diificulté
mercredi 21 juin 2006 10:26:05
Tu as mis quoi sur AN2...

Et si tu essayais avec les bits de configuration tel que c'est présenté sur ce site, tu verrais peut-être directement d'ou vient le probleme, vu que le code a été testé et qu'on connait le type de résultat... le plus simple pour trouver les erreur c'est de remplacé les parties ou l'on a un doute par quelque chose dont on est sur..
Re: pic18f4550 adc et interruption diificulté
mercredi 21 juin 2006 10:53:56
Bonjour je vous montre mon fichier user.c la ou se user int et ProcessIO:

void UserInit(void)
{
int i;
for (i=0 ; i< DEVICE_RETURNDATA_SIZE ; i++)
buffer = 0;
TRISD = 0x00;
TRISA = 0xFF;
TRISAbits.TRISA5 = 1; // Pin 5 input
TRISBbits.TRISB6 = 0; // pin 0 output
ADCON1 = 0b00001011;
ADCON0 = 0x01; // AD Control Register 1: Enable (turn on ADC)
ADCON2 = 0x3C;// AD Control Register 2: 20 TAD (accuracy), FOSC 4 (freq/4)
ADCON2bits.ADFM = 1; // ADC result right justified
ADCON0bits.ADON = 1;

ADCON2bits.ACQT2 = 0;
ADCON2bits.ACQT1 = 0;
ADCON2bits.ACQT0 = 1;

ADCON2bits.ADCS0 = 1;
ADCON2bits.ADCS1 = 1;
ADCON2bits.ADCS2 = 1;

OSCCONbits.SCS1 = 1; //internal oscillator
OSCCONbits.SCS0 = 1;

OSCCONbits.IRCF2 = 1; //8Mhz
OSCCONbits.IRCF1 = 1;
OSCCONbits.IRCF0 = 1;

OSCTUNEbits.TUN4 = 1;
OSCTUNEbits.TUN3 = 0;
OSCTUNEbits.TUN2 = 0;
OSCTUNEbits.TUN1 = 0;
OSCTUNEbits.TUN0 = 0;
OSCTUNEbits.INTSRC = 1;
// UCFGbits.FSEN = 1; //vitesse max active, horloge interne doit etre à 48 Mhz
}

********************************************
**********************************************
void ProcessIO(void)
{
unsigned int i,j;
if((usb_device_state < CONFIGURED_STATE)||(UCONbits.SUSPND==1)) return;
// User Application USB tasks
INTCONbits.GIE=0;
ADCON0bits.GO = 1;
ADCON0bits.CHS0 = 0; // Start AD Conversion on Channel 0
while (ADCON0bits.NOT_DONE); // Wait for conversion
buffer[0] = ADRESH; // 10 bits of conversion of pixel_1
buffer[1] = ADRESL;

ADCON0bits.GO = 1;
ADCON0bits.CHS0 = 1; // Start AD Conversion on Channel 1
ADCON0bits.CHS1 = 0;
while (ADCON0bits.NOT_DONE); // Wait for conversion
buffer[2] = ADRESH; // 10 bits of conversion of pixel_1
buffer[3] = ADRESL;

ADCON0bits.GO = 1;
ADCON0bits.CHS0 = 0; // Start AD Conversion on Channel 2
ADCON0bits.CHS1 = 1;
while (ADCON0bits.NOT_DONE); // Wait for conversion
buffer[4] = ADRESH; // 10 bits of conversion of pixel_1
buffer[5] = ADRESL;

ADCON0bits.GO = 1;
ADCON0bits.CHS0 = 1; // Start AD Conversion on Channel 3
ADCON0bits.CHS1 = 1;
while (ADCON0bits.NOT_DONE); // Wait for conversion
buffer[6] = ADRESH; // 10 bits of conversion of pixel_1
buffer[7] = ADRESL;

ADCON0bits.GO = 1;
ADCON0bits.CHS0 = 0; // Start AD Conversion on Channel 4
ADCON0bits.CHS1 = 0;
ADCON0bits.CHS2 = 1;
while (ADCON0bits.NOT_DONE); // Wait for conversion
buffer[8] = ADRESH; // 10 bits of conversion of pixel_1
buffer[9] = ADRESL;



if(!mHIDTxIsBusy()) // Check if USB is busy?
{
HIDTxReport(buffer, DEVICE_RETURNDATA_SIZE); // Send USB data.
PORTD = 0x08;
INTCONbits.GIE=1;
}

}


Si il ya des erreurs pouvez vous me les indiquez surtout dans la config de userinit car je ne suis pas sur j'ai fais tout ca parrapport au data sheet, personne n'as vérfié donc je ne suis pas sur.
Merci.



Modifié 1 fois. Dernière modification le 21/06/06 10:58 par mick.
Re: pic18f4550 adc et interruption diificulté
samedi 24 juin 2006 19:20:44
Bonjour.
J'ai modifié mon userinit par celui qui se trouve dans votre site mais je ne vois poas de changement au niveau de l'adc.
Vous Parlez de AN2 et je ne sais pas ou c'est configurer?
Merci
Re: pic18f4550 adc et interruption diificulté
samedi 24 juin 2006 21:00:10
Bon alors,

Le adcon 0 c'est pour lancer la conversion -> pas de configuration a proprement dit...

adcon2 te permet de configurer quels sont les entrées analogique et ou sont les tension de référence... pour commencer met tout à 0

adcon3 c'est pour les histoire de temps d'acquisition donc on s'en fout

Ensuite vérifie que ton port trisa est bien a 255


Mais bon ici comme je vois tu as ta tension de référence sur vdd et vss donc on s'en fout de ce qui y'a sur an2


Quand tu mets une tension continue il t'envoie quoi??? tout le temps la meme valeur ou une valeur qui différe? dans quel proportion?? tu saurais faire un graphique???
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter