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 ---

Sleep Mode avec un PIC16F18345

http://ww1.microchip.com/downloads/en/DeviceDoc/40001795E.pdf

Forum général sur le langage C !

Modérateur : Jérémy

jo7
Débutant
Débutant
Messages : 67
Enregistré en : février 2018

Sleep Mode avec un PIC16F18345

Messagepar jo7 » ven. 6 juil. 2018 09:22

Page 115 de la DS , il explique le wake-up mais je n'ai pas très bien compris :roll:

Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Sleep Mode avec un PIC16F18345

Messagepar Jérémy » ven. 6 juil. 2018 09:53

Il est trés difficile de te suivre, car tu change a chaque post de facon de faire.

Ton programme ne fait rien dans la boucle comment sait tu qu'il est en sommeil ou non ?

Commence par faire clignoter une led dans ta boucle principale !!!!
Ensuite tu programme un BP pour qu'un appui sur celui ci, passe ton pic en veille ! la led devrait donc arrêter de clignoter .

Une fois que tu auras réussis a faire ca ce sera plus facile d'avancer
C'est en faisant des erreurs, que l'on apprend le mieux !!!

jo7
Débutant
Débutant
Messages : 67
Enregistré en : février 2018

Sleep Mode avec un PIC16F18345

Messagepar jo7 » ven. 6 juil. 2018 11:01

Mon code est très simple. Mon but est d'activer le mode veille avec un bouton et de le désactiver de la même manière.

Avatar de l’utilisateur
paulfjujo
Expert
Expert
Messages : 2597
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Sleep Mode avec un PIC16F18345

Messagepar paulfjujo » ven. 6 juil. 2018 12:56

bonjour,

je ne connais pas ton type de PIC et ne vais pas l'étudier à ta place.
Certains PIC on plusieurs possibiites d'interrupt

soit via 1 des 4 bits MSB du port B
soit via specifiquement RB0 seulement
soit une interrupt par bit port B sur les PIC les plus rescents.

donc Soit tu geres 2 boutons
1 pour mettre en veille
l'autre pour le reveiller
car je ne pense pas que tu puisses te servir d'une seule et meme IT (issue d'un BP)
pour faire les 2 fonctions.
.
car tu ne pourras plus differencier l'origine de l'interrupt .

sinon , via un Flag ON/OFF
la premiere interupt de ton BP mets le flag à ON


Dans le main programme
si Flag ON => mise en veille
eteint la Led
et passe en mode SLEEP

initialise le mode reveil par une interrupt AUTRE que celle du BP
Le watchdog par exemple ...
des que la condition est realisé remet le Flag sur OFF
fait clignoter une led comme le propose Jeremy
il faut TOUJOURS un miminum d'interface operateur dans une application .
RAZ systematique du Watchdog apres N boucles ou n mS
si Flag=0FF
Aide toi, le ciel ou FantasPic t'aidera

Avatar de l’utilisateur
venom
Confirmé
Confirmé
Messages : 963
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

Sleep Mode avec un PIC16F18345

Messagepar venom » ven. 6 juil. 2018 22:06

Bonjour a tous, désolé de vous interrompre et pour mon abscence en ce moment.

J'ai pensé a une chose en lisant cette phrase :
paulfjujo a écrit :car je ne pense pas que tu puisses te servir d'une seule et meme IT (issue d'un BP)
pour faire les 2 fonctions.
.


Sa ne serait pas possible si genre un appui bref réveil le pic et 2 appuis bref sur le même bouton le met en veille ?
Je pense a sa comme ça car je n'y connais rien en mise en veille des pics :wink:

Bonne soirée.






@++
Mon site web
Mon discord : venom#4888

jo7
Débutant
Débutant
Messages : 67
Enregistré en : février 2018

Sleep Mode avec un PIC16F18345

Messagepar jo7 » sam. 7 juil. 2018 10:27

Bonjour, je pense que c'est possible avec un bouton de gérer ces deux interruptions. Par exemple un appui long peut mettre en sommeil le pic et un autre appui le réveil.

jo7
Débutant
Débutant
Messages : 67
Enregistré en : février 2018

Sleep Mode avec un PIC16F18345

Messagepar jo7 » sam. 7 juil. 2018 10:30

paulfjujo a écrit :bonjour,

je ne connais pas ton type de PIC et ne vais pas l'étudier à ta place.
Certains PIC on plusieurs possibiites d'interrupt

soit via 1 des 4 bits MSB du port B
soit via specifiquement RB0 seulement
soit une interrupt par bit port B sur les PIC les plus rescents.

donc Soit tu geres 2 boutons
1 pour mettre en veille
l'autre pour le reveiller
car je ne pense pas que tu puisses te servir d'une seule et meme IT (issue d'un BP)
pour faire les 2 fonctions.
.
car tu ne pourras plus differencier l'origine de l'interrupt .

sinon , via un Flag ON/OFF
la premiere interupt de ton BP mets le flag à ON


Dans le main programme
si Flag ON => mise en veille
eteint la Led
et passe en mode SLEEP

initialise le mode reveil par une interrupt AUTRE que celle du BP
Le watchdog par exemple ...
des que la condition est realisé remet le Flag sur OFF
fait clignoter une led comme le propose Jeremy
il faut TOUJOURS un miminum d'interface operateur dans une application .
RAZ systematique du Watchdog apres N boucles ou n mS
si Flag=0FF



Oui je vois un peu la logique mais sur ma carte je n'ai qu'un bouton pour gérer tout cela, il faut trouver les bonne interruptions associés.
Avez-vous des exemples pour cela ?

Avatar de l’utilisateur
Gérard
Expert
Expert
Messages : 1661
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

Sleep Mode avec un PIC16F18345

Messagepar Gérard » sam. 7 juil. 2018 14:49

Je pense comme Paul, avec un flag.

Il faut à chaque interruption tester le flag, s'il est à 1 donc mise à 0 et mise en sommeil. S'il est à 0, réveil du PIC et mise à 1 du flag.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

jo7
Débutant
Débutant
Messages : 67
Enregistré en : février 2018

Sleep Mode avec un PIC16F18345

Messagepar jo7 » sam. 7 juil. 2018 15:02

Il faut initialiser le flag au début du code ? Par exemple : int flag

Avatar de l’utilisateur
Gérard
Expert
Expert
Messages : 1661
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

Sleep Mode avec un PIC16F18345

Messagepar Gérard » sam. 7 juil. 2018 22:44

Au début du code, tu es réveillé, alors le flag doit être à 1. Tu souhaites passer en mode sleep, tu passes d'abord le flag à 0.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Langage C »

Qui est en ligne

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