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

génération d'un signal d'horloge



  1. #1
    As_Sh

    génération d'un signal d'horloge


    ------

    Bonjour à tous

    Je suis toujours sur le transfère d'information d'un microcontrôleur (PIC16F690) vers un potentiomètre numérique (MCP4161).

    Pour résumer rapidement la situation, je dirais que je pense avoir fais une liaison "correcte" entre ces deux composants (a savoir que selon l'octet 'donnée' que j’envoie sur le potentiomètre, il prend différentes valeurs ohmiques) MAIS ces valeurs ne correspondent pas à l'information que j’envoie (je précise que lorsque j’envoie une donnée, j'obtiens toujours la même valeur ohmique).

    D'autre part, le potentiomètre demande un signal d'horloge que je lui envois grâce à une sortie du PIC (CLKOUT) dont la fréquence est de 2MHz.

    Les octets dont le potentiomètre à besoin (6 bits de "commande" et 10 bits de "données) sont transmit par liaison série. J'ai lu dans la documentation que le potentiomètre ne pouvait faire l'acquisition de ces bits qu'à une fréquence de 250KHz. Or je travaille dans le PIC à une fréquence de 8MHz.

    Pour synchroniser l'horloge et l'envoie des bits, j'avais réalisé une temporisation entre chaque envois de bit. Mais je me retrouve dans la situation que je décris plus haut.

    On m'a suggérer de plutôt "générer" l'horloge directement à l’envoie des bits, enlevant l'incertitude d'un possible décalage entre l'horloge et les bits. Je l'ai fais mais maintenant je n'obtiens plus aucun changement au niveau de potentiomètre.


    J'ai essayé de faire court mais je me rends compte que c'est plutôt long comme intro. DONC ma question.

    Elle porte sur l'horloge générée manuellement. Je l'ai réalisé de la façon suivante :

    - je mets la pin correspondant aux données à l'état voulut (1 ou 0)

    - Je mets ensuite la pin "horloge" à 1 (pour générer un front montant)

    - J'insère une temporisation (car il me faut respecter la fréquence MAX de 250Hz)

    - Je mets la pin "horloge" à 0 (front descendant)

    - Je remets une temporisation (pour obtenir un rapport cyclique de 50/50)

    Et je recommence pour les 16 bits.

    Je voulais donc savoir si, premièrement, mon horloge "manuelle" est correcte et deuxièmement s'il y a quelque chose que je suis sensé faire et qui explique l'absence de réaction du potentiomètre ?

    Merci (déjà d'avoir lu tout ça)

    -----

  2. Publicité
  3. #2
    As_Sh

    Re : génération d'un signal d'horloge

    Si vous avez besoin de précisions (comme je l'ai dit, j'ai essayé de résumer en gardant l’essentiel) et/ou de mon code (c'est de l'assembleur PIC), demandez.

  4. #3
    DAUDET78

    Re : génération d'un signal d'horloge

    Un lien WEB sur la datasheet du potentiomètre numérique (MCP4161) ne serait pas de trop ..... ainsi que le schéma de ton montage
    J'aime pas le Grec

  5. #4
    As_Sh

    Re : génération d'un signal d'horloge

    Bonjour DAUDET78

    La datasheet que je possède celle-ci.

    http://ww1.microchip.com/downloads/e...Doc/22059b.pdf

    Quand au schéma, je n'en ai pas de "précis", je sais que ce n'est pas sérieux mais comme je change les liaisons entre les deux composants assez souvent, je n'en ai pas de définitif.

    Actuellement, j'utilise le PORTC en sortie : RC0 pour le CS, RC6 pour l'envois des données et RC5 pour générer "l'horloge".
    Par exemple, avant j'avais la sortie RA4 (PORTA) en sortie horloge 2MHz.

    J'espère que ce sera suffisant.

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

    Re : génération d'un signal d'horloge

    C'est une liaison SPI . Tu respectes les timings data (SDI) versus clock et c'est bon (voir page 42 , il faut un décalage entre les transitions d'horloge et les datas).
    Si tu veux relire les datas en EEPROM, je te conseille le montage de la figure 39 avec résistance
    J'aime pas le Grec

  8. #6
    As_Sh

    Re : génération d'un signal d'horloge

    J'ai de nouveau essayé un code mais c'est un échec.

    DAUDET78, dans l'idée je pense que c'est comme cela que mon programme fonctionne : envoi de la donnée (SDI), envois d'un 1 logique sur la pin SCK pour acquisition sur le front montant (j'ai même rajouté une petite tempo entre la donnée et le front montant pour être sûr que la donnée soit validée), de nouveau une temporisation pour respecter la fréquence 250KHz, 0 logique pour un front descendant, Temporisation, envoie de la donnée ...
    Mais visiblement, je m'y prends mal, soit au niveau de l'horloge, soit au niveau de la donnée car concrètement, absolument rien ne se passe sur le potentiomètre (du moins au niveau résistance).

    Je suis aussi d'accord pour récupérer la donnée que j'ai envoyé (à prioris cela devrais me permettre de savoir au moins si la donnée arrive correctement sur le potentiomètre) mais vu les difficultés rencontrées pour envoyer des bits, je ne suis pas sûr d'arriver à les recevoir.

    En tout cas merci pour ces quelques conseils

  9. Publicité
  10. #7
    DAUDET78

    Re : génération d'un signal d'horloge

    Regarde les timings page 11
    Tu as le droit à un SCK de 500ns bas et 500ns haut (soit 1Mhz max)
    J'aime pas le Grec

  11. #8
    As_Sh

    Re : génération d'un signal d'horloge

    Bonjour

    J'avais un peu laissé tomber devant l'absence de résultat vendredi et puis j'envisageais de reprendre mon programme de zéro pour voir si une méthode totalement différente marcherait. Ce qui fait que je n'ai compris ton message que samedi après-midi, après être allé voir un film (Godzilla). Effectivement, je travaille avec une horloge de 2MHz. Et il m’a fallu tout ce temps et ton message pour m'en rendre compte. Je n'ai donc pas encore testé sur le matériel mais dès que j'y ai accès je vérifie si le dysfonctionnement vient de là.

    En parallèle, je réfléchissais à une autre façon de faire basé sur l'horloge, à savoir que je génère l'horloge ET ENSUITE j'intègre par-dessus le reste du code.
    Car jusqu'à présent, j'avais plutôt fait l'inverse.

    Je me suis donc demandé à quelle fréquence j'allais générer l'horloge car au début j'utilisais une horloge de 2MHz (prochainement de 1MHz) et ensuite, je me suis rabattu sur une fréquence de 250KHz. Et en relisant la documentation technique, je me suis aperçu que je l'avais mal interprété.

    Page 41 de la documentation du potentiomètre, lorsque j'avais vu le tableau 'SCK FREKENCY', pour moi, l'action 'READ' était lorsque le potentiomètre lisait les informations que je lui envoyais. D'où ma recherche d'une fréquence de 250KHz.

    Du coup, j'avoue être un peu perdu car la fréquence d'horloge que l'on me propose est de 10MHz.
    De toute façon, étant donné que je ne peux pas générer plus que 2MHz d'horloge actuellement, la question est réglée.

    Reste un dernier point dont j'ai pris conscience ce matin.

    Je me suis aperçu que la dernière façon dont mon programme fonctionne ne fournit pas de signal d'horloge au potentiomètre entre deux phases d'envois de données. Pour rappel, je génère l'horloge en même temps que mes données pour supprimer le risque d'un décalage entre horloge et données.

    Ma question est donc de savoir si le potentiomètre a besoin d'un signal d'horloge entre les phases d'acquisition des données ?

  12. #9
    Qristoff
    Animateur Électronique

    Re : génération d'un signal d'horloge

    (a savoir que selon l'octet 'donnée' que j’envoie sur le potentiomètre, il prend différentes valeurs ohmiques) MAIS ces valeurs ne correspondent pas à l'information que j’envoie (je précise que lorsque j’envoie une donnée, j'obtiens toujours la même valeur ohmique).
    le MCP4161 est un potentiomètre. Peux-tu nous décrire précisément la méthode que tu utilises pour vérifier que le potentiomètre fonctionne comme tu souhaites ? voir page 35 de la datasheet.
    Tout existe, il suffit de le trouver...!

  13. #10
    As_Sh

    Re : génération d'un signal d'horloge

    Bonjour Qristoff

    Je ne comprends pas bien ta question donc si je réponds à coté dis le.

    Déjà, le potentiomètre ne fonctionne pas comme je le souhaite.

    Ma méthode, si s'en est une, consiste simplement à lire, avec un ohmmètre, la valeur que j'obtiens en sortie du potentiomètre et à la comparer à la valeur que je souhaite obtenir.
    Par exemple, j’envoie 0x00 suivie de 0x05 (ce qui donne 0000000000000101 que j'envoie en commençant par le bit de poids fort) donc je charge la valeur 5 dans le potentiomètre 0 en volatil (page 46 de la documentation) et je m'attends à obtenir une valeur ohmique proche de 975 ohms ( (50K/256)*5 = 195*5 = 975 ).

    Voilà j'espère avoir répondu correctement à ce que tu demandais.

  14. #11
    paulfjujo

    Re : génération d'un signal d'horloge

    bonjour,

    Déjà, le potentiomètre ne fonctionne pas comme je le souhaite.
    Est-ce que tu obtiens déja une variation suivant ton code de commande ?

    Attention à la valeur residuelle du curseur (60 à 130 ohms) et a la precision de valeur
    globale du potar 50K à +-20%
    il vaudrait mieux alors verifier la relation , en tension , en alimentant le potar avec le 5V
    et relever la tension sur le curseur..

  15. #12
    As_Sh

    Re : génération d'un signal d'horloge

    Bonjour paulfjujo

    Alors oui j'obtiens une variation selon le code que j'envoie, si je mets tel code, j'obtiens tel valeur ohmique. Mais ces valeurs sont totalement incompréhensible (de mon point de vu). Par exemple si j'entre la valeur 0x05, j'obtiens une valeur de 430 ohms (avec des variations évidement) et pour 0X80 (choisis au hasard à l'instant), j'ai 350 ohms.

    Et c'est comme ça pour toutes les valeurs, je ne trouve pas de logique entre les valeurs voulut et celle obtenus.

    Par contre, je ne comprends pas ce que tu me propose de faire en relevant la tension sur le curseur ?

  16. Publicité
  17. #13
    paulfjujo

    Re : génération d'un signal d'horloge

    Par contre, je ne comprends pas ce que tu me propose de faire en relevant la tension sur le curseur ?
    le relevé de tension fait abstraction de la precision du potar 50K à +-20%
    et aussi de la resistance serie du curseur...
    et donc relation directe possible entre % volt et % commande ..

    tu pourrais meme reboucler le cursuer du potar sur une entree ADC
    et avoir un retour sur 0-255 points ou 0-1023 points.
    si tu as un affichage idoine (LCD ou USART)

    nota:mais l'impédance d'entre de l'ADC pourrait "casser" un peu la linearité de reponse..

    Au fait ,la charge utile de ton potar, c'est quoi ?

  18. #14
    As_Sh

    Re : génération d'un signal d'horloge

    Au risque de paraitre incompétent, qu'est ce que tu veux dire par charge utile de mon potentiomètre ?
    Si tu veux dire ce qu'il y aura après, il n'y a rien d'autre qu'une mesure pour déterminer la valeur ohmique prise par le potentiomètre numérique.

  19. #15
    paulfjujo

    Re : génération d'un signal d'horloge

    Citation Envoyé par As_Sh Voir le message
    Au risque de paraitre incompétent, qu'est ce que tu veux dire par charge utile de mon potentiomètre ?
    Si tu veux dire ce qu'il y aura après, il n'y a rien d'autre qu'une mesure pour déterminer la valeur ohmique prise par le potentiomètre numérique.
    OK, dans ce cas present , no problemo..

Discussions similaires

  1. Que consomme la génération d'un signal d'horloge?
    Par sibanac dans le forum Électronique
    Réponses: 12
    Dernier message: 24/05/2012, 07h51
  2. génération d'horloge très basse fréquence avec CD4060
    Par joel07 dans le forum Électronique
    Réponses: 20
    Dernier message: 18/11/2009, 16h26
  3. generation d'impulsions d'horloge
    Par ryoban dans le forum Électronique
    Réponses: 2
    Dernier message: 28/02/2006, 14h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.