Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 40 invités

Discussions générales sur le DIY Audio : choix des HP, comparaisons des principes : clos vs BR, etc

programmation micro controleur

Message » 16 Jan 2015 12:20

Le problème de l'assembleur c'est que ce n'est pas portable + très long à écrire et à appréhender et peu lisible au final.
A mon avis, c'est pas la solution la plus simple pour démarrer.
Pour l'architecture, on peut se limiter à bien appréhender l'action des registres des différents modules constituant le micro dans un premier temps (ce qui peut déjà devenir complexe) sans avoir à se pencher sur le jeu d'instructions du CPU.
Si on considère ce simple exemple pour faire clignoter des leds - c'est quelques lignes en C, mais va faire ça en assembleur.

Cela étant, je suis d'accord avec toi pour les bénéfices de l'assembleur que tu cites mais sans doute pas pour débuter.

Edit: grillé par Thierry
Eric.D
 
Messages: 1870
Inscription Forum: 05 Juil 2006 12:45
Localisation: dans le 06
  • offline

Message » 16 Jan 2015 12:47

Ton exemple allume des leds certe, mais ne montre en rien ce qui se passe au niveau du µpro. Ce n'est pas du tout pédagogique.
Tout dépend de ce qu'on veut faire...
Philby
 
Messages: 9819
Inscription Forum: 12 Mar 2001 2:00
Localisation: 33
  • offline

Message » 16 Jan 2015 14:03

connaitre les bases de fonctionnement des µC c'est indispensable mais pour la programmation, faut vivre avec son temps !
L'assembleur c'était fait pour les procs de cette époque. On n'en est plus là. De la recherche d'efficacité avec ressources contraintes on est passé au souci de productivité et de maintenabilité.
De plus apprendre l'assembleur pour passer ensuite a des langages structurés est une erreur. On prend des réflexes inutiles ou mauvais. Surtout que le C est tellement permissif qu'il permet de programmer quasiment comme en assembleur, donc les mauvaises habitudes persistent. :grr:

Après, on peut causer de la bonne vieille époque puisque pas besoin d'être centenaire pour avoir vécu plusieurs révolutions :lol:
alkasar
 
Messages: 11517
Inscription Forum: 29 Nov 2005 22:47
Localisation: Neuf deux
  • offline

Message » 16 Jan 2015 14:09

Je suis d'accord messieur, mais en quoi est-il utile de connaitre quoique ce soit au µpro pour exécuter ou écrire ce programme?
Et en quoi est-ce utile pour avancer dans cette connaissance?

Après, oui, ça peut être utile pour développer des applications complexes, mais pas pour connaitre un µprocesseur.

Code: Tout sélectionner
#include "mbed.h"
 
DigitalOut led_1(D2); // D2 initialisée en sortie
DigitalOut led_2(D3); // D3 initialisée en sortie
DigitalOut led_3(D4); // D4 initialisée en sortie
 
int main() {
while(1) {
led_1 = 1; // On allume la LED 1
wait(0.5); // ...pendant 0.5 seconde
led_1 = 0; // On éteint la LED 1
led_2 = 1; // On allume la LED 2
wait(0.5); // ...pendant 0.5 seconde
led_2 = 0; // On éteint la LED 2
led_3 = 1; // On allume la LED 3
wait(0.5); // ...pendant 0.5 seconde
led_3 = 0; // On éteint la LED 3
}
}
Philby
 
Messages: 9819
Inscription Forum: 12 Mar 2001 2:00
Localisation: 33
  • offline

Message » 16 Jan 2015 14:10

D’où l’intérêt d'utiliser un debugger tel que le MDK de Keil pour que cela reste pédagogique. C'est un outil puissant qui permet derrière chaque instruction C/C++ voir l'assembler correspondant, visualiser les registres, mettre des points d’arrêt, faire du pas à pas, etc. La version MDK_lite est gratuite (il suffit de s'enregistrer).
Eric.D
 
