Formation aux PIC - Page 4

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
Re: Formation aux PIC


Quoted text here. Click to load it
==============
De quel type de [code] parlez-vous  , code source ?   code
exécutable(machine) ? ...





Re: Formation aux PIC
il faudrait renommer cette discussion "formation aux bonnes pratiques du C",
il y a 50 façon de faire, des bonnes des pas bonnes, des élégantes, des
moches, mais au final, souvent, le résultat est le même, avec le
préprocesseur on fait ce qu'on veut, on peut y foutre du code, des header,
des types, des commentaires, des data, etc, au final de toute façon en
sortie du preprocesseur tout est en vrac dans 1 seul fichier pour chaque
.obj / .o généré.

ensuite c'est une question de philosophie et de façon de travailler, souvent
les bidouilleurs n'ont que faire de tout le bazar de .h, lib, .c makefiles,
etc... alors que dans le monde pro, on en a des centaines, voir des milliers
et que ce sont rarement les mêmes personnes qui font les lib de celles qui
les utilisent, le .h (proto/contrat d'interface peu importe comment on
appelle ça) est le seul lien entre un prog client et une librairie fournie.

Pascal


Re: Formation aux PIC
On Sep 25, 6:49A0%pm, "Pinball-Man" :

Quoted text here. Click to load it

Ou plutot faire suive sur un NG adequat, genre: <comp.lang.c>

Re: Formation aux PIC
On Sep 25, 4:42A0%pm, "maiorE9%" :

Quoted text here. Click to load it


Tsss ...

Re: Formation aux PIC
On Sep 21, 9:11A0%am, "Pierre_Edouard" :

Quoted text here. Click to load it

On sait bien sur que "prE8%s processeur" signifie "pas loin du
processeur"
et on sait bien sur que cela n'a pas de sens.

On sait bien sur que "prE9%processeur" signifie "avant le processeur"
et on sait bien sur que cela a un sens.

Avant d'ecrire des aneries que d'autres pourraient croire
et ainsi faire passer ta propre maladie a des innocents,
tu devrais d'abord tenter de comprendre ce que tu lis,
au lieu d'adopter ce ton docte qui te ridiculise.

Re: Formation aux PIC
Quoted text here. Click to load it



' elles ne se compilent que si elles peuvent etre appelE9%es par le
programme "main") ', si
cette phrase se rapporte aux fonctions, est est fausse ou mal
exprimE9%e.

L'appel et la compilation du corps de la fonction (dE9%finition /
dE9%claration) sont deux choses indE9%pendantes.
L'un comme l'autre peut EA%tre effectuE9% indE9%pendemment lors de la
compilation.

C'est E0% l'E9%dition des liens que cela est rE9%solu.

Et comme indiquE9% plus loin dans le fil, mettre du code dans des
includes est une mauvaise habitude.

Sur un projet trE8%s gros, si la modularitE9% des fichiers est mauvaise,
une simple modif d'un source fera
perdre un temps fou en recompilant des choses qui ne devraient pas
l'EA%tre.

D'ou l'importance de dissocier la dE9%claration de la dE9%finition.

--
-Stan





Re: Formation aux PIC


.../... D'ou l'importance de dissocier la déclaration de la définition.
.../...
===========
Inutile de se perdre dans un bavardage inutile ,  je n'admet simplement pas
les remarques à l'accent désobligeant comme "n'importe  quoi"
En sus, je n'ai  pas opposé la déclaration est la définition  j'ai
simplement fait remarqué aux tenants du basic que les "c" permet
l'élaboration de fonctions "universelles" que l'on peut regrouper  dans des
"fichiers include" et que l'on peut appeler et compiler lors de la création
d'un programme .






Re: Formation aux PIC
Après mûre réflexion, Pierre_Edouard a écrit :
Quoted text here. Click to load it




C'est ce que je craignais: chacun a ses habitudes et trouve que c'est
la solution 'la meilleure'. Un autre demande pourquoi et dit que non,
et c'est parti dans des échanges d'experts.
je ne suis pas programmeur, ne souhaite pas le devenir, je veux juste
faire des bricoles sans me prendre la tête. OK pour connaître ce qu'il
faut (registres etc.) mais pas OK pour mordre dans la discussion sur
les 'includes': c'est du chinois.

donc je crois que je vais qd même aller vers le basic avec tous ses
inconvénients, c'est le plus éloigné de l'esprit programmeur.
merci de vos lumières, cela m'a bien aidé en creux.



Re: Formation aux PIC
Quoted text here. Click to load it

Mais non, c'est un détail, on peut très bien faire du C pour µC dans 1 seul
fichier on peut très bien vivre sans faire de lib, de projets avec plusieurs
.c séparés et includes ni même faire de fonctions, on peut tout coder dans
le main ça ne marchera pas plus mal :)

