[Programmation] PIC18F et DMA (pic18f25K42)
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

PIC18F et DMA (pic18f25K42)



  1. #1
    OliG

    PIC18F et DMA (pic18f25K42)


    ------

    Bonjour,

    Je souhaite apprendre le fonctionnement de la DMA sur les microcontrôleurs PIC18F j'utilise un PIC18F25K42 pour les essaies ...
    J'utilise le code d'exemple ( TB3164 microchip ).

    Mais cela ne fonctionne pas ( dans le simulateur et en mode debug avec ICD3)

    voici le code :

    Code:
    #include <xc.h>
    #include <stdint.h>
    uint8_t Array1[10];
    uint8_t Array2[10];
    uint8_t i;
    void main(void)
    {
    //Initialize the Arrays
    for(i=0; i<10 ; i++)
    {
    Array1[i] = i+1;
    Array2[i] = 0;
    }
    //Initialize DMA1
    DMA1SSA = (uint16_t) Array1; //Set source start address
    DMA1DSA = (uint16_t) Array2; //Set destination start address
    DMA1CON1bits.SMR = 0b00; //Choose GPR space as source memory
    DMA1CON1bits.SMODE = 0b01; //Increment source address on each transaction
    DMA1CON1bits.DMODE = 0b01; //Increment destination address on each transaction
    DMA1SSZ = 0x0A; //Set 10 bytes for source size
    DMA1DSZ = 0x0A; //Set 10 bytes for destination size
    DMA1CON1bits.SSTP = 0b0; //Clear source reload stop bit
    DMA1CON1bits.DSTP = 0b1; //Set destination reload stop bit
    DMA1CON0bits.DMA1SIRQEN = 0b0; //Source Trigger is not allowed to start DMA transfer
    // Use default priority level
    // Lock priority to grant memory access
    asm ("BANKSEL PRLOCK");
    asm ("MOVLW 0x55");
    asm ("MOVWF PRLOCK");
    asm ("MOVLW 0xAA");
    asm ("MOVWF PRLOCK");
    asm ("BSF PRLOCK, 0");
    DMA1CON0bits.DMA1EN = 1; //Enable DMA
    DMA1CON0bits.DMA1DGO = 1; //Start Transfer
    while (0 == PIR2bits.DMA1DCNTIF){} //Wait after message transfer completed
    while(1);
    }
    Le programme reste indéfiniment sur le test de bit PIR2bits.DMA1DCNTIF ....
    sans modifier aucune valeur du tableau Array2

    avez vous une expérience ou une idée, c'est la première fois que j'utilise la DMA.

    Merci d'avance.

    -----
    Dernière modification par gienas ; 20/04/2017 à 14h17. Motif: Ajouté les balises code obligatoires pour les programmes

  2. #2
    RISC

    Re : PIC18F et DMA (pic18f25K42)

    Salut,

    Oublie le simulateur....pour ce genre de fonction (DMA) il faut utiliser du vrai hardware.
    Peux-tu montrer ton schéma ?
    La note d'application TB3164 montre aussi la programmation de tous les bits de configuration ceque tu n'as pas fait dans ton code...

    Je pense que dans un premier temps tu devrais utiliser le code proposé dans la TB3164 sans le modifier pour vérifier si cela fonctionne
    Quelles versions de XC8 et de MPLAB X utilises-tu ? le PIC18F25K42 est très récent, je suppose qu'il faut absolument avoir les dernières versions...

    a+

  3. #3
    OliG

    Re : PIC18F et DMA (pic18f25K42)

    J'utilise les toutes dernières version
    - MPLAB 3.60
    - XC8 1.41

    j'ai programmé les bits de configuration a l'identique a l'exemple ( TB3164 )

    Je test de façon hardware avec un ICD3.
    Le pic est alimenté en 5V
    pas de quartz , et aucune E/S raccordé. (électroniquement dans la plus simple expression)

    j'ai testé avec une autre horloge (quartz) cela ne change rien.

    Lors du déroulement en mode pas a pas les bits évoluent correctement quand je regarde les bits via ICD3.


    J'utilise exactement la configuration des bits de l'exemple.
    Et le code du programme aussi issu de l'exemple TB3164.

    Mais cela ne fonctionne pas, et je reste bloqué au test de bit "while (0 == PIR2bits.DMA1DCNTIF)"
    Et aucun transfert ...
    J'ai testé d'autre fonction simple aucun problème (timer, interruption ... etc).

    Mais sinon, effectivement ces modèles de pic sont très récent.
    Dernière modification par OliG ; 21/04/2017 à 01h57.

  4. #4
    OliG

    Re : PIC18F et DMA (pic18f25K42)

    Voila, ça fonctionne maintenant parfaitement maintenant ...
    j'étais resté sur le simulateur ... et pas sur le ICD ... (fatigue !!!)

    Merci pour la remarque RISK (simulateur)

    De belle chose en perspective avec la DMA sur 8 bits

    @+

  5. A voir en vidéo sur Futura
  6. #5
    OliG

    Re : PIC18F et DMA (pic18f25K42) - Compilation mode PRO

    Autre probleme ....

    Quand je compile XC8 en mode FREE ça fonctionne parfaitement
    Quand je bascule en mode PRO cela ne fonctionne plus !!!

    ???

  7. #6
    RISC

    Re : PIC18F et DMA (pic18f25K42)


Discussions similaires

  1. [pic18f] - pwm
    Par invite543be3c5 dans le forum Électronique
    Réponses: 12
    Dernier message: 14/08/2012, 13h48
  2. Cna pic18f
    Par inviteec8d8fa2 dans le forum Électronique
    Réponses: 8
    Dernier message: 20/02/2012, 22h19
  3. pic18f
    Par nirvo dans le forum Électronique
    Réponses: 10
    Dernier message: 01/07/2010, 09h15
  4. bug sur pic18f ???
    Par dam74 dans le forum Électronique
    Réponses: 1
    Dernier message: 30/09/2006, 08h47
  5. Pic18f Adc
    Par invitecfe43b36 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/07/2006, 14h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.