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
Thermomètre 16F684
- paulfjujo

Maître- Messages : 3256
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
Reste à verifier si une "Errata" n'est pas dispo pour ce PIC16684
ou un bug du compilateur CCS ...
quelle version CCS utilisée ?
-------
je continue ici, car il me semble que le probleme de fond est la configuration du registre Comparator
(je n'ai pas de 16F84 pour le verifier)
REGISTER 8-1: CMCON0: COMPARATOR CONFIGURATION REGISTER...... page 73 datasheet
CMCON0 — COMPARATOR CONFIGURATION REGISTER (ADDRESS: 19h)
R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0
bit 7 bit 0
bit 2-0 CM<2:0>: Comparator Mode bits (See Figure 8-5)
000 = Comparators off. CxIN pins are configured as analog
001 = Three inputs multiplexed to two comparators
010 = Four inputs multiplexed to two comparators
011 = Two common reference comparators
100 = Two independent comparators
101 = One independent comparator
110 = Two common reference comparators with outputs
111 = Comparators off. CxIN pins are configured as digital I/O
bit 2 CM2:CM0: Comparator Mode bits
FIGURE 9-3: COMPARATOR I/O OPERATING MODES page 75 datasheet
Figure 9-3 shows the Comparator modes and CM2:CM0 bit settings
Comparators Reset (POR Default Value)
CM2:CM0 = 000
A
A A comme Analog
RA0 et RA1 seraient en Analogique
-----
Comparators Off
CMCON0=7 au reset !
D
D D comme Digital !
RA0 et RA1 seraient en Digital
contradiction entre la definition Etat au Reset
fig 9.3 CM2:CM0=000 POR default value
et
fig 9.1 bitCM2:CM0 à 1 bit set ( R/W 1)
donc CM2:CM0=111
la fonction CCS n'est pas claire (pour moi)
ressayer plutot avec une commande ASM
pour initialiser CMCON0
verifier si il faut 000 ou 111 ( comme d'ailleurs sur certains autres PIC !)
ce qui laisse supposer ENable comparator et enable ANSEL, pour un usage RA0 et RA1 en Ana
Reste à verifier si une "Errata" n'est pas dispo pour ce PIC16684
ou un bug du compilateur CCS ...
quelle version CCS utilisée ?
-------
je continue ici, car il me semble que le probleme de fond est la configuration du registre Comparator
(je n'ai pas de 16F84 pour le verifier)
REGISTER 8-1: CMCON0: COMPARATOR CONFIGURATION REGISTER...... page 73 datasheet
CMCON0 — COMPARATOR CONFIGURATION REGISTER (ADDRESS: 19h)
R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0
bit 7 bit 0
bit 2-0 CM<2:0>: Comparator Mode bits (See Figure 8-5)
000 = Comparators off. CxIN pins are configured as analog
001 = Three inputs multiplexed to two comparators
010 = Four inputs multiplexed to two comparators
011 = Two common reference comparators
100 = Two independent comparators
101 = One independent comparator
110 = Two common reference comparators with outputs
111 = Comparators off. CxIN pins are configured as digital I/O
bit 2 CM2:CM0: Comparator Mode bits
FIGURE 9-3: COMPARATOR I/O OPERATING MODES page 75 datasheet
Figure 9-3 shows the Comparator modes and CM2:CM0 bit settings
Comparators Reset (POR Default Value)
CM2:CM0 = 000
A
A A comme Analog
RA0 et RA1 seraient en Analogique
-----
Comparators Off
CMCON0=7 au reset !
D
D D comme Digital !
RA0 et RA1 seraient en Digital
contradiction entre la definition Etat au Reset
fig 9.3 CM2:CM0=000 POR default value
et
fig 9.1 bitCM2:CM0 à 1 bit set ( R/W 1)
donc CM2:CM0=111
la fonction CCS n'est pas claire (pour moi)
ressayer plutot avec une commande ASM
pour initialiser CMCON0
verifier si il faut 000 ou 111 ( comme d'ailleurs sur certains autres PIC !)
https://forum.allaboutcircuits.com/threads/cant-write-to-port-a-16f684.64378/
I just remembered to be able to use port a as digital IO you have to disable the comparator
and analog input from CMCON0 register and ANSEL register.
ce qui laisse supposer ENable comparator et enable ANSEL, pour un usage RA0 et RA1 en Ana
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Thermomètre 16F684
Bonjour paulfjujo, et tout le monde
On n'a plus confiance au C à ce que je vois....
Comme je suis bon prince, j'ai écrit un programme pour tester les ports de ce Pic16F684 en ASM avec fréquence de 4 Mhz(sans quartz)
Le programme fait répétitivement : allumage de tous les ports pendant 1 seconde, et extinctions de tous les ports pendant 1 seconde.
Faut que je regarde dans le lot de mes Pics, car je crois que je n'ai pas ce Pic16F684, ça fait drole de reprendre ASM après un bon moment d'arrêt.
Voici le schéma, pour le branchement des LED, il fonctionne en simulation
Fichier code en ASM, ainsi que le fichier compilé téléchargement ICI
A+
paulfjujo a écrit :Source du message la fonction CCS n'est pas claire (pour moi)
ressayer plutot avec une commande ASM
pour initialiser CMCON0
Comme je suis bon prince, j'ai écrit un programme pour tester les ports de ce Pic16F684 en ASM avec fréquence de 4 Mhz(sans quartz)
Le programme fait répétitivement : allumage de tous les ports pendant 1 seconde, et extinctions de tous les ports pendant 1 seconde.
Faut que je regarde dans le lot de mes Pics, car je crois que je n'ai pas ce Pic16F684, ça fait drole de reprendre ASM après un bon moment d'arrêt.
Voici le schéma, pour le branchement des LED, il fonctionne en simulation
Fichier code en ASM, ainsi que le fichier compilé téléchargement ICI
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le sam. 20 sept. 2025 20:04, modifié 2 fois.
Thermomètre 16F684
- paulfjujo

Maître- Messages : 3256
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Temps-x a écrit :
On n'a plus confiance au C à ce que je vois....
![]()
il existe moulte versions de compilateur C ( C++ , C# , mikroC ..etc..)
Temps-x a écrit :Voici le schéma, pour le branchement des LED, il fonctionne en simulation
et je n'ai pas confiance envers les Simulateurs !il faut que ça fonctionne dans le monde réel .
Qu'as tu mis dans la config du CMCCON0 pour CM2:CM0 ?
000 ou 111 dans le cas tests sortie leds
une autre version avec les voies analogiques , car c'est plutot sur ce point là que ça coince ..
et config CM2:CM0 ?
mais la simulation ne pourra rien monter
....pas du Temps X mais du Temps Reel ...Thermomètre 16F684
Bonsoir paulfjujo,
Sur la datasheet que j'ai du regarder de bas en haut, il préconise 111, ce qui nous fait en vrai langage
Tu as tout fait (fée) raison de ne pas avoir confiance envers les simulateurs, Moi non plus je ne leur fais pas confiance, mais ça peut aider.
A+
paulfjujo a écrit :Source du message Qu'as tu mis dans la config du CMCCON0 pour CM2:CM0 ?
000 ou 111 dans le cas tests sortie leds
Sur la datasheet que j'ai du regarder de bas en haut, il préconise 111, ce qui nous fait en vrai langage
Code : Tout sélectionner
;********************* configuration du registre CMCON0 & CMCON1 en bank 0 ********************
BANKSEL CMCON0 ; passer en bank 0
movlw B'00000111'
movwf CMCON0 ; éteindres les comparateurs, les mettres en digital I/O
movwf CMCON1
paulfjujo a écrit :Source du messageet je n'ai pas confiance envers les Simulateurs !
Tu as tout fait (fée) raison de ne pas avoir confiance envers les simulateurs, Moi non plus je ne leur fais pas confiance, mais ça peut aider.
Thermomètre 16F684
-
jamdmnt

Débutant- Messages : 42
- Âge : 78
- Enregistré en : septembre 2015
- Localisation : pyrénées orientales
Bonsoir à tous...et toutes(peu-être y a t-il des dames qui nous lisent!!)
Le 684 que j'ai testé, a du me servir en....2001. A l'époque, j'avais mis un ? sur ce pic parce qu'il "cafouillait", mais son p'tit frère fonctionnait très bien sur le circuit où il était monté, l'allumage/extinction auto des feux sur la twingo de madame (elle oubliait quelques fois d'éteindre les feux le soir, et...le lendemain matin, batterie à plat). Ce circuit utilisait A0 en entrée ana et A1 en Vref, et il a fonctionné des années jusqu'à la mise à la casse de la voiture.
A l'époque, je programmais en asm, et quelques années plus tard, pour refaire le prog d'un four, je suis passer à CCS en C, car en asm ça devenait laborieux avec ce prog de 5000 lignes de C (certes bien aéré).
Je ne rencontre pas de PB avec CCS, et proteus est je trouve bien utile pour la mise au point d'un prog, et on peut vérifier tous les registres lors de l'exécution du .cof du prog.
Il est évident que le prog tourne en simu, il faut le faire en réel, et bien sûr il y a quelques fois des surprises.
A+
Jacques
Le 684 que j'ai testé, a du me servir en....2001. A l'époque, j'avais mis un ? sur ce pic parce qu'il "cafouillait", mais son p'tit frère fonctionnait très bien sur le circuit où il était monté, l'allumage/extinction auto des feux sur la twingo de madame (elle oubliait quelques fois d'éteindre les feux le soir, et...le lendemain matin, batterie à plat). Ce circuit utilisait A0 en entrée ana et A1 en Vref, et il a fonctionné des années jusqu'à la mise à la casse de la voiture.
A l'époque, je programmais en asm, et quelques années plus tard, pour refaire le prog d'un four, je suis passer à CCS en C, car en asm ça devenait laborieux avec ce prog de 5000 lignes de C (certes bien aéré).
Je ne rencontre pas de PB avec CCS, et proteus est je trouve bien utile pour la mise au point d'un prog, et on peut vérifier tous les registres lors de l'exécution du .cof du prog.
Il est évident que le prog tourne en simu, il faut le faire en réel, et bien sûr il y a quelques fois des surprises.
A+
Jacques
Thermomètre 16F684
- paulfjujo

Maître- Messages : 3256
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Temps-x a écrit :Code : Tout sélectionner
;********************* configuration du registre CMCON0 & CMCON1 en bank 0 ********************
BANKSEL CMCON0 ; passer en bank 0
movlw B'00000111'
movwf CMCON0 ; éteindres les comparateurs, les mettres en digital I/O
movwf CMCON1
donc il faudrait mettre CMCON0 à zero ..pour avoir RA0 et RA1 en analogique (et ANSEL active)
... wait and see
Thermomètre 16F684
J'espére que ça reponds à ta question
Oui, mais si tu veux des entrées/sorties il faut mettre 111 comme pour des led
, dans tous les cas les comparateurs sont désactivé si les trois bits se retrouve toutes à zéro ou un
Code ASM de la datasheet
A+
paulfjujo a écrit :Source du message donc il faudrait mettre CMCON0 à zero ..pour avoir RA0 et RA1 en analogique (et ANSEL active)
Code ASM de la datasheet
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Thermomètre 16F684
-
RETRAITE128

Amateur- Messages : 125
- Enregistré en : août 2021
Thermomètre 16F684
Temps-x a écrit ::-D On n'a plus confiance au C à ce que je vois....![]()
Temps-X n'en manque pas une a ce que je vois
N'empêche que ça t'a permis de te remettre dans l'ASM grâce au C
@++
Thermomètre 16F684
Bonsoir venon, et tout le forum,
Psf....
c'est à cause de paulfjujo .... il faut bien trouver une excuse, pour une fois ça ne vient pas de Gérard....
A+
paulfjujo a écrit :Source du message la fonction CCS n'est pas claire (pour moi)
ressayer plutot avec une commande ASM
pour initialiser CMCON0
Psf....
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