Et petit à petit, tu pourras apprendre les concepts plus poussés, fonctions,
include, librairies, etc... il n'y a pas besoin d'être un expert en C pour
faire du bidouillage sur µC.

Oublions la discussion sur les bonnes pratiques du C:

Nul besoin d'être un expert en C pour s'y mettre, ça va te prendre le même
temps que le basic à apprendre, il est très simple, if/else, for(), quelques
accolades et avec ça on fait à peu près tout, (même le switch on peut aussi
très bien s'en passer au début :-) ), mais au moins, tu auras appris un
langage universel.

voilà un squelette minimal par exemple, tu télécharges mplab

 http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_36.zip

il est livré avec (copié betement de la doc du compilo htc) c'est un example
tout bete pour faire clignoter les sorties du port B d'un pic 16f877 bien
connu:

#include <htc.h>

__CONFIG(XT & WDTDIS & PWRTDIS & BORDIS & LVPEN & WRTEN & DEBUGEN & DUNPROT
& UNPROTECT);
void init(void)
{
    // port directions: 1=input, 0=output
    TRISB = 0b00000000;
}

char counter;
void main(void)
{
    counter = 0;
    init();
    while (1){
        PORTB = counter;
        _delay(10000);
        counter++;
    }
}

voilà, c'est quand même simple tu trouves pas ?

tu peux partir de là pour faire quelque chose de plus complexe petit à
petit, sans forcément faire de fonctions, juste en ajoutant des
initialisations au besoin dans init() et en ajoutant du code intelligent
dans le "while".

et quand tu auras fait un peu trop de code dans le main ou trop de
copié/coller, alors tu te diras qu'il sera temps de faire des fonctions, etc
et petit à petit tu feras évoluer le code en même temps que tu apprends les
base du langage, qui reste, faut il le rappeler, simpliste.

tu remarqueras qu'on ne doit jamais sortir du while(), sinon on sort de
main() aussi et là le cpu s'arrete ou reset tout seul mais ça n'a rien à
voir avec le C c'est valable en assembleur et en basic aussi il faut
toujours une boucle infinie quelque part sur les µC.

Si tu as activé le watchdog il faut régulièrement appeler CLRWDT() avant
qu'il que le watchdog ne déclenche un reset automatique, note que le
watchdog, c'est aussi super facultatif en "bidouillage" on peut très bien
s'en passer aussi.

Pascal


Re: Formation aux PIC
Pinball-Man avait soumis l'idée :
Quoted text here. Click to load it

Bonjour Pascal

ça c'est constructif.
je vais aller voir, comme quoi une explication simple d'un sujet simple
reflète mieux la réalité !
merci encore

cordialement
Guillaume



Re: Formation aux PIC
Quoted text here. Click to load it

En fait pour bien commencer, perso je me fixerais un but, même un truc
bateau et pas forcément super compliqué, mais quelque chose qui permet, en
fin de projet, d'avoir progressé en douceur sans se prendre la tête tout de
suite en se lançant dans quelque chose qui parait insurmontable, je donne un
exemple totalement au hasard mais qui permet de montrer comment en partant
d'un petit truc, et en le faisant évoluer on peu arriver à faire quelque
chose de sympa, sans forcément balancer tout le code d'avant, c'est bien sûr
bateau et déjà vu 1000 fois mais ça fait déjà pas mal le tour de la question
une fois que tout est fini t'es devenu un expert :-) donc mon exemple:

- commencer par faire un télérupteur tout bête: gestion d'une seule entrée
et d'une seule sortie, un coup j'appuie, ça allume, un coup j'appuie ça
éteint.

- là tu vas te rendre compte que ça ne marche pas bien à cause des rebonds
des fois ça marche, des fois pas, il faudra ajouter un anti-rebonds logique
sur l'entrée, il y a plusieurs façons de faire, la plus simple étant de
gérer un bete délai avant de valider une action, ou de ne lire l'entrée que
toutes les X milisecondes, ou de faire une bascule logicielle, ou une
combinaison des 2, etc.

- puis ajouter un timer, le télérupteur se transforme alors en minuterie
basique, un appui déclenche un timer qui éteint la sortie au bout de X
secondes.

- ensuite ajouter une gestion 'maline': si lampe éteinte et appui bref =
minuterie, si lampe éteinte et appui long ça allume la sortie sans
minuterie, si lampe allumée et appui bref = ça relance la minuterie, si
appui long et lampe allumée alors ça annule la minuterie et ça éteint la
sortie. là déjà t'as un télérupteur/minuterie de luxe :)

- puis viendra probablement l'envie de commande un peu plus qu'une seule
sortie et un bouton, alors rajouter des boutons de "setup" pour régler la
durée, durée que tu stockera bien sur dans la mémoire eeprom et tu feras
clignoter lentement une autre sortie correspondant au nombre de minutes
réglées, ça fait 3 entrées et 2 sorties.

- puis ajouter un écran lcd, là ça se corse, mais pas tant que ça car il
existe des tas de librairies toute faites (comme en basic et en seembleur
bien sur) pour commander un lcd, c'est pas très compliqué à gérer. tu
pourras alors ajouter l'indication du réglage de durée et lors de l'appui un
décompte... (je te passe le détail de comment connecter un lcd il a des
milliers d'exemples c'est toujours à peu près pareil en 4 ou 8 fils)

- puis transformer tout ça en horloge, tout en gardant la minuterie,
afficher l'heure/minute/seconde, réglable bien sur depuis des boutons.

- ensuite continuer et permettre de programmer un allumage/extinction à une
certaine heure

- puis gérer plusieurs plages horaires pour faire un simulateur de
présence/programmateur

- ajouter une fonctione random pour faire des allumages "au hasard" dans
certaines plages

- puis ajouter un circuit d'extension I2C, par exemple pour permettre de
piloter plus de sorties à différentes heures ou récupérer l'heure, puisqu'il
y a des composants "horloge" tout faits.

- puis ajouter une gestion usb en émulation rs232, là c'est déjà plus
compliqué, il faut la petite interface usb qui va bien, mais pas mal de
petites cartes de développement l'ont et avec un bête terminal sous windows
tu envoies des ordres à ton système pour allumer/éteindre tel ou tel sortie.

- etc, déjà si t'arrives là, à mon avis, t'auras plus besoin de personne
pour programmer en C :-)

