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

Double tempo avec un seul timer ?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2154
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » mar. 8 août 2017 23:20 lien vers la Data-Sheet : Cliquez ici

Bonsoir à tous,

Je cherche à piloter des servos moteurs avec ma télécommande. (voir ce post )
Comme je ne comprends pas le fichu mode de fonctionnement du mode "Wake up on radio", je voudrais me servir d'un timer pour passer en stand by mode a certain intervalle.

Étant limité par le nombre de timer j'ai tenter d’utiliser un seul timer pour faire deux tempo alternativement. Le but serait d'avoir 200ms endormi et 20ms reveillé ( ratio de 10%) .

J'ai eu comme idée de procédé comme ceci .

Je vous passe toute la config, pour garder seulement l'interruption :

Code : Tout sélectionner


  if 
( (TMR0IF_bit) && (TMR0IE_bit) ){       // débordement du timer 0
    TMR0IF_bit = 0;      // Je RAZ le flag

    STB = ~STB;         // j'inverse la broche du stand-By, je passe en standby à 1 , en mode réveillé à 0 .
    
    if 
(STB == 1){        // Si le mode standby est activé je pars pour 200ms 
        T0CON         = 0x84;   //Je configure mon timer0 pour 200 ms
        TMR0H         = 0x3C;
        TMR0L         = 0xB0;
     }
     else{
        T0CON         = 0x81;   // 20ms
        TMR0H         = 0x63;
        TMR0L         = 0xC0;
     }

  }



Pensez-vous que ce soit bien ? et quel serait les inconvénients si il y en avait ?
Pourrais-je effectué la même chose pour piloter un servo moteur ?
Tout en sachant que la précision du timer n'est pas critique !

Merci !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Double tempo avec un seul timer ?
cyril13110
Passioné
Passioné
Messages : 475
Âge : 36
Enregistré en : avril 2016
Localisation : 13

#2 Message par cyril13110 » mer. 9 août 2017 12:41 lien vers la Data-Sheet : Cliquez ici

salut jeremy,
en resumé tu veux envoyer un creneau de 20ms passer en stand by jusqu'au prochein appuie du BP?

Double tempo avec un seul timer ?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2154
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » mer. 9 août 2017 13:17 lien vers la Data-Sheet : Cliquez ici

en resumé tu veux envoyer un creneau de 20ms passer en stand by jusqu'au prochein appuie du BP?


Non non pas d'appui sur BP, tout sur débordement de timer .

Je souhaite que mon module Radio ce mette en veille pendant 200ms , puis ce réveil pendant 20ms , tout ça avec un seul timer !
Et j’espère pouvoir appliqué ce même principe pour commander mes servos. Du genre une sortie à 0 pendant 18ms puis à 1 pendant 1m à 2ms( suivant la valeur injectée dabns les registres). Peut être qu'avec un savant jeu de combinaison conditionnelles, on pourrait même envisager de piloter deux servos avec un seul timer .
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Double tempo avec un seul timer ?
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1084
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » mer. 9 août 2017 18:58 lien vers la Data-Sheet : Cliquez ici

bonsoir jeremy

ta solution me semble jouable .
genere donc un signal periodique de 220 ms avec etat bas de 20 ms

Double tempo avec un seul timer ?
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 952
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » mer. 9 août 2017 21:15 lien vers la Data-Sheet : Cliquez ici

Bonjour Jérémy, cyril13110, paulfjujo, et bonjour tous le monde,

J'ai déplacé le sujet en section ASM, pour lire la suite cliquer ici : viewtopic.php?p=6640#p6640

A+
Modifié en dernier par Temps-x le jeu. 10 août 2017 00:15, modifié 5 fois.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Double tempo avec un seul timer ?
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1084
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » mer. 9 août 2017 22:06 lien vers la Data-Sheet : Cliquez ici

bonsoir à tous

Le watchdog ... C'est un bon rappel
c'est son module radio qu'il veut mettre en sommeil ...

il y a aussi la reception sur l'UART ( mais pas sur un 16F84) qui peut reveiller un PIC en mode sleep ( testé OK sur un 16F1847 )

Double tempo avec un seul timer ?
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 952
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » mer. 9 août 2017 22:14 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo

c'est son module radio qu'il veut mettre en sommeil ...


oops encore une, bon je vais pas pollué le post de Jérémy, exit je sors

A+
Modifié en dernier par Temps-x le mer. 9 août 2017 23:59, modifié 4 fois.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Double tempo avec un seul timer ?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2154
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » mer. 9 août 2017 22:27 lien vers la Data-Sheet : Cliquez ici

Hello par ici,

Merci de vos réponses c'est effectivement le module radio que je souhaite endormir et non mon PIC .

Je ne suis pas encore au watchdog ! je ne suis pas encore assez moustachu pour ça ! humour!!

Mon idée fonctionne bien pour le module. reste a trouver un système pour les servos moteurs ! piloter deux servos avec 1 seul timer peut être intéressant.

Merci ! d'avoir regarder mon petit bout de code ! Car franchement je ne m'en sortais pas avec le mode prévue pour mon module radio !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Double tempo avec un seul timer ?
JMarc
Confirmé
Confirmé
Messages : 517
Enregistré en : août 2016
Localisation : Dans le Sud...

#9 Message par JMarc » mer. 9 août 2017 23:53 lien vers la Data-Sheet : Cliquez ici

Bonjour tout le monde

Et pourquoi pas faire l'interruption sur la petite valeur ici 20 ms et faire un compteur d'interruptions pour la grande valeur vu que c'est un multiple :sifflotte:

Si 10 fois interruption alors 200 ms

Double tempo avec un seul timer ?
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1084
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#10 Message par paulfjujo » jeu. 10 août 2017 08:57 lien vers la Data-Sheet : Cliquez ici

bonjour,


pour aller dans le sens de JMARC,

pouquoi pas 1ms, si un pas de commande de 1ms te suffit pour commander tes 2 servos
1er compteur pour le 1er servo
2em compteur pour le 2em servo
3em compteur (0 à 220) pour la mise en sommeil
Les 3 compteurs testés dans l' interruption.

tes servos se commandent bien par une pulse de largeur 1 à 2ms ? ( toutes les 20mS)
ou autre ?

auquel cas il faut un autre timer ! pour elaborer la largeur voulue du creneau


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité