Un microcontrôleur c'est vachement pratique !

Conseils et outils pour réguler votre installation...

Modérateurs : ramses, Balajol, monteric, ametpierre, j2c

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

Ah!!! Je savais que j'allais en faire démarrer au moins un ! :cool:
L'avantage avec nos amis Belges, c'est toujours dans la bonne ambiance.
Tu as raison richardel et puis tu es électronicien, c'est ton métier. Je suis d'accord que pour développer un pilote automatique d'avion, vaut mieux aller dans le détail.
Et pour le détail rien de tel que l'assembleur.
Toutefois le basic dont je parle est assez riche en bibliothèques diverses dont I2c, 1wire, lcd, etc... pour lire trois sondes etcommander deux circulateurs.
Pour la même application Il suffit de regarder le code en basic et celui obtenu en assembleur après compilation pour se rendre compte de la différence.
Même en basic il faut structurer. Je pense que la programmation est une forme d'art où l'élégance du code varie fortement d'un concepteur à l'autre.
Et rien n'empêche de glisser une petite routine assembleur dans du C ou du basic quand ça coince.
Je teste souvent des bits isolés sans problèmes. Il y a basic et basic. D'ailleurs celui de Comfile utilisé dans le PB3B qui est un Pic 16F876A dont 4k sont occupés par l'interpreteur est un peu léger à côté de celui de MkroB. Mais suffisant. Un peu cher d'où ma migration vers le 876 ou le 628.
Ça fait près de trois ans que ma régulation tourne nickel avec des paramètres programmables par menu sur un LCD 2x16 et looging des tempés. Mais j'arrive en butée de mémoire et pour le même résultat en assembleur je suis certain qu'il me resterait de la place.
Quant aux entrées sorties il suffit de passer par l'I2c pour gérer le parc électrovannes, circulateurs et autre horloge temps réel.
C'est vrai aussi que si je dois me détendre une soirée, je me tape un petit programme en assembleur
C'est mieux que l'aspirine pour les maux de tête, je n'en doute pas. :lol: Si c'est pas du masochisme ça!!! :roll:

Dommage que chacun travaille dans son coin, on ferait de beaux trucs tous ensembles.

Amitiés ensoleillées.
JP

Avatar du membre
patrick07
Maitre Solaire
Maitre Solaire
Messages : 1869
Enregistré le : lun. avr. 03, 2006 11:07 am
Localisation : Sud Ardèche -07- St Germain
Contact :

Message par patrick07 »

Il est difficile de faire plus compact qu'un bon compilateur C, même en assembleur, par exemple:

L'octet stat est une "structure de bits":

if (stat.seconde) //si il est à 1 alors...
{
stat.seconde = 0; //on le met à 0
ReadKey(); //et on appelle une fonction
}

Le compilateur traduit ça en assembleur:

btfss _stat,4
goto l58
bcf _stat,4
call _ReadKey
l58: ...

Le code en assembleur est dispo pour une vérification facile... à condition de le connaître un peu.

C'est sûr qu'en mettant tous les petits bouts en commun on pourrait faire des choses bien...C'est pour ça que je disais un peu plus haut dans ce post que ceux qui voulaient partager devaient commencer par donner un peu !!!

Ça me fait penser à l'inventeur de génie qui avait trouvé un truc génial pour sauver le monde et devenir très riche, mais avait tellement peur qu'on lui pique son idée qu'il n'en a parlé à personne et est mort dans la misère. :cry:
Patrick

