Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#91 Message par satinas » mer. 22 janv. 2025 15:49

Tu m'as envoyé quoi où ?
(ne mets pas mon mail sur le forum)

Problème de programmation d'horloge
Sw338965
Amateur
Amateur
Messages : 114
Enregistré en : décembre 2024

#92 Message par Sw338965 » mer. 22 janv. 2025 16:21

Je suis allé dans message privé et je t'ai répondu!
Je viens de renouveler mon envoie.

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#93 Message par satinas » mer. 22 janv. 2025 16:52

Le message privé c'était juste pour te donner mon mail. En passant par le site j'ai reçu l'hex mélangé avec le contenu du mail.
Il vaut mieux communiquer directement de mail à mail avec fichiers joints. Sans passer par le site renvoie moi le hex et le pdf.
Reste à fournir les 2 schémas, indispensables. Et si cela demande du debug, le PicKit3 deviendra obligatoire.

Dans un premier temps, il faut refaire le programme source 16F628, le compiler avec MPLAB, vérifier qu'il marche in situ, ensuite envisager les modifications sur le nouvel hardware.

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#94 Message par satinas » mer. 22 janv. 2025 18:44

Si tu veux un programme référence qui fait clignoter une led, il est là.
viewtopic.php?p=24284#p24284
Derrière tu me réponds qu'il produit des erreurs, tu devais parler d'autre chose. Ce programme se compile parfaitement pour un 16F877A avec FOSC = EXTRC. Après on peut discuter de son contenu si tu ne comprends pas. Lors de l'exécution, le point d'entrée d'un programme C est la fonction main() qui peut être n'importe où dans le programme.

En ce qui concerne le réglage de la configuration de l'oscillateur, je t'ai indiqué comment trouver la liste des choix possibles. Et ta réponse a été, je n'ai pas trouvé. Un peu facile, il ne faut pas lâcher, ou redemander tant que la réponse n'est pas comprise. Ce sont des passages obligés, les zapper ne fait qu'accroitre la confusion.

De toute façon on est passé allègrement du C à l'asm un peu facilement, alors que c'est 2 mondes différents. Si tu veux améliorer ton programme tout seul il faut oublier le C et passer à l'assembleur. Le cours Bigonoff était parfait pour cela, il semble qu'il ne soit plus en ligne, il faut le demander à son auteur. Pour le moment je suppose que c'est de l'asm, car je n'ai pas encore vu le pdf.

Problème de programmation d'horloge
Sw338965
Amateur
Amateur
Messages : 114
Enregistré en : décembre 2024

#95 Message par Sw338965 » jeu. 23 janv. 2025 11:21

1°)Le fichier que je t'ai envoyé est un fichier hex compilé à partir d'un programme en assembleur.
2°) Tous les programmes que j'ai essayé de compiler avec FOSC = INTRCIO (soit l'oscillateur interne) avec un PIC16F628 n'ont aboutis qu'à un message d'erreur de MPLAB. Celui-ci n'accepte que EXTRC ce qui est gênant lorsqu'on n'a pas besoin de la précision du quartz.
3°) Une fois compilé avec EXTRC le programme ne fonctionne pas en réel sur une platine de test car l'oscillateur du PIC, même avec le quartz et les deux condensateurs qui vont bien,n'oscille pas!
Bref, tant que je n'aurais pas réussi à faire osciller mon quartz avec un programme même le plus réduit possible et que celui-ci ne fonctionnera pas sur un ban de test, ce ne sera pas la peine que j'aille plus loin.

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#96 Message par satinas » jeu. 23 janv. 2025 11:56

INT oscillateur interne
EC signal d'horloge entrant sur OSC1
RC circuit RC externe connecté à OSC1
LP,XT,HS quartz ou résonateur externe sur OSC1/OSC2

Dans MPLABX, menu Window/Target Memory View/Configuration Bits
on peut afficher (et modifier) les différents réglages de l'oscillateur.
Ne pas les modifier à ce niveau car ils sont déjà dans le programme.

On retrouve ces informations dans le fichier :
C:\Program Files\Microchip\xc8\v3.00\docs\chips\16f628a.html

Pourquoi le HEX de clignotement sur B0 que je t'ai envoyé a fonctionné alors qu'il était en EXTRC sans circuit RC, mystère ?

Problème de programmation d'horloge
Sw338965
Amateur
Amateur
Messages : 114
Enregistré en : décembre 2024

#97 Message par Sw338965 » jeu. 23 janv. 2025 14:39

On retrouve ces informations dans le fichier :
C:\Program Files\Microchip\xc8\v3.00\docs\chips\16f628a.html


Dans mon MPLAB, après v2.50, je n'ai pas docs, mais etc et dans etc il n'y a rien!
donc difficile de voir les différents réglages.

