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

progammation 18f258



  1. #1
    chaine

    progammation 18f258


    ------

    Bonjour,

    j'ai quelque problème lors de ma programmation en C d'un 18f258.

    et je voudrai comment programmer correctement ces deux opérations

    PORTC = PORTC OR 0x04
    PORTC = PORTC AND 0x03

    il s'agit ici de faire mettre la sortie RC2 à 1 ou à 0 sans toucher à RC1 et RC0

    et je voudrai aussi savoir comment programmer un signal PWM.

    En vous remerciant par avance.

    -----

  2. Publicité
  3. #2
    invite03481543

    Re : progammation 18f258

    Citation Envoyé par chaine Voir le message
    je voudrai comment programmer correctement ces deux opérations

    PORTC = PORTC OR 0x04
    PORTC = PORTC AND 0x03

    il s'agit ici de faire mettre la sortie RC2 à 1 ou à 0 sans toucher à RC1 et RC0

    et je voudrai aussi savoir comment programmer un signal PWM.

    En vous remerciant par avance.
    Bonsoir,

    pour cela il faut faire un masque en faisant un OU:

    Par exemple si:

    PORTC= 0b00010001

    on veut affecter 1 à RC2 qui est actuellement à 0:

    PORTC= 0b00010001 | 0b00000100 -> PORTC=0b00010101

    Si tu veux affecter plusieurs sorties en même temps:

    PORTC=0b00010001 | 0b11000110 -> PORTC=0b11010110
    @+

  4. #3
    invite03481543

    Re : progammation 18f258

    Pour le PWM il faut utiliser un timer qui possède un module CCP.
    Le principe est de fixer une période c'est à dire un temps pendant lequel le timer va compter.
    Par exemple de 0 à 65535 pour un 16 bits.
    Lorsque ce temps est atteint on détecte un "flag" (drapeau) qui signale que le compteur déborde et il reprend son comptage à 0.

    On affecte une sortie à 1 dès que le compteur démarre son comptage et on charge dans le module CCPx (en mode comparaison) une valeur limite qui activera un autre flag dès que le compteur aura atteint cette valeur.
    Dès la détection de ce flag on mettra à 0 la sortie qui restera à 0 tant que le compteur n'aura pas fini son comptage jusqu'au bout de la période prédéfinie, etc.

    Pour résumer:

    il faut définir une période de comptage en chargeant une valeur dans le timer, définir une limite qui sera le rapport cyclique du signal en chargeant une valeur dans le registre de comparaison CCPx, puis surveiller si une interruption survient qui indique dans ce cas qu'il y a concordance et effectuer une action sur la sortie sensée produire le signal PWM.
    En modifiant la valeur contenue dans le registre CCPx tu moduleras la valeur du rapport cyclique puisque les évènements de coincidences se produiront à des temps différents.

    Timer:0------------------65535-0-------------------65535-0---
    CCPx:0--------X--------65535-0---X--------------65535-0---

    RCx::_|******|____________|*** |______________|**


    Le PIC16F877 par exemple possède 3 timers et 2 CCPx (CCP1 et CCP2).
    Je t'invite à aller jetter un oeil sur un exemple d'application que j'ai posté il y a quelques temps dans le sous forum "projets":

    http://forums.futura-sciences.com/thread206163.html

    Le programme est suffisamment commenté pour que tu retrouves le principe que j'ai évoqué ci-dessus.
    @+

  5. #4
    RISC

    Re : progammation 18f258

    Bonsoir chaine,

    Quel compilateur utilises-tu ? Le C18 ?
    La dernière version gratuite est ici (student edition) : www.microchip.com/C18

    1/ Commande des broches en SORTIE
    Microchip recommande absolument d'utiliser LATx plutot que PORTx en SORTIE pour éviter certains phénomènes sur les ports lorsque l'on travaille vite.

    2/ ET et OU sur les broches de sortie
    Les PIC18 possèdent des instructions de manipulations de bit donc au lieu de faire des OU et des ET au niveau logiciel, il te suffit d'utiliser les définitions existantes dans le fichier header 18F258.h fourni avec le compilateur C18.
    Pour n'importe quel registre, tu peux utiliser la notation suivante :
    LATAbits.LAT0 = 1 ; // mettre le bit 0 du PORTA à 1 sans toucher aux autres bits
    LATCbits.LAT5 = 0 ; // mettre le bit 5 du PORTC à 0 sans toucher aux autres bits

    3/ PIC18F2580 versus PIC18F258
    Microchip recommande de ne plus utiliser le PIC18F258 pour les nouveaux projets car il a été remplacé par le PIC18F2580 qui possède plus de fonctionalités et coute moins cher.

    Pour les PIC18 tu pourras trouver des exemples de code ici : www.microchip.com/codeexamples

    a+

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

    Re : progammation 18f258

    Salut,

    Je vous remercie pour les info !

    par contre le pwm j'arrive toujours pas....
    mon soucis c'est surtout la programmation... je ne sais pas du tout programmer le timer pour qu'il déclenche la pwm.

    quelqu'un pourrai me donner un exemple simple (voir très simple) de programmation pwm comme l'a énnoncé hulk

    Timer:0------------------65535-0-------------------65535-0---
    CCPx:0--------X--------65535-0---X--------------65535-0---

    RCx::_|******|____________|*** |______________|**
    hulk pour ton projet... mouai vite fait :/
    toi tu joue sur la rapport cyclique, moi c'est la variable de CCPx qui me donne mon rapport cyclique

Discussions similaires

  1. progammation du pic 12c672
    Par johnc dans le forum Électronique
    Réponses: 2
    Dernier message: 15/02/2008, 08h33
  2. Pic 18f258
    Par tomtom18268 dans le forum Électronique
    Réponses: 9
    Dernier message: 21/04/2007, 17h55
  3. progammation en C d'un jeu de billard
    Par acx01b dans le forum Logiciel - Software - Open Source
    Réponses: 46
    Dernier message: 04/11/2004, 21h01
Découvrez nos comparatifs produits sur l'informatique et les technologies.