Messages: 1870
Inscription Forum: 05 Juil 2006 12:45
Localisation: dans le 06
  • offline

Message » 16 Jan 2015 14:13

Eric.D a écrit:D’où l’intérêt d'utiliser un debugger tel que le MDK de Keil pour que cela reste pédagogique. C'est un outil puissant qui permet derrière chaque instruction C/C++ voir l'assembler correspondant, visualiser les registres, mettre des points d’arrêt, faire du pas à pas, etc. La version MDK_lite est gratuite (il suffit de s'enregistrer).


Là oui, je suis d'accord. Mais alors, pourquoi passer par le C ou C++? (je parle d'applications simples utilisées dans un ampli pour les protections, le potar, l'afficheur, la telco par exemple).

Edit : je viens de voir le pdf du mdk de chez Keil!!! Pour apprendre!!! C'est une montagne non?
Dernière édition par Philby le 16 Jan 2015 14:21, édité 1 fois.
Philby
 
Messages: 9819
Inscription Forum: 12 Mar 2001 2:00
Localisation: 33
  • offline

Message » 16 Jan 2015 14:20

Mais alors, pourquoi passer par le C ou C++? (je parle d'applications simples utilisées dans un ampli pour les protections, le potar, l'affichage).
pour la maintenabilité !

retoucher de l'assembleur 6 mois après l'avoir écrit c'est une plaie sans nom si tu ne fais pas que ça a longueur de journée :oldy:
alkasar
 
Messages: 11517
Inscription Forum: 29 Nov 2005 22:47
Localisation: Neuf deux
  • offline

Message » 16 Jan 2015 14:22

et avec un débugger moderne, c'est super facile d'exécuter le code pas_a_pas, surveiller la mémoire et les registres etc.
alkasar
 
Messages: 11517
Inscription Forum: 29 Nov 2005 22:47
Localisation: Neuf deux
  • offline

Message » 16 Jan 2015 14:26

Je dirais que l’intérêt vient des fonctions pré-definies en librairies tel que "DigitalOut" dans l'exemple (qu'il faut bien comprendre pour les utiliser).
Pour l'afficheur par exemple, il faut toujours rentrer en détail dans sa spec pour savoir comment le mettre en oeuvre et initialiser/programmer le micro en conséquence, sinon il n'affichera rien ou avec un affichage corrompu.
Eric.D
 
Messages: 1870
Inscription Forum: 05 Juil 2006 12:45
Localisation: dans le 06
  • offline

Message » 16 Jan 2015 14:26

alkasar a écrit:
Mais alors, pourquoi passer par le C ou C++? (je parle d'applications simples utilisées dans un ampli pour les protections, le potar, l'affichage).
pour la maintenabilité !

retoucher de l'assembleur 6 mois après l'avoir écrit c'est une plaie sans nom si tu ne fais pas que ça a longueur de journée :oldy:


Bien documenté (comme doit l'être n'importe quel soft) avec les commentaires qui vont bien, je ne trouve pas.

Un exemple de ce que je fais (initialisation d'un port d'entrée sortie) 9 lignes de commentaire pour 2 lignes de code... :mdr: :

Code: Tout sélectionner
   ; portB initialize en sortie uniquement (afficheur, et adressage atapi)
   ;PB0 à PB3 : Data afficheurs sur 4 bits DA0, DA1, DA2, CS0
   ;PB4 : CS1, Lcd_rs
   ;PB5 : Mosi, Lcd_e
   ;PB6 : Miso, DIOR
   ;PB7 : Sclk, DIOW
   ;Ce port devrait être en sortie, mais il est placé en entrée
   ;tant que le lecteur de CD et l'afficheur ne sont pas alimentés, sinon, il
   ;y a de la surconsommation sur le 5v.
   ldi   Work,0x00   ; 0xff sortie
   out   DDRB,Work
