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
|
51 messages • Accèder à une page • 1, 2, 3, 4
|
Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: athoriac, GoodNoize et 104 invités
Discussions générales sur le DIY Audio : choix des HP, comparaisons des principes : clos vs BR, etc
programmation micro controleur
- Eric.D
- Messages: 1870
- Inscription Forum: 05 Juil 2006 12:45
- Localisation: dans le 06
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...
Tout dépend de ce qu'on veut faire...
- Philby
- Messages: 9819
- Inscription Forum: 12 Mar 2001 2:00
- Localisation: 33
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.
Après, on peut causer de la bonne vieille époque puisque pas besoin d'être centenaire pour avoir vécu plusieurs révolutions![:lol:](https://www.homecinema-fr.com/forum/images/smilies/icon_lol.gif)
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: :grr:](https://www.homecinema-fr.com/forum/images/smilies/grrrr24.gif)
Après, on peut causer de la bonne vieille époque puisque pas besoin d'être centenaire pour avoir vécu plusieurs révolutions
![:lol:](https://www.homecinema-fr.com/forum/images/smilies/icon_lol.gif)
- alkasar
- Messages: 11517
- Inscription Forum: 29 Nov 2005 22:47
- Localisation: Neuf deux
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.
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
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
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
pour la maintenabilité !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).
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: :oldy:](https://www.homecinema-fr.com/forum/images/smilies/vieux-smiley.gif)
- alkasar
- Messages: 11517
- Inscription Forum: 29 Nov 2005 22:47
- Localisation: Neuf deux
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
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.
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
alkasar a écrit:pour la maintenabilité !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).
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
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:](https://www.homecinema-fr.com/forum/images/smilies/icon_mrgreen.gif)
- 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
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
Bonjour,
voila un sujet qui donne plein d'émotion puisqu'il ramène certain d’entre nous à des temps anciens
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
voila un sujet qui donne plein d'émotion puisqu'il ramène certain d’entre nous à des temps anciens
![:oldy: :oldy:](https://www.homecinema-fr.com/forum/images/smilies/vieux-smiley.gif)
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
- Messages: 3105
- Inscription Forum: 25 Avr 2007 10:50
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
- Messages: 2963
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
maxidcx a écrit:Bonjour,
voila un sujet qui donne plein d'émotion puisqu'il ramène certain d’entre nous à des temps anciens![]()
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
- Messages: 2963
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
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
) à 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: :friend:](https://www.homecinema-fr.com/forum/images/smilies/reconfort.gif)
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:](https://www.homecinema-fr.com/forum/images/smilies/icon_rolleyes.gif)
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: :friend:](https://www.homecinema-fr.com/forum/images/smilies/reconfort.gif)
- fiscal
- Pro-Fabricant
- Messages: 2963
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
|
51 messages
• Page 2 sur 4 • 1, 2, 3, 4
Retourner vers Discussions Générales
|