Pascal


Re: Formation aux PIC
Après mûre réflexion, Pinball-Man a écrit :
Quoted text here. Click to load it

Je te remercie beaucoup. je vais carrément imprimer ton mail et suivre
ce dvpt. j'ai été voir les compilateurs et il faut encore comprendre le
hard dont j'ai besoin...



Re: Formation aux PIC
On Sep 25, 9:22 am, Guillaume :

Quoted text here. Click to load it

En general les kits de developpement sont fournis avec
des exemples de code dont la difficulte est tres progressive,
permettant justement d'evoluer en programmation de uC,
que ce soit en ASM ou en C. Si tu preferes monter toi-meme
ton circuit electronique, ces packages d'exemples peuvent
etre downloades a part et tu peux utilement t'en inspirer.

Re: Formation aux PIC
Perso j'aime bien les atmel par exemple chez myavr ils ont des kit assez
sympa avec plein de périph pour jouer avec:

un truc comme ça
http://www.myavr.fr/4-myavr-board-2-usb.html

avec des modules plug&play (ou presque...)
http://www.myavr.fr/4-modules-d-extension

parfait pour bidouiller (un lcd, une horloge à pile, capteurs divers etc)

ou pour les plus fortunés avec un afficheur dot matrix et tout:

http://www.myavr.fr/54-plateforme-avancee-mk3.html

Pascal


Re: Formation aux PIC
On Sep 21, 3:07A0%pm, "Pierre_Edouard" :

Quoted text here. Click to load it

Si tu racontes n'importe quoi c'est normal que tu te fasses tailler un
costard.

Re: Formation aux PIC
// Le 25/09 a 11h22 Slartibartfast :

char *p = "stn", *s =
 "Si tu racontes n'importe quoi c'est normal"
 " que tu te fasses tailler un costard."

 *strrchr( s, *p++ ) = *(p+1);
 *strrchr( s, *p++ ) = *p;
 printf( "%s \n", s );

// ;-)

Re: Formation aux PIC
Quoted text here. Click to load it

J'espE8%re que tu ne manipules pas les pointeurs
comme E7%a dans tes programmes embarquE9%s.

--
-Stan

Re: Formation aux PIC
On Sep 26, 8:11A0%pm, Stan :

Quoted text here. Click to load it

|> J'espE8%re que tu ne manipules pas les pointeurs
|> comme E7%a dans tes programmes embarquE9%s.

Ca marche tres bien, merci !

Re: Formation aux PIC
Quoted text here. Click to load it

Tu t'es dE9%ja demandE9% oF9% E9%tait rE9%servE9% l'espace mE9%moire de 'p'=
 et 's' ?
Et comment on appelle ces dE9%clarations ?

--
-Stan


Re: Formation aux PIC

Quoted text here. Click to load it

|> Tu t'es dE9%ja demandE9% oF9% E9%tait rE9%servE9% l'espace mE9%moire de 'p' et
's' ?

|> Et comment on appelle ces dE9%clarations ?

Ca fait 20 ans que je code en C, merci.
As-tu compris ce que fait ce code,
juste en le lisant, sans le faire tourner ?

Site Timeline