Pourquoi le HEX de clignotement sur B0 que je t'ai envoyé a fonctionné alors qu'il était en EXTRC sans circuit RC, mystère ?

Tu as sûrement raison, mais je ne me souviens plus que quel programme il s'agissait et donc, comme je remet tout à plat et qu' en priorité, je voudrais bien voir le fonctionnement de l'oscillateur du PIC, peux-tu me donner le programme d'un clignotant comme avec le 628A avec FOSC = EXTRC ? Pour la valeur de RC, je mettrai 10K/30pF.
Et une fois compilé, je vais l'essayé sur une carte et vérifier que l'oscillateur fonctionne.
Avec un quartz on obtient en général un signal sinusoïdal en rapport avec la fréquence du quartz.
Moi, avec un circuit RC, j'avais obtenu un signal triangulaire peut satisfaisant avec une amplitude de 250mv!

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#98 Message par satinas » jeu. 23 janv. 2025 15:06

Tu compiles ça et s'il y a une erreur de compilation, tu modifies le programme en conséquence.
D'habitude on démarre d'abord en oscillateur interne, mais pourquoi faire simple quand on peut faire compliqué.

Pour programmer un PIC16F628A en utilisant l'outil XC8, afin de faire clignoter une LED sur le port B0 avec un oscillateur RC, voici un exemple de code. Je vais supposer que l'oscillateur RC est déjà correctement configuré et que la LED est connectée sur le port B0.
Code pour clignoter une LED sur le port B0

Code : Tout sélectionner

#include <xc.h>
#define _XTAL_FREQ 4000000 // Fréquence de l'oscillateur RC (par exemple, 4 MHz)

// Configuration des fuseaux (assurez-vous que l'oscillateur RC est bien configuré)
#pragma config FOSC=RC      // Choisir l'oscillateur RC
#pragma config WDTE=OFF     // Désactivation du Watchdog Timer
#pragma config PWRTE=ON     // Activation du Power-Up Timer
#pragma config BOREN=OFF    // Désactivation du Brown-out Reset
#pragma config LVP=OFF      // Désactivation du Low-Voltage Programming

void main(void) {
    // Initialisation du port B comme sortie
    TRISB0 = 0;  // Configure RB0 comme sortie
    PORTBbits.RB0 = 0;  // Assure que la LED est éteinte au départ

    while (1) {
        PORTBbits.RB0 = 1;  // Allume la LED
        __delay_ms(500);    // Attend 500 ms
        PORTBbits.RB0 = 0;  // Éteint la LED
        __delay_ms(500);    // Attend 500 ms
    }
}


Explication du code :

Fréquence de l'oscillateur :
L'oscillateur RC que tu utilises semble avoir une fréquence de 4 MHz (modifiable selon ton montage réel). C'est cette valeur qui est assignée à la macro _XTAL_FREQ, ce qui permet à la fonction __delay_ms() de travailler correctement.

Configuration des fuseaux :
Nous avons utilisé la directive #pragma config pour spécifier les réglages du PIC, comme l'oscillateur RC et la désactivation du Watchdog Timer. Il peut être nécessaire de modifier les autres configurations en fonction de tes besoins.

Clignotement de la LED :
Dans la boucle principale (while (1)), la LED est allumée et éteinte toutes les 500 ms grâce à la fonction __delay_ms(500).

Port B0 en sortie :
Le registre TRISB0 est configuré à 0, ce qui signifie que le port B0 est une sortie (si c'était 1, il serait une entrée).

Remarque importante :

L'oscillateur RC sur le PIC16F628A peut avoir une fréquence assez variable en fonction des composants externes (résistance et condensateur). Si tu veux une fréquence plus précise, il serait préférable d'utiliser un oscillateur externe ou un cristal.

Si tu rencontres des problèmes, n'hésite pas à me donner plus de détails sur ton montage !
Mon petit nom, c'est ChatGPT

Problème de programmation d'horloge
Sw338965
Amateur
Amateur
Messages : 114
Enregistré en : décembre 2024

#99 Message par Sw338965 » jeu. 23 janv. 2025 15:23

Humour sarcastique :lol:

Je m'y colle!
PS: Je pensais que tu m'as dit qu'il valait mieux que je commence pas de l'asm. Peut être que je me trouve, mais je crois que c'est du C!

Problème de programmation d'horloge
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#100 Message par satinas » jeu. 23 janv. 2025 15:33

Envoie-moi une image du contenu de ton dossier "C:\Program Files\Microchip\xc8", merci.
Soyons réaliste, tu n'as pas le niveau pour faire de l'ASM, et je ne sais toujours pas ce que tu veux faire. Tout recommencer en C ou modifier le programme ASM. Dans tous les cas il y a du boulot. Par avance Bonne Année 2026 et 2027, tiens un-e nouv-eau-elle président-e: -).


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités