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

Timer et Interruption-On-Change
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#11 Message par satinas » ven. 13 janv. 2023 14:38 lien vers la Data-Sheet : Cliquez ici

On veut une seule interruption pour chaque front montant en entrée. S'il y a des parasites où un comportement anormal, en l'occurrence plusieurs déclenchements de l'interruption, on met une tempo pour laisser passer l'impulsion complète avant de réarmer l'interruption, et cela devrait être bon. C'était ton idée de départ, où est le problème ?

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#12 Message par paulfjujo » ven. 13 janv. 2023 15:28 lien vers la Data-Sheet : Cliquez ici

bonjour ,


Jeremy, est-ce que l'usage de comparators ne serait pas preferable dans ton cas ?
les comparators sont basés sur des seuils analogiques ...
les IOC sur des Fronts logiques ...
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#13 Message par Jérémy » ven. 13 janv. 2023 16:34 lien vers la Data-Sheet : Cliquez ici

Salut Paul,

paulfjujo a écrit :Source du message Jeremy, est-ce que l'usage de comparators ne serait pas preferable dans ton cas ?

Non je ne pense pas. Le signal peut être considérer comme analogique il me semble; avec une R de pull-up au 3V3. un dalrignton aurais peut etre amélioerer la chose.

Mais j'ai crus voir que tu avais des soucis avec l'UArt et une broche ( je ne sais plus laquelle) et que tu avais rajouter des R de tirages non ?? Te souviens-tu de quelques chose de cet ordre la ?

Car j'ai détecter un comportement bizarre.
A chaque fois que je reçois un message radio par UART ma sortie pulse passe très brièvement à 1 ! ( genre 110µs)
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#14 Message par paulfjujo » ven. 13 janv. 2023 17:02 lien vers la Data-Sheet : Cliquez ici

J'ai effectivement fait beaucoup de test sur ce PIC12F1840 ( Petit ,mais costaud !)

Deboires rencontres sur PIC12F1840 :

Difficulte pour l'Init de l' UART (hardware UART) , relativement spécifique , via l'usage du registre APFCON qui permet de designer
les pin RAO,RA1 OU RA4,RA5 pour les fonctions TX et RX de l'UART

Gestion des erreurs de COM : Overflow et Frame error, necessitant plusieurs correctifs à integrer dans la routine d'interrupt UART
Erreurs qui se manifestent surtout lorsqu'une trame de caracteres est envoyée en 1 seule fois, ne se remarque pas si envoi de carcatere
à la vitesse de frappe au clavier , car delai intercaractere !
dans cet exemple , la reception est limitée à 32 car (taille du buffer), à modifier si besoin.

Non fonctionnement de la sortie RA0 si usage de l'UART.. la librairie UART modifie le TRISA ! =>
re-init TRISA APRES l'init de l'UART pour conserver RA0 en sortie.=> OK

Deboires rencontres :
Interaction CCP1CON avec Pin RA0, Dediée à l'UART


R pull up de 4,7k sur la pin RX UART ...
pour bien fixer le Niveau logique 1 au repos


mon init pour UART RA4 RA5

Code : Tout sélectionner

     // RA5 as input for RX , RA4 as output for TX RA2 as input
  TRISA=0b0100100;      // RA0 et RA1 en sorties
  ANSELA=0;             // no analog
  ANSELA.ANSA2=1;       // RA2= Analog input
  WPUA=0b00110000;      // weak pull up on RX & TX

  CM1CON0=0;       // disable comparators
  CM1CON1=0;
   // RA4=TX RA5=RX   (voir page 111 )
  APFCON=0;
  APFCON.P1BSEL=1;    // pour deconnecter de RA0 mais connecte sur RA4 ???!!
  APFCON.RXDTSEL=1;   // RX sur RA5
  APFCON.TXCKSEL=1;   // TX sur RA4
    // RA5 as input for RX , RA4 as output for TX RA2 as input
  TRISA=0b0100100;      // RA0 et RA1 en sorties
  PORTA.F0=0
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#15 Message par Jérémy » ven. 13 janv. 2023 17:31 lien vers la Data-Sheet : Cliquez ici

