Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

PORTA du pic 18F258



  1. #1
    darklight62

    Smile PORTA du pic 18F258


    ------

    Bonjour,

    Je suis actuellement sur un projet sur un 18F258 que j'ai beaucoup avancé.
    Le projet est constitué d'une trame CAN en réception, une interprétation des données reçues et d'un envoi vers un motion controller et autres composants.
    Je gère les différents composants via un 74HCT138 (démultiplexeur).
    Les 3 broches (A, B, C) du démultiplexeur sont reliées au port A du pic (RA1, RA2, RA5).
    Sur ce même port A j'utilise AN0 en entrée analogique, le registre ADCON1 et réglé pour avoir seulement cette broche en entrée analogique.

    Ma question est là suivante (enfin), dans ma fonction gérant les différents composants, j'utilise des masques pour ne changer les autres états des pins du PIC (notamment sur le PORTC) :

    LATA=(PORTA&0x19)+0x26;

    Le problème est que mon projet demande une bonne gestion du temps (période de 10ms sur le bus CAN), hors pour communiquer avec mon motion controller, les temps avec cette méthode de masquage pour le démultiplexeur fait que certaines fonctions envoyées au motion controller dépassent la période du bus CAN.
    Puis-je mettre directement ce genre de code, puisque je n'ai que AN0 en entrée analogique?

    LATA=0x26;

    merci.

    -----

  2. Publicité
  3. #2
    RISC

    Re : PORTA du pic 18F258

    Salut,

    Tu devrais utiliser le PIC18F2580 plutôt que le PIC18F258 car le module CAN est je crois plus sophistiqué et il a moins de bogues.
    A quelle fréquence fais-tu tourner ton PIC18F258 ?
    Quelle est la valeur de ton quartz externe ?
    As-tu activé la PLL interne ?
    PEux-tu faire voir tes bits de configuration ?

    a+
    Ma marotte ? les microcontrôleurs ;=)

  4. #3
    Wankie panky

    Re : PORTA du pic 18F258

    Salut,

    Dans ton cas il peut être intéressant de regarder le code assembleur pondu par ton compilateur. Il y a de fortes chances pour que ton addition soit traduite par un bon paquet d'instructions asm (qui prennent du temps à s'executer).

    Si le pb viens de là tu peux remplacer ta ligne de masquage par un bout de code en assembleur du genre:

    Code:
    // ton programme en C
    
    _asm 
    BSF PORTA,1
    BSF PORTA,2
    BSF PORTA,5
    _endasm // la suite de ton programme en C

    Attention les directives pour indiquer le début et la fin du code asm peuvent changer avec le compilateur utilisé, il faut lire la doc

    A++

  5. #4
    RISC

    Re : PORTA du pic 18F258

    Salut Wanky,
    Citation Envoyé par Wankie panky Voir le message
    Si le pb viens de là tu peux remplacer ta ligne de masquage par un bout de code en assembleur du genre:

    Code:
    _asm 
    BSF PORTA,1
    BSF PORTA,2
    BSF PORTA,5
    _endasm
    Surtout ne fais JAMAIS cette succession d'instructions car tu tombes pil poil dans le mode RMW sur les ports...
    Si tu n'es pas persuadé, tu prends un oscillo et tu mets ta séquence dans une boucle et tu verras le résultat

    La seul séquence acceptable (et qui fonctionne) est celle la :
    Code:
    _asm 
    BSF LATA,1
    BSF LATA,2
    BSF LATA,5
    _endasm
    NB : ce n'est pas la solution de toute façon à conseiller à Darklight.

    a+
    Ma marotte ? les microcontrôleurs ;=)

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    Wankie panky

    Re : PORTA du pic 18F258

    En effet, autant pour moi

    C'est bien LATA qu'il faut utiliser !

  9. #6
    darklight62

    Re : PORTA du pic 18F258

    Merci pour vos réponses,

    RISC :

    Je ne peux pas utiliser un autre PIC, c'est une contrainte de développement, je suis au courant des problèmes posés par le 18F258 (lecture du errata), j'utilise donc le bus CAN en tâche de fond et non en interruption (car c'est en interruption que le CAN ne fonctionne pas).
    Mon pic tourne à une fréquence de 32 MHz avec la PLL activée, le quartz externe est un 8MHz.

    Voici les bits de configuration :
    _CONFIG_DECL (_OSCS_OFF_1H & _OSC_HSPLL_1H,
    _BOR_ON_2L & _PWRT_OFF_2L & _BORV_20_2L,
    _WDT_ON_2H & _WDTPS_128_2H,
    _DEBUG_OFF_4L & _LVP_OFF_4L & _STVR_ON_4L,
    _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L,
    _CPB_OFF_5H & _CPD_OFF_5H,
    _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L,
    _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H,
    _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L,
    _EBTRB_OFF_7H);

  10. Publicité

Discussions similaires

  1. PORTA/B/C/D/E et LAT/A/B/C/D/E
    Par pikoasis dans le forum Électronique
    Réponses: 1
    Dernier message: 02/06/2010, 13h15
  2. PORTA++ ne marche pas sur mon pic
    Par marvinc dans le forum Électronique
    Réponses: 4
    Dernier message: 22/05/2009, 16h38
  3. progammation 18f258
    Par chaine dans le forum Électronique
    Réponses: 4
    Dernier message: 17/06/2008, 14h18
  4. Pic 18f258
    Par tomtom18268 dans le forum Électronique
    Réponses: 9
    Dernier message: 21/04/2007, 17h55
  5. [PIC]PORTA en entrée?
    Par laminttikia dans le forum Électronique
    Réponses: 11
    Dernier message: 06/01/2007, 15h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.