[Programmation] Le pic12f629
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Le pic12f629



  1. #1
    terrdala

    Question Le pic12f629


    ------

    Bonjour,

    J'ai récemment un petit projet de PIC a faire et n'ayant besoin que de 2 ou 3 I/O sur le PIC j'ai décider de choisir le 12F629 pour sont OSC interne.

    Alors j'ai comprit comment programmer tous les registre c'est pas le soucis.

    Ce que j'ai du mal c'est la base des registres mis sur PAGE0 et PAGE1.

    A chaque configuration d'un registre choisis doit-je spécifier la page en question? Puis-je utilisé tous les registres ou c'est soit la PAGE0 ou la PAGE1?

    Cordialement.

    Voici le DataSheet : http://daniel.menesplier.free.fr/Doc/PIC%2012F629.pdf

    -----
    <<La détermination mène a la satisfaction>>

  2. #2
    antek

    Re : Le pic12f629

    Disons plutôt bank 0 et bank 1.
    Pour écrire ou lire dans un registre il faut l'adresser.
    RP0 fait partie des bit adresse, c'est tout.

    J'ai bien répondu ?

  3. #3
    terrdala

    Re : Le pic12f629

    Tient salut antek ça va?

    Oui je vois,pas l'habitude d'avoir un DataSheet in French lol.

    Moi j'ai jamais utilisé les Bank.

    Quand je veux paramétrer un registre en C je met : par exemple : CMCON = 0b0000011.Quand tu fait ça tu fait quoi tu écrit dans le registre?
    <<La détermination mène a la satisfaction>>

  4. #4
    antek

    Re : Le pic12f629

    Citation Envoyé par terrdala Voir le message
    Tient salut antek ça va?

    Oui je vois,pas l'habitude d'avoir un DataSheet in French lol.

    Moi j'ai jamais utilisé les Bank.

    Quand je veux paramétrer un registre en C je met : par exemple : CMCON = 0b0000011.Quand tu fait ça tu fait quoi tu écrit dans le registre?
    Ben je connais pas de datasheet en français !
    Connais pas le C, mais ça doit être ça !
    Tu écris dans CMCCON si RP0 est à 0, mais dans WRCCON si RP0 est à 1.
    Le bit RP0 fait partie de l'adresse.

    EDIT Pourquoi tu écris 7 bit ?
    Dernière modification par antek ; 04/07/2016 à 17h57.

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

    Re : Le pic12f629

    Si je prend exemple pour le REGISTRE INTCON Tu a 8 bit pour le configurer.Chaque bit représente une option a activée ou pas.

    Donc si je veux autoriser les interruptions et activé le TMR0 par exemple j’écrirais INTCON = 0b10100000. (GIE = bit 7 et T0IE le bit 5)

    Alors on pourrais le mettre en hexadécimale mais je ne le connais pas par cœur et le temps de faire la conversion pour le mettre quand j'écrit un code je me situe mieux avec le binaire.

    Mais je comprend toujours pas a quoi sert RP0 ou RP1,qu'écrit tu dans un registre? Car configurer et écrire sont 2 choses différente non?

    Moi ce que je fait en tapant INTCON = 0bxx.... c'est l'initialisation du registre,sa configuration pour utilisé ces option.
    <<La détermination mène a la satisfaction>>

  7. #6
    antek

    Re : Le pic12f629

    Citation Envoyé par terrdala Voir le message
    Si je prend exemple pour le REGISTRE INTCON Tu a 8 bit pour le configurer.Chaque bit représente une option a activée ou pas.
    Donc si je veux autoriser les interruptions et activé le TMR0 par exemple j’écrirais INTCON = 0b10100000. (GIE = bit 7 et T0IE le bit 5)
    Alors on pourrais le mettre en hexadécimale mais je ne le connais pas par cœur et le temps de faire la conversion pour le mettre quand j'écrit un code je me situe mieux avec le binaire.
    Mais je comprend toujours pas a quoi sert RP0 ou RP1,qu'écrit tu dans un registre? Car configurer et écrire sont 2 choses différente non?
    Moi ce que je fait en tapant INTCON = 0bxx.... c'est l'initialisation du registre,sa configuration pour utilisé ces option.
    Moi j'écris aussi en binaire, ça visualise mieux je trouve (d'autres pas . . .).
    On configure un module ou une fonction en écrivant dans ses registres associés.
    En écrivant dans le registre T1CON tu configures le timer1.

    Lorsque dans le programme le compilateur trouve T1CON il le traduit par son adresse qui correspond à ce qui a été définit dans le fichier .inc du µC.
    Mais cette adresse est incomplète, il lui manque le bit de poids fort pour couvrir la totalité de la mémoire adressable.
    Et ce bit de poids fort est RP0.
    Donc si tu écris T1CON alors que RP0 est à 1, en réalité tu adresses le registre OSCCAL.
    Donc pour T1CON il faut mettre RP0 à 0.
    Re-donc il faut vérifier RP0 lors de l'adressage des registre spéciaux, et aussi de la mémoire utilisateur.
    Regarde dans le datasheet (en anglais !) à "instruction set summary" et "adressing modes".
    Dernière modification par antek ; 04/07/2016 à 20h35.

  8. #7
    terrdala

    Re : Le pic12f629

    Citation Envoyé par antek
    Lorsque dans le programme le compilateur trouve T1CON il le traduit par son adresse qui correspond à ce qui a été définit dans le fichier .inc du µC.
    Mais cette adresse est incomplète, il lui manque le bit de poids fort pour couvrir la totalité de la mémoire adressable.
    Et ce bit de poids fort est RP0.
    Donc si tu écris T1CON alors que RP0 est à 1, en réalité tu adresses le registre OSCCAL.
    Donc pour T1CON il faut mettre RP0 à 0.
    Et si je fait T1CON = 0bxxxxx.... pour le paramétrer ça marche aussi non?
    <<La détermination mène a la satisfaction>>

  9. #8
    Gérard

    Re : Le pic12f629

    Citation Envoyé par terrdala Voir le message
    Et si je fait T1CON = 0bxxxxx.... pour le paramétrer ça marche aussi non?
    Oui ça marche, le compilateur sait quel registre se trouve dans quelle bank et il fait ce qu'il faut.
    Maintenant, pour gagner un peu d'espace mémoire, initialise tous les registres bank0 en même temps puis les registres bank1. Ca évite au compilateur de changer tout le temps de bank ce qui prend du temps et de l'espace mémoire.
    Pour t'en convaincre, fais un essai où tu fais comme je le dis, un autre essai où tu mélanges les registres des 2 bank et tu regardes l'asm que ça donne.

  10. #9
    antek

    Re : Le pic12f629

    Citation Envoyé par terrdala Voir le message
    Et si je fait T1CON = 0bxxxxx.... pour le paramétrer ça marche aussi non?
    Si RP0 est à 1 ça ne marche pas !
    Re : Donc si tu écris T1CON alors que RP0 est à 1, en réalité tu adresses le registre OSCCAL.
    Des explications ici, cours 1 : http://www.abcelectronique.com/bigonoff/
    Le principe est le même pour les 16f84.

  11. #10
    Gérard

    Re : Le pic12f629

    Citation Envoyé par antek Voir le message
    Si RP0 est à 1 ça ne marche pas !
    Re : Donc si tu écris T1CON alors que RP0 est à 1, en réalité tu adresses le registre OSCCAL.
    Des explications ici, cours 1 : http://www.abcelectronique.com/bigonoff/
    Le principe est le même pour les 16f84.
    Valable en assembleur. Un compilateur fera le nécessaire.

  12. #11
    antek

    Re : Le pic12f629

    Citation Envoyé par Gérard Voir le message
    Valable en assembleur. Un compilateur fera le nécessaire.
    Pas assez tordu pour moi le C . . .
    Merci !

  13. #12
    Gérard

    Re : Le pic12f629

    Citation Envoyé par antek Voir le message
    Pas assez tordu pour moi le C . . .
    Merci !
    Trop tordu pour moi, je m'amuse en Basic.

  14. #13
    terrdala

    Re : Le pic12f629

    Citation Envoyé par Gérard
    Maintenant, pour gagner un peu d'espace mémoire, initialise tous les registres bank0 en même temps puis les registres bank1. Ca évite au compilateur de changer tout le temps de bank ce qui prend du temps et de l'espace mémoire.
    Hey gérard ça fait un bail.

    Je vois ce que tu veux dire.Comme je le fait moi revient a utilisé un mode automatique de sélection de bank,je ne savais pas du tous.

    Je suppose que la différence de rapidité n'est pas significative si le programme est tous petit?

    Mais je pense que je devrais étudier l'adressage des registres.J'ai toujours procéder en écrivant le nom du registre puis je paramètre directement chaque bit associer au registre,je sais même pas pourquoi.

    Je vois des tuto sur le net qui font ça alors je l'ai fait.
    <<La détermination mène a la satisfaction>>

  15. #14
    Gérard

    Re : Le pic12f629

    Tu regardes la datasheet, on y voit quels registres se trouvent dans quelle bank. Tu initialises tous les registres bank1 puis les registres bank0.
    Bank1 en 1er parce que c'est là que se trouve les registres TRIS qu'il vaut mieux configurer avant PORT.

  16. #15
    terrdala

    Re : Le pic12f629

    Citation Envoyé par Gérard
    Tu regardes la datasheet, on y voit quels registres se trouvent dans quelle bank. Tu initialises tous les registres bank1 puis les registres bank0.
    Bank1 en 1er parce que c'est là que se trouve les registres TRIS qu'il vaut mieux configurer avant PORT.
    D'accord je vois.

    Et si j'initialise les registres comme je fait (INTCON = 0b00000000) mais que les registres son initialisé dans l'ordre des bank.

    Ce qui fait qui ne changeras pas de bank tous le temps,j'initialise les registres de la bank 0 que j'ai besoin puis ceux de la bank 1 que j'ai besoin.

    Qu'en pense tu?

    Alors j'ai vu aussi que INTCON par exemple étais dans les 2 bank,pourquoi?
    <<La détermination mène a la satisfaction>>

  17. #16
    antek

    Re : Le pic12f629

    Citation Envoyé par terrdala Voir le message
    Alors j'ai vu aussi que INTCON par exemple étais dans les 2 bank,pourquoi?
    Pour des raisons de commodité et par une sorte de compromis je pense.

  18. #17
    terrdala

    Re : Le pic12f629

    Citation Envoyé par antek
    Pour des raisons de commodité et par une sorte de compromis je pense.
    Ok merci beaucoup.
    <<La détermination mène a la satisfaction>>

Discussions similaires

  1. Impossible de faire fonctionner un PIC12F629
    Par invited7cd4587 dans le forum Électronique
    Réponses: 2
    Dernier message: 08/04/2009, 19h20
  2. Flowcode PIC12F629
    Par Damoun60 dans le forum Électronique
    Réponses: 1
    Dernier message: 02/02/2009, 12h44
  3. pwm avec pic12F629
    Par invite626b806c dans le forum Électronique
    Réponses: 10
    Dernier message: 19/04/2008, 19h29
  4. Sous-programme PIC12F629 - problème
    Par michel5002 dans le forum Électronique
    Réponses: 8
    Dernier message: 10/12/2007, 20h12
  5. Gestion du temps sur PIC12F629 ?
    Par invite128ac9c4 dans le forum Électronique
    Réponses: 6
    Dernier message: 29/03/2005, 08h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.