1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Converstion simultané 2 voies DSPic et problemes de lecture

Discussion dans 'Electronique spécifique CNC' créé par marvinc, 29 Mars 2010.

  1. marvinc

    marvinc Nouveau

    Messages:
    15
    Inscrit:
    30 Octobre 2009
    Localité:
    Montbrison (42)
    Converstion simultané 2 voies DSPic et problemes de lecture
    bonjour,
    Je voudrais savoir si l'ADC de mon dspic30f4012 est bien paramétré pour un échantillonnage simultané :
    Code:
    void Setup_ADC(void)
    {
    	
    	//ADPCFG: A/D Port Configuration Register
    	ADPCFG = 0xFFFF;	//set all digital
    	_PCFG0 = 0;		//AN0 analog input
    	_PCFG1 = 0;		//AN1 analog input
    	
      
    	//ADCON1: A/D Control Register 1
    	ADCON1 = 0;		//clear register	A/D off
    	_FORM = 2;		//fractional 0 - 0.999 (2)
    	_SSRC = 2;		//timer 3 triger
    	_SIMSAM = 1;	//simultaneous sample
    	_ASAM = 1;		//Sampling begins immediately, SAMP bit is auto set
    	
    	//ADCON2: A/D Control Register 2
    	ADCON2 = 0;		//clear register
    	_VCFG = 0;		//VrefH = Avdd, Vref- = AVss
    	ADCON2bits.CHPS = 1;		//convert CH0 & CH1
    	   
    	//ADCON3: A/D Control Register 3
    	ADCON3 = 0;		//clear register
    	_ADRC = 0;		//use system clock (TCY = 34 ns)
    	_ADCS = 5;		//TAD min = 84ns => TCY * (ADCS + 1 ) /2 = 100ns
    	
    	//ADCHS: A/D Input Select Register
    	ADCHS = 0;		//clear register, all CHx- to Vref-
    	_CH0SA = 1;		//CH0 <- AN1
    	_CH123SA = 0;	//CH1 <- AN0, CH2-3 don't care	
    	
    	//ADCSSL: A/D Input Scan Select Register
    	ADCSSL = 0;		//clear register
    	
    	//A/D interrupt config
    	IFS0bits.ADIF = 0;		//clear ADC interrupt flag
    //	IEC0bits.ADIE = 1;		//enable A/D conversion interrupt
    
    	ADCON1bits.ADON = 1;    //Turn on A/D
    }
    et deuxiemement je n'arrive pas a copié le résultat fractional dans une variable fractional

    quelqu'un peut m'aider ?
     
  2. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Converstion simultané 2 voies DSPic et problemes de lecture
    salut,


    je n'ai jamais fait d'échantillonnage simultané sur 30F4012, (juste sur 33F, et encore juste pour tester) mais je pense qu'il te manque (au moins) le bit ALTS (ADCON2) à 1

    sinon tu as regardé le reference Manual de l'ADC? Et les codes examples de microchip?

    dernier point pour débugger, commence par un exemple simple qui a été testé et fonctionne (code example) et modifies le peu à peu. Tu verras l'influence de chaque paramètre et tu sauras aussi exactement où se situe le problème.


    Bonne soirée
    Max


    PS:si tu n'arrives pas à copier le résultat, c'est probablement que l'ADC n'a pas réussi de conversion.
    fractional est un typedef, en fait c'est une variable 16bits entière. (valeur fractionnaire = valeur int / 32768 ou 65536 si en non signé)
    Pour des valeurs entre 0-1 si je ne m'abuse il faut mettre unsigned fractional
    ça doit se trouver dans la doc compilateur ça.
     
  3. marvinc

    marvinc Nouveau

    Messages:
    15
    Inscrit:
    30 Octobre 2009
    Localité:
    Montbrison (42)
    Converstion simultané 2 voies DSPic et problemes de lecture
    salut Max,

    Meric pour les infos, apparement, mon pb d'échantillonnage vient de _ASAM = 1; car si je le met a 0
    (il faut que je le set a chaque fin d'interrupt ADC pour relancé le sample), les valeurs de buffers et de recopie sont identiques.
    Mais je vais creuser, sinon je comptais utilisé un FAN7384, entrée protection incorporé (un AOP en moins).

    Pour la lecture en fractional, je tenterais de forcer le format
    PID_SIN.mesuredOutput = (fractional)(ADCBUF0);

    Je regarde ça demain, je ferais des copies d'oscillo pour faire voir le projet.

    Thx
     
  4. marvinc

    marvinc Nouveau

    Messages:
    15
    Inscrit:
    30 Octobre 2009
    Localité:
    Montbrison (42)
    Converstion simultané 2 voies DSPic et problemes de lecture
    j'ai trouver en fait faut juste faire un décalage a droite ADCBUF0 >> 1
     
  5. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Converstion simultané 2 voies DSPic et problemes de lecture
    content d'avoir pu t'aider :wink:

    donc tout fonctionne bien maintenant?

    si tu peux poster ton source, ça pourrait m'être utile prochainement :wink:


    A+
    Max
     
  6. marvinc

    marvinc Nouveau

    Messages:
    15
    Inscrit:
    30 Octobre 2009
    Localité:
    Montbrison (42)
    Converstion simultané 2 voies DSPic et problemes de lecture
    pas de pb, me reste un probleme de temps de calcul ;

    uint_result = Fract2Float(fractional_Value) * uint_value; 11.7µs !! arg

    et je te poserais le projet. je risques d'avoir besoin d'aide pour l'interface UART et la sauveguarde en EEPROM.
     
  7. marvinc

    marvinc Nouveau

    Messages:
    15
    Inscrit:
    30 Octobre 2009
    Localité:
    Montbrison (42)
    Converstion simultané 2 voies DSPic et problemes de lecture
    salut, bon après quelques déboire de calcul,
    le pic monte a fstep =22kHz, mais quid de l'asservissement.

    voila une courbe en 1/256 ème de pas à fstep = 200Hz,
    Le PID est réglé a l'arrache, le pas a pas est un 9A, là je lui en autorise que 2.2A et l'alim est en 12V.

    je test quoi :)

    1.gif
     
Chargement...
Articles en relation
  1. esloch
    Réponses:
    9
    Affichages:
    557

Partager cette page