[url=https://ard-tek.com/index.php/forum/sujets-recents]Le forum du MaxiSun[/url]

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

Très juste patrick07, je pense que tout le monde est prêt à partager ses idées, la preuve, ce forum tourne fort. Malheureusement dans le cas présent je veux parler de l'électronique, c'est la tour de Babel.
On est trois si on remonte de quatre posts et les trois parlent une langue différente. Pour un même résultat.
JP

Avatar du membre
patrick07
Maitre Solaire
Maitre Solaire
Messages : 1869
Enregistré le : lun. avr. 03, 2006 11:07 am
Localisation : Sud Ardèche -07- St Germain
Contact :

Message par patrick07 »

Daniel53 je suis volontaire pour me pencher sur ta maquette et la faire avancer... J'ai toutes sortes de fonctions déjà écrites il ne reste plus qu'à mixer tout ça et le mettre en forme.... Si c'est pas un appel du pieds ça !!! :bleh2:

Cela s'adresse aussi à tous ceux qui auraient besoin d'un coup de main pour démarrer ou finaliser un projet à microcontroleur.
Patrick

[url=https://ard-tek.com/index.php/forum/sujets-recents]Le forum du MaxiSun[/url]

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Re,
Ah!!! Je savais que j'allais en faire démarrer au moins un ! Cool 2
Bon, jcb66, là t'as marqué un point. (mais avoue que c'était facile :roll: )

Il faut dire, qu'a ma défense et contrairement a la majorité des gens, mon premier programme était en assembleur (sur 8085) et ca a été le déclic. Qu'est-ce que j'ai été déçu par mon premier TRS80 parce qu'il parlait "basic".
Heureusement, l'editasm donnait l'accès a ce langage machine que j'aimais tant et a fait que je n'ai pas regretté mon achat.
Tu vois, quand je dis que je fais de l'assembleur pour me détendre... je t'assure que c'est vrai.
Maintenant, je n'ai rien contre les langages évolués (c'est, du reste, pour cette raison que je me suis dirigé vers les ATmega qui offre de la flash a la pelle.)
Le Bascom qui leur est dédié offre aussi l'I2C, 1 wire, PWM, et même la commande pour servo-moteur. Je n'en suis pas encore au "C" mais j'ai un doute pour retrouver ces particularités. Enfin, on verra bien.
Dommage que chacun travaille dans son coin, on ferait de beaux trucs tous ensembles.
En principe, oui. Mais comme tu le dis toi-même, chacun a son processeur, son langage de programmation, sa façon de programmer et de plus, chaque installation solaire a ses particularités.
Pas facile de faire quelque chose de commun.

