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à ! 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 !
TIMER 1 pic 16f690 non fonctionnel
Moderator: Benj
-
- 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
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 :
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 :
- 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
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.
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.
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
-
- 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
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.
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 313 times
- Dan81
- 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
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
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 328 times
-
- 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
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 ?
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 ?
- 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
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).
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).
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
-
- 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
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
Merci
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
Merci