Dernière édition par Philby le 16 Jan 2015 14:31, édité 1 fois.
Philby
 
Messages: 9819
Inscription Forum: 12 Mar 2001 2:00
Localisation: 33
  • offline

Message » 16 Jan 2015 14:31

Le debugger est relativement intuitif à utiliser (et c'est bien plus simple que de faire une mesure sous rew)
Eric.D
 
Messages: 1870
Inscription Forum: 05 Juil 2006 12:45
Localisation: dans le 06
  • offline

Message » 18 Jan 2015 10:32

Bonjour,

voila un sujet qui donne plein d'émotion puisqu'il ramène certain d’entre nous à des temps anciens :oldy:

Il y a 3 ans, j'ai développé une carte de gestion pour mon ampli diy, avec controle de volume 64 pas et gestion de mise en route et face avant...(environ 1000lignes de C++)
je l'ai fait sur arduino 8bits, et je recommande chaudement cette plateforme pour un débutant.
En plus il est possible d'acheter un chip avr328 en dil 24 avec bootloader intégré sur la baie, de le monter sur son propre PCB et de programmer le tout juste avec un cable rs232-ttl.
difficile de faire plus simple et ca marche quasi du premier coup.
lien sur la carte avec le 328 : post175250091.html#p175250091

le plus difficile, mais passionnant aussi, c'est de se mettre au C++ (objet). ne pas sous estimer le temps d’apprentissage/débogage, mais avec les fonctions embarquées dans la librairie standard (print, serial...) c'est un jeu d'enfant (testé avec mon fils de 15ans) et je n'ai jamais eu besoin dun debugger pas à pas, meme quand j'ai développé la librairie multitache "scoop" qui contient aussi de l'assembleur. (projet google ici : https://code.google.com/p/arduino-scoop ... r-arm-avr/)

Pour mon projet actuel (multi DAC R2R + DSP avec FIFO) j'utilise le teensyduino 3.1 et c'est la carte qu'il te faut pour débuter. Paul (patron de PJRC) a fait les meilleures librairies Arduino qui existent et il les a portées sur Cortex M4 avec une qualité impeccable. quand tu regarde les sources de ces librairies et le package standard que ST fournit avec les cartes discovery, il n'y a pas photo. Comme dit thierry c'est hyper compliqué de piloter une led avec un Cortex, mais avec la lib arduino, on rigole, et ca donne envie de continuer.

Fonce sur ce site, commande une teensyduino 3.1 avec un module audio (je viens de le recevoir en moins d'une semaine) et tu vas t'amuser.
https://www.pjrc.com/store/teensy31.html

je me tiens à ta disposition pour t'aider, y compris workshop par téléphone ou à la maison / cheers
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3105
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 18 Jan 2015 12:10

apolon34 a écrit:Salut à toi,

Pour moi, le cours de Bigonoff est un indispensable pour se lancer dans le micro controleur. Pas pour l'assembleur, qui est clairement rébarbatif et désormais inutilisé, mais pour comprendre parfaitement le fonctionnement d'un micro controleur, ses registres matériels, sa configuration, etc ...

Une fois que tu auras compris cela pour le 16f84 (obsolete), tu pourras facilement passer à d'autres modèles et comprendre au mieux les caractèristiques et l'utilisation des autres micro, à partir des datasheets.

Pour le développement, j'utilise mplab (version 8.92, jamais pu me faire a la X) avec le compilateur C sourceboost (dispo gratuitement en version limitée en taille de code)

Ensuite, le plus simple est de récupérer quelques programmes d'exemple bien commentés et de les modifier pour vérifier le comportement du micro.


Merci, je compte bien aller au bout!
fiscal
Pro-Fabricant
Pro-Fabricant
 
Messages: 2989
Inscription Forum: 31 Aoû 2006 15:29
Localisation: VILLEURBANNE
  • offline

Message » 18 Jan 2015 12:11

maxidcx a écrit:Bonjour,

voila un sujet qui donne plein d'émotion puisqu'il ramène certain d’entre nous à des temps anciens :oldy:

Il y a 3 ans, j'ai développé une carte de gestion pour mon ampli diy, avec controle de volume 64 pas et gestion de mise en route et face avant...(environ 1000lignes de C++)
je l'ai fait sur arduino 8bits, et je recommande chaudement cette plateforme pour un débutant.
En plus il est possible d'acheter un chip avr328 en dil 24 avec bootloader intégré sur la baie, de le monter sur son propre PCB et de programmer le tout juste avec un cable rs232-ttl.
difficile de faire plus simple et ca marche quasi du premier coup.
lien sur la carte avec le 328 : post175250091.html#p175250091

le plus difficile, mais passionnant aussi, c'est de se mettre au C++ (objet). ne pas sous estimer le temps d’apprentissage/débogage, mais avec les fonctions embarquées dans la librairie standard (print, serial...) c'est un jeu d'enfant (testé avec mon fils de 15ans) et je n'ai jamais eu besoin dun debugger pas à pas, meme quand j'ai développé la librairie multitache "scoop" qui contient aussi de l'assembleur. (projet google ici : https://code.google.com/p/arduino-scoop ... r-arm-avr/)

Pour mon projet actuel (multi DAC R2R + DSP avec FIFO) j'utilise le teensyduino 3.1 et c'est la carte qu'il te faut pour débuter. Paul (patron de PJRC) a fait les meilleures librairies Arduino qui existent et il les a portées sur Cortex M4 avec une qualité impeccable. quand tu regarde les sources de ces librairies et le package standard que ST fournit avec les cartes discovery, il n'y a pas photo. Comme dit thierry c'est hyper compliqué de piloter une led avec un Cortex, mais avec la lib arduino, on rigole, et ca donne envie de continuer.

Fonce sur ce site, commande une teensyduino 3.1 avec un module audio (je viens de le recevoir en moins d'une semaine) et tu vas t'amuser.
https://www.pjrc.com/store/teensy31.html

je me tiens à ta disposition pour t'aider, y compris workshop par téléphone ou à la maison / cheers

Je fonce voir ca et je suis touche par ta proposition d'aide!
fiscal
Pro-Fabricant
Pro-Fabricant
 
Messages: 2989
Inscription Forum: 31 Aoû 2006 15:29
Localisation: VILLEURBANNE
  • offline

Message » 16 Fév 2015 22:43

Bonjour

Maintenant que mes petits pbroblèmes analogiques de mon derniers systeme sont reglés, je vais pouvoir me consacrer pleinement (bon, tout est relatif hein :roll: ) à l'apprentissage du µC.

Après mûre réflexion, j'ai passé commande d'une carte arduino uno, et d'un bouquin pour débutant. J'ai comme projet initial un potentiomètre digital (le TI PGA2311, qui fait office de préampli avec un gain pouvant atteindre 31,5dB), commandé par un encodeur numérique, couplé à un afficheur LCD (ou OLED, ce qui est plus classe), ainsi qu'une télecommande IR. Et pourquoi pas une fonction ON/OFF, histoire de pouvoir tout piloter depuis mon fauteuil (avec l'Ipad en guise de source, connecté par bluetooth).

Je n'ai aucune idée de comment m'y prendre (j'ai lu pas mal de tuto sur ces différents thèmes, c'est encore un peu incompréhensible pour moi à ce stade), mais je suis sûr que c'est possible

Si je coince, je sais vers qui me tourner :friend:
fiscal
Pro-Fabricant
Pro-Fabricant
 
Messages: 2989
Inscription Forum: 31 Aoû 2006 15:29
Localisation: VILLEURBANNE
  • offline


Retourner vers Discussions Générales

 
  • Articles en relation
    Dernier message