Je suis d'accord avec patrick. Certain compilateurs vont jusqu'a repérer les groupes de quelques instructions identiques (du code généré) et les regroupent en sous-routine (et là, ca devient econome en place mais au prix du temps d'exécution et quels tortelinis...)

Par contre, je me souviens d'une moyenne que je voulais faire sur 8 mesures (en 16 bits) et j'ai donc fait une division par 8 et quand j'ai vu le temps que ca prenait, j'ai préféré faire 3 decalages en assembleur sur un registre 16bits. Résultats 10µs au lieu de plus de 2ms. Comme quoi, faut rester vigilant même avec du haut niveau. :shock:

NB: l'ennui avec les Français, c'est qu'ils aiment faire démarrer les Belges... :jesors: :-D

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

NB: l'ennui avec les Français, c'est qu'ils aiment faire démarrer les Belges...
Bon, on va essayer de se trouver un Suisse...
Non, je reste fidèle, je vole régulièrement avec un Belge et mon véto un ami de 20 ans est Belge, des valeurs sures.
L'assembleur, après avoir programmé en hexa, je l'ai appris sur 6502. C'était passionnant mais c'est loin. Comme tu dis avec la quantité de flash dont disposent les puces actuelles on peut tolérer du code pas trop propre si il est facile à travailler. Et sur du solaire on n'est pas à la µs près.
Le C est le plus portable, faudrait que j'ai le courage de m'y mettre.
CyberAmitiés @+
JP

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Re,
un ami de 20 ans est Belge, des valeurs sures.
!!!!..??? Oui, t'es quand même gentil Quand tu passes dans la région, je t'offre un verre :biere:

Tu as fais de l'hexa aussi ?
Le premier microcontroleur que j'ai eu était un 8748 (1k eprom, 64 bytes RAM (excusez du peu)) et a l'époque, j'étais abonné a une revue "micro robot" qui, dans son numéro 1 parlait du 48 et donnait le code hexa pour chaque instruction.
J'ai construis un programmateur autour de tasmon (moniteur sur TRS80), j'ai acheté un 8748 (L'équivalent de 70€ dans les années 80) et j'ai construis mon premier programme en me basant sur l'hexa du tableau (et les sauts calculés a la main). je faisais une dizaine d'instructions puis je laissais une dizaine de "NOP" pour les modifs (et ne pas devoir tout recalculer pour une petite modif).
La seule aide que j'avais était un désassembleur fait en basic (sur TRS80) juste pour voir si mon code était plausible.

Quelle joie de voir tourner son programme ainsi fait et ce, presque au premier coup.

Mais je t'assure que si le processeur éternuait, je savais quel bit changer pour que ca n'arrive plus :lol: . J'ai appris des tas de choses avec ce processeur :-D
Que de souvenirs...

Amitiés
Modifié en dernier par richardel le lun. mars 02, 2009 18:37 pm, modifié 1 fois.
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

Quand j'ai dit un ami de 20ans (de toutes façons il aurait été majeur!!!), et j'ai pas encore viré ma cuti. je parlais d'un ami que je connais depuis plus de 20ans :lol:
On a suivi des routes // cher ami car moi j'étais abonné à Elektor qui dans le début des années 80 a démarré une saga nommée Junior-Computer.
Il fallait même faire ses circuits imprimés au début. On programmait le 6502 de Rockwell avec 6 afficheurs 7 seg. 2 pour les datas 4 pour les adresses, en hexa... avec les NOP et les calculs de sauts, adressages directs indirects etc...
Ce projet a évolué pour aboutir après qq années à un ensemble identique à l'Apple II qui utilisait le même processeur et peut-être le même DOS d'Ohio Scientific. Il a fallu construire clavier, terminal video etc... A la fin on tournait sur un lecteur floppy 5'. Une vraie aventure hyper instructive car grâce à eux je peux dire que j'ai monté un ordi. de A à Z avec lequel j'imprimais mes relevés de vol sur un télétype. J'ai donc appris l'hexa puis l'assembleur et le basic. En même temps Le Haut-Parleur faisait la même chose avec un 6800. Si j'ai bonne mémoire c'était peut-être C. Tavernier l'auteur du truc.

Que de bons souvenirs et de nuits blanches. Et ça sert au moins au solaire maintenant.
Il me manque le C, une grosse lacune car c'est le langage universel.

Que nos gentils modérateurs nous excusent pour cette petite digression dérapante et nostalgique, on ne le fera plus.

OK pour la bière surtout que ce n'est pas de la daube là-bas :cool:
Pareil, si tu viens par ici.

Amitiés JP

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Re,
Quand j'ai dit un ami de 20ans (de toutes façons il aurait été majeur!!!), et j'ai pas encore viré ma cuti. je parlais d'un ami que je connais depuis plus de 20ans
j'avais bien compris... on a pas l'esprit mal tourné chez nous... (pas toujours, en tout cas :roll: )

Encore bien plus parallèle que tu l'imagine. J'étais encore aux études quand j'ai profité du temps de midi pour aller acheter le numéro 1 de la revue en question (1976 je crois et qui paraissait tous les deux mois, au début). Et depuis, tous les numéros se sont succédés jusqu'a celui du mois passé, en tout cas.
Je me souviens très bien du junior computer. Ils ont même sorti un livre dont la couverture tirait vers le rouge si je me souviens bien. Je ne sais plus ou je l'ai mis mais je l'ai vu il y a quelques mois.
Comme j'étais de la filière parallèle, (plutôt intel que motorola), j'ai lu les articles mais j'ai pas réalisé.
j'imprimais mes relevés de vol sur un télétype
Attends... ne me dit quand même pas que le parallelisme entre nous deux va jusque là... serais-tu velivoliste aussi ?
Que nos gentils modérateurs nous excusent pour cette petite digression dérapante et nostalgique, on ne le fera plus.
Oh si, oh si, qu'ils disent les modérateurs (espérons) enfin, on ne sort (pas trop) du sujet... et si tu es velivoliste, on arrivera bien a planquer un microprocesseur la dedans :lol:

Bon, d'accord, 2 pater et 3 ave.

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

Un coup d' œil ici te renseignera, tu es un pro de l'électronique, moi c'était de l'aéro.
http://pagesperso-orange.fr/jean-pierre.jacobee/

Mais le vol à voile ça remonte à quelques années. Maintenant, grandeur et décadence, c'est l'ULM avec un bon copain Belge propriétaire d'une très belle machine.

A tout de suite. Tu peux utiliser mon e-mail si tu ne veux pas déranger nos amis solaristes.
JP
Modifié en dernier par JCB66 le lun. mars 02, 2009 21:37 pm, modifié 1 fois.

Avatar du membre
daniel 53
Technicien Solaire
Technicien Solaire
Messages : 406
Enregistré le : mer. déc. 27, 2006 21:49 pm
Localisation : 53 300 Ambrières-les-Vallées

Message par daniel 53 »

Bonjour

Me voilà enfin!
Je ne sais pas si vous avez remarqué, mais mon compteur à votre gauche de l'écran s'est récemment incrémenté. Aussi, cela a donné lieu à une grosse fête (bal folk, je ne sais faire que ça) et cela m'a occupé un certain temps.
Maintenant que j'ai passé l'age de fêter mes 50 balais, je reviens sur le forum.

Voici donc, à la demande générale de Patrick, le schéma sur lequel je travaille.
C'est en fait une exploitation du "déjàtoutfait". Je souhaite plus tard le faire évoluer pour exploiter les entrées analogiques et piloter ainsi mon installation.
La première étape consiste pour moi à afficher successivement au moyen du clavier rudimentaire, des températures lues par des DS18B20.
Pour l'instant ça marche un peu, sauf que le clavier marche tellement mal qu'il n'est guère possible d'attribuer une fonction à chaque touche.
Le programme est présent en pièce jointe, ne pas oublier de mettre l'extension .asm pour le faire bouloter a votre compilateur préféré.


Affichage avec 3 sondes

Première sonde :
01 20,4 4B467F
28BC265C01000061

Deuxième sonde :
02 20,6 4B467F
2832B65C0100002F

Troisième sonde :
03 20,4 4B467F
2816C25C01000037

Tous les switchs sont configurés à 1, l’affichage initial est donc 2400 B 1111111.
Sur cette maquette, les switchs 1, 4, 5 et 6 n’ont aucune influence sur le fonctionnement de la carte.
J’ai essayé de supprimer ce qui concernait l’IR : sans résultat, le clavier est toujours aussi capricieux.

Pas facile de comprendre le programme écrit par un autre, déjà que j'arrive à peine à comprendre ce que je dis moi-même...

Merci pour vos commentaires...

Daniel
Fichiers joints
onewirc.txt
Demandez le programme!
(50.27 Kio) Téléchargé 76 fois
Le schéma
Le schéma
maquette 2 copie.jpg (147.99 Kio) Vu 2033 fois
tableau vitesse de transmission.doc
tableau vitesse de transmission
(27.5 Kio) Téléchargé 75 fois

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Bonjour a tous,

Comme je ne suis pas un PICman, juste deux petites remarques générales.
1- A part le reset, je ne vois que trois poussoirs (*O#)
2- Je suppose que tu n'as pas oublié de traiter les rebonds
Désolé de rester si général mais si ca peut aider...

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Avatar du membre
JCB66
Stagiaire Solaire
Stagiaire Solaire
Messages : 109
Enregistré le : dim. déc. 25, 2005 19:03 pm
Localisation : ELNE (66)
Contact :

Message par JCB66 »

Salut Richardel, et à tous,

C'est ben vrai ça, je ne trouve pas de routine de gestion du rebond dans le code. Mais c'est peut-être dû à mon manque d'expérience de l'assembleur pic.

Les routines ds18b20 c'est du costaud, je ne regrette pas de les programmer en basic.

@+
JP

Avatar du membre
patrick07
Maitre Solaire
Maitre Solaire
Messages : 1869
Enregistré le : lun. avr. 03, 2006 11:07 am
Localisation : Sud Ardèche -07- St Germain
Contact :

Message par patrick07 »

Bonsoir Daniel, tous,

Mince je me fais prendre à mon propre jeu !!! :oops:

L'assembleur m'est devenu complètement indigeste et pourtant j'en ai écrit des lignes pour les 6801/6805/68HC11/ST6/ST9... Depuis que je suis passé aux PIC, tout en C, c'est autrement plus lisible.

Pour le clavier il me semble que tu te compliques:

movlw b'00000111'
movwf PORTA
bcf PORTA,0
btfss PORTC,3
goto endkey
bcf PORTA,1
btfss PORTC,3
goto endkey
bcf PORTA,2
btfss PORTC,3
goto endkey
movlw b'11111111'
movwf touche
return

endkey:
movfw PORTA
andlw b'00000111'
xorlw b'00000111'
movwf touche
return

ce qui devrait donner: 1 pour touche 1, 2 touche 2, 3...3 et 0xff pour touche relâchée.
Mais comme je ne connais que très peu l'assembleur PIC je peux dire des c*nneries.
Quand on interroge les touches les unes après les autres, à moins d'avoir des switchs vraiment pouraves l'anti-rebond se fait tout seul... sinon il faut répéter deux fois la séquence en sauvegardant le résultat de la première passe et le comparer au résultat de la deuxième. Si les 2 sont égaux => touche OK, sinon on refait...

:bye:
Patrick

[url=https://ard-tek.com/index.php/forum/sujets-recents]Le forum du MaxiSun[/url]

Avatar du membre
daniel 53
Technicien Solaire
Technicien Solaire
Messages : 406
Enregistré le : mer. déc. 27, 2006 21:49 pm
Localisation : 53 300 Ambrières-les-Vallées

Message par daniel 53 »

Merci pour vos réponses

Le fait de ne voir que 3 touches n'est pas un problème de vue qui baisse. C'est simplement un clavier très succinct.

En effet la routine one wire, c'est du costaud. Comme vous l'aurez compris, c'est du copier/coller. Je n'ai pas l'habitude de jaser couramment dans le patois de Shakespeare. En fait, de ce programme je n'ai pratiquement rien fait sinon que de supprimer des trucs inutiles... Tellement que c'est du tout fait et que j'ai un poil dans la main.

Je vois que Patrick a un peu de mal mais de beaux restes en assembleur. Je tente la greffe ce soir...

A bientôt

Daniel

Répondre

Retourner vers « Régulation »