TIMER 1 pic 16f690 non fonctionnel

Forum de support pour les locuteurs de la langue française qui souhaitent écrire dans leur langue maternelle.

Moderator: Benj

Post Reply
cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Bonjour à tous,

Je travail sur un régulateur d'avance d'allumage pour moto ancienne.
J'ai réalisé un premier programme qui fonctionne bien sur un PIC 30F2011 et j'ai voulus le migrer vers un PIC 16f690 car j'en ai plein les placards.
Et là ! :x j'ai plein de retour d'erreur sur les commandes associées au TMR1. J'ai cherché plusieurs heures mais impossible de savoir d'ou vient le problème.

Merci de votre aide !

Image
Image

cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Bonjour à tous,

Je m’aperçois des limites de Flowcode de pus en plus.
Le concept de base est bien, je suis assez fan des interfaces graphiques pour la programmation car ça permet d’élaborer un code même complexe très rapidement et la lecture est très facile.
Mais voilà je pense que le fond du problème de Flowcode est celui-ci, il y a une foule d’entrée sortie (capteur, écran…) et même un mode de simulation 3D ! Alors qu’il subsiste des fonctions de bases non gérées correctement, voir même non fonctionnel sur certains PIC proposés comme les timers par exemple.
L’utilisation des timers est incontournable. Comment est-il possible que dans un logiciel aussi poussé que Flowcode, nous n’ayons pas accès à la simple lecture d’un timer et qu’il faille passer par du code C qui n’est pas pris en compte par la simulation ?!
Comment est-il possible qu’il faille encore bidouiller pour avoir une clock interne fonctionnel sur certain gamme de PIC ? Encore une fois il faut passer par du code C pour configurer les registres correctement. A quoi sert alors le menu option projet/configurer ?
Comment est-il possible qu’il faille encore bidouiller dans les fichiers de programme file pour avoir l’accès à une fonction essentielle comme l’écriture dans une EEPRON d’un microcontrôleur ?
A force de faire du code C sur Flowcode ou de bidouiller dans programme fille pour résoudre les problèmes, j’ai résolut mon problème en codant directement sous MPLAB X en C.
En conclusion, concernant Flowcode dans sa globalité, au lieu de s’étendre dans des options de fou et des simulations incroyables, il vaut mieux ce concentré sur une base logiciel solide. Que toute la gamme de microcontrôleur proposée soit parfaitement fonctionnelle et surtout dans ces fonctions de bases comme la mémoire, les timers...

Pour ceux que ça intéresse voici la solution sous MPLAB :

Image

User avatar
Benj
Matrix Staff
Posts: 15312
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4803 times
Been thanked: 4314 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by Benj »

Bonjour,

Quelle version de Flowcode utilisez-vous? Aussi s'il vous plaît pouvez -vous envoyer le fichier .fcf du projet Flowcode ou .fcfx et je vais étudier la question



Hello,

Which version of Flowcode are you using? Also please can you post the Flowcode project file .fcf or .fcfx and I will investigate the issue.

cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Bonjour Benj,

Désolé pour la critique mais j'avais besoin de m'exprimer...
Voici en attachement le code qui pose problème. je travaille actuellement sous Flowcode 6.
Attachments
allumagev3.rar
(27.9 KiB) Downloaded 308 times

cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Bonjour Benj,

Toujours pas de solution à ce problème ?

User avatar
Dan81
Valued Contributor
Valued Contributor
Posts: 268
Joined: Sun Jan 15, 2006 4:07 pm
Location: Albi France
Been thanked: 60 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by Dan81 »

Bonjour CB

J'ai fait qq modifs.
Les registres doivent être écrits en minuscule.
(sauf erreur) on ne peut accéder à TMR1 directement car il est sur 16bits.

Il faudrait simplifier tes calculs, cela prend 20ms (@ 4MHz).
par ex : mettre TRMIN = 125 000 / VAL

Je ne vois pas l’intérêt d'un fonctionnement par interruption TIMER.
Il me semble que : " t1con = 0x01 ; " suffirait .

Quelle est ta fréquence maxi d’entrée ?


Daniel
Attachments
allumagev3a.fcfx
testé sous proteus
(9.83 KiB) Downloaded 323 times

cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Bonjour Daniel,

C’est tout de même très étrange car ce même programme sous un PIC 30F2011 fonctionnait très bien avec TMR1 (en majuscule !) et la lecture du timer de 16bits se fessait directement sans aucun souci.
Comme tu as pu le remarquer, il y a plusieurs lignes de calculs qui ne servent a rien, en effet j’ai affiché pendant le développement certaines indications comme le nombre de tr/min via rs232 que j’ai supprimé par la suite, il reste donc quelque reliquat de calcul qui peuvent être simplifiés.
Il s’agit d’un projet portant sur un allumage électronique pour une moto des années 70 pouvant atteindre 12500 tr/min soit une fréquence d’interruption pouvant monter jusqu’à 208Hz.
L’idée est simple j’attends le déclenchement d’une interruption (capteur optique détectant le point mort haut du moteur (PMH)). Puis, je calcul le nombre d’impulsion entre deux PMH. L’allumage de la bougie devant se faire 2,2ms avant le PMH, je soustrais 2.2ms au nombre d’impulsion entre deux PMH. Et enfin j’attends que le TMR1 arrive à cette valeur pour déclencher l’étincelle de la bougie.

Le TMR1 a donc une double fonction dans ce code :

- Il compte le nombre d’impulsion entre deux interruptions. Autrement dit, il compte le temps entre deux passages au point mort haut du moteur.
- Il sert de chronomètre pour le déclenchement de l’allumage de la bougie 2.2ms avant le PHM.

Voici quelque vidéo de ce cela peut donner :

https://youtu.be/fup-AJKJlrI

https://youtu.be/npKgWnfmY2g

Merci pour cette solution, le problème résidait surtout dans l’inscription de TMR1 en majuscule. Mais pourquoi cela fonctionnait sous un PIC 30F ? L’inscription des timers en minuscule est-ce une règle d’or sous Flowcode à contrario de XC8 ou autre compilateur ?

User avatar
Benj
Matrix Staff
Posts: 15312
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4803 times
Been thanked: 4314 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by Benj »

Bonjour,

Les registres sont majuscules pour le compilateur PIC 16 bits .

Les registres sont minuscules pour le compilateur PIC 8-bits en Flowcode 6 ( BoostC ) et majuscules pour le compilateur PIC 8 bits dans Flowcode 7 ( XC8 ) .



Hello,

Registers are upper case for the 16-bit PIC compiler.

Registers are lower case for the 8-bit PIC compiler in Flowcode 6 (BoostC) and upper case for the 8-bit PIC compiler in Flowcode 7 (XC8).

cb28
Posts: 17
Joined: Thu Jun 04, 2015 12:25 pm
Has thanked: 5 times
Been thanked: 2 times
Contact:

Re: TIMER 1 pic 16f690 non fonctionnel

Post by cb28 »

Benj,

Et bien voila une bonne nouvelle ! Je vois que l'équipe de Flowcode a eu le soucis de faire évoluer leur soft dans le bon sens.
Avoir intégrer XC8 comme compilateur est vraiment une bonne chose. Je me presse de télécharger la version 7 pour tester tout ça :D :D :P

Merci

Post Reply