[Programmation] register initialisation
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

register initialisation



  1. #1
    krmuvx

    register initialisation


    ------

    Bonjour
    Je bute sur un truc stupide...
    J’utilise un PIC16F18855 ( monté sur une carte MPLABexprexx)
    Je suis en train de me battre avec le Timer0.
    Pour initialiser le Timer0 du PIC ( et c'est pareil pour le Timer2..) , il y a la possibilité d'initialiser les regitsres
    avec MCC installé, on a effectivement accès a deux fenêtres ( easy view et register initialisation)
    La fenêtre easy view permet une préselection rapide ( choix 8/16 bits du registre, choix de la souce horloge..et diverses autres selections.
    la fenêtre register initialisation donne acces aux deux registes 8 bits TMR0H et TMR0L...et c'est la que ca se gate, car aucun moyen de changer la valeur qui reste fixée a zero alors que l'on dispose de deux fleches haut et bas pour incrementer/decrementer la valeur

    Du coup, j'ai essayé avec le timer 2...et c'est pareil...la fonction register initialisation ne donne rien

    Il faudra, par soft, forcer ces valeurs dans le main.c
    QQun a déjà rencontré cette difficulté ?
    merci d'avance pour tout tuyau

    -----

  2. #2
    luc_1049

    Re : register initialisation

    Bonjour
    Que dit le databook, est ce possible au moins ?
    Cdlt

  3. #3
    paulfjujo

    Re : register initialisation

    bonjour,

    27.1 Timer0 Operation
    ......
    27.1.1.1 Timer0 Reads and Writes in 16-Bit Mode
    ....
    Similarly, a write to the high byte of Timer0 must also
    take place through the TMR0H Buffer register. The high
    byte is updated with the contents of TMR0H when a
    write occurs to TMR0L. This allows all 16 bits of Timer0
    to be updated at once.

    je comprends qu'on ne peut prépositionner directement TMR0H .....
    ...que par via le programme d'application
    . me trompe_je ?

    par contre, en mode 8 bits ,cela parait possible.

  4. #4
    krmuvx

    Re : register initialisation

    Je pense que je m'y prend mal...
    J'essaye autre chose , cette fois ci avec le timer2

    Disons que j'essaye de faire , sur une broche (RA0 ou RA1 du PIc16F18855...j'ai verifié c'est possible, un signal de 1Khz, donc une periode = 1ms
    L'horloge appliquée au timer est Fosc/4 qui, a partir de l'horloge principale a 1MHZ ( tirée elle meme du 4Mhz/4 )...c'est donc du 250Kz, donc T = 4us.
    Pas de Pre ou postscaler...D'apres le calcul, il suffit de 250 coups d'hologe a 4us pour faire du 1khz...( en fait 249 coups d'horloge a cause du decalage de 1...).
    Tout ca fait avec MCC...

    je prévoie donc , dans le main.c pour que 256 -7 = 249 ticks de 4us
    TMR2 = 7 ;
    TMR2IE = 1; //validation de l'IT
    GIE =1;
    PEIE =1;
    TMR2ON = 1; // lancement du timer

    Eh ben , pas moyen d'avoir la bonne freqeunce......a l'oscillo j'ai 140us a la place !!!
    Pige pas ou je coince

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

    Re : register initialisation

    j'ai oublié, dans la config
    T2CON = 0b10000000; // pas de pre/postscaler et lancer le timer

  7. #6
    paulfjujo

    Re : register initialisation

    FOSC/4=1MHz

    Code:
    Find actual Freq / Period			PWM Period = (PR2 + 1) * 4 * 1 / Fosc * TMR2_PSC				
    Period=	1		1000.0000	nS			
    PR2	249						
    Fosc	1		1	MHz			
    TMR2_PreSC	1						
    Freq	1 000  	Hz	1.000	khz	1000	µS
    ne pas confondre TMR2 et PR2
    PR2 sert à definir la periode donc frequence

  8. #7
    krmuvx

    Re : register initialisation

    Oui...je me sui mélangé les pinceaux...
    Tout est en train de rentrer dans l'ordre...et merci pour ta remarque !!!

  9. #8
    krmuvx

    Re : register initialisation

    Je coince encore sur un truc.
    En faisant le meme calcul, ca marche dans un cas et pas dans l'autre

    Exemple: pour un delai de 1ms, avec une horloge Fosc = 1Mz donc Fosc/4 = 250kz ( T = 4us )
    MCC dit que la valeur PR2 = 249
    Par calcul PR2 +1= a charger250...Normal, il faut 250 periodes de 4us pour faire 1ms
    du coup , la valeur a charger dans TMR2=7..
    Un compteur qui demparre a 7 et qui recoit 249 T de 4us compte bien 256
    Effectivement, a l'oscillo tout est OK

    Par contre, le meme calcul pour un delai de 500us ne sort rien
    MCC dit que PR2 = 124
    le calcul dit que la valeur a charger dansTMR2 = 132

    Meme raisonnement...Un compteur chargé a 132 qui recoit 124 T de 4us var bien jusqu'a 256 !!! (124+132=256)
    a l'oscillo, rien sur la sortie!!!

  10. #9
    paulfjujo

    Re : register initialisation

    bonsoir,

    le Timer2 fonctionne en auto reload, contrairement aux autres timers 16 bits
    le registre TMR2 est un registre de travail ...
    il repasse à zero des qu'il atteint la valeur de PR2

    ne touche pas à TMR2 ..ou mets le à zero à l'initialisation
    PR2=124 TMR2=0 500µS Freq=2Khz
    ne pas oublier Timer2 ON !

    Tu n'a pas dit dans quel contexte tu voulais utiliser le timer 2 ?
    Dernière modification par paulfjujo ; 29/12/2022 à 19h53.

  11. #10
    krmuvx

    Re : register initialisation

    Bon...j'ai trouvé mes erreurs...
    Confusion entre PR2 et Periode register d'ou salade !!!
    Maintenant tout baigne

    Ce que je suis en train de bidouiller ?
    Un testeur de bobines !!
    Pour cela, il faut gerer une frequence allant de 5 a 50hz ( piloté par un premier potentiometre..) qui varie linéairement
    Il me faut donc un ADC ( incorporé dans le PIC...marche nickel)
    Un deuxieme potentiometre va regler le rapport cyclique a partir de 5ms par pas de 0,2 ms
    Comme cela, je vais voir ( sonde a effet hall..) dans le primaire quelle est la self de la bobine et surtout, quelle est la valeur max du courant magnétisant ( quand la bobine tend a se saturer..)

    J'ai donc besoin de 2 timers , un ADC et deux potards externes
    Mon pb, c'est que je ne suis pas bien équipé...seulement un vieil oscillo Hameg

    Maintenant que j'ai l'esprit clair coté Timer, je me lance dans la gestion des IT....

    A plus
    K

Discussions similaires

  1. [Programmation] Modbus : Coil ou register ?
    Par invitea3aa0b45 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/10/2016, 15h30
  2. Réponses: 3
    Dernier message: 26/08/2012, 14h32
  3. Pc Tools Register Mechanic
    Par Jon83 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 1
    Dernier message: 11/05/2011, 16h32
  4. Usb Address Register
    Par invitec1317d72 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/04/2008, 14h43
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...