Pourquoi des pull up sur l'UART ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#16 Message par paulfjujo » ven. 13 janv. 2023 18:28 lien vers la Data-Sheet : Cliquez ici

R pull up de 4,7k sur la pin RX UART ...
pour bien fixer le Niveau logique 1 au repos


RX au repos est à 1
une WPUx (pull up interne) a une trop grande valeur ( et de plus il ne faut pas oublier de l'activer)
valeur de l'ordre de ( Vcc/100µA 3,3V->) 33K ohms
Avec 4,7K le niveau 1 est bien mieux fixé ,moins sujet à etre alteré par des parasites.

C'est surtout remarquable avec des modules bluetooth ou GT38 transceiver..
ECM avec la HF ?
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#17 Message par Jérémy » ven. 13 janv. 2023 19:11 lien vers la Data-Sheet : Cliquez ici

paulfjujo a écrit :Source du message ECM avec la HF ?

Non je ne pense pas ! mais ne l'exclue pas.

La densité du routage n'est pas folle, je suis en traversant .J'ai un petit point chaud (entouré en rouge) ! Mais comme j'ai pas l'habitude de bricoler avec le 230V... je ne connais pas trop les régles de l'art;

j' ai mis le 230V en haut et toute la partie isolée en bas.
recepteur.jpg

typon.jpg



Je verrai plutôt un truc tordu avec les interruptions et les priorités mais je ne trouve pas !
Je m'explique .

Avec ma télécommande j'envoie une commande au démarrage, cela me leve le FLAG "F_appui_bref" par UART , si je laisse le BP de la télécommande appuyé j'envoie à la suite une seconde commande qui lèvera le flag "F_appui_long" . J'envoie la commande "appui long" toute les 200ms par voie radio. Cela dans le but de faire varier la luminosité par appui long.

Jusque la rien de sorcier !

j'ai repris le code de 0 est rajouté quelques lignes de ton Init .
Il y a du mieux , mais ce n'est pas encore ca !

Avec le code ci dessous ( code complet) :
► Afficher Code


J'obtiens le résultat suivant: j'ai toujours une différence sur certaine impulsion de 0.7ms que je n’explique pas. Tout est gérer par interruption donc cela devrait être précis. Je précise que je ne reçoit rien en UART pendant cette phase. j'active la sortie en activant les interruption sur IOC, apres réception d'un appui bref.

Erreur largeur2.jpg


Quand la commande est allumée et fonctionne(avec queqlues erreurs) . Je laisse mon doigt sur la télécommande appuyé.
Donc en premier je reçois un appui bref, qui fait éteindre mes interruptions sur IOC et ensuite je reçois des commandes d'appuis longs par UART que me lève le flag appui long.
Le réception de l'appui bref éteint la sortie c'est normal, mais ensuite j'ai des activation parasites de la sortie , ( je ne comprends pas pourquoi) toutes les 200ms pile poil a chaque réception d'un message radio. la coïncidence me parait grosse ;

Voici le screen shoot de l'oscillo :
Erreur largeur3.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#18 Message par Jérémy » ven. 13 janv. 2023 19:18 lien vers la Data-Sheet : Cliquez ici

Pour les 700µs de plus c'est toujours la même histoire.

Mon chrono se relance quand je détecte un front descendant. Le différence entre un front montant et descendant est de 700µS. je vais confirmer par un test !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#19 Message par paulfjujo » ven. 13 janv. 2023 19:25 lien vers la Data-Sheet : Cliquez ici

au vu de ton schema sur l'autre post,
je te sugere de diminuer R8 + R11 ... ne laisser que R18 = 150k
mais de rajouter 2,2 à 4,7K aux bornes de la led de l'optocoupleur
ceci pour lineariser le comportement du pont de diode .. et de la led
afin d'ameliorer ton signal Zero cross .. qui est franchement beurk !
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#20 Message par Jérémy » ven. 13 janv. 2023 19:26 lien vers la Data-Sheet : Cliquez ici

Ok je prends ! j'allume le fer à souder !

[edit] je fais manger les enfants avant !
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

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