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 ---
- 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 ---
Modérateur : Jérémy
Problème de programmation d'horloge
Problème de programmation d'horloge
Problème de programmation d'horloge
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.
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
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.
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
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.
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
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 ?
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
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!
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
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
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
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
Problème de programmation d'horloge
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: -).
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: -).
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités


