Talk:Coursera Microcontroleur

From Fixme.ch
Jump to: navigation, search

Pour l'exercice 2.1 :


--> le programme proposé affiche la valeur en hexa, le but serait d'afficher la valeur en décimal... pour l'instant, pas encore de solution ! mais nous comptons aussi sur vous ;-)

--> merci marcha pour le lien trouvé : opération de base en assembleur (décalage + addition + soustraction) pour réaliser des multiplications divisions [1]


Pour l'exercice 2.5:


Question du 23.01.2014--> sous MPLAB avec le compilateur C30, apparemment la déclaration pour inverser des bit de marche pas s'écris comme suit :

 ~LED_3;          // écriture ne passant pas  
 LED_3 = ~LED_3;  // la ça marche 

Je me demande si cela vient du compilateur C, par vraiment chercher la réponse


Pour l'exercice 2.8:


Remarque du 06.02.2014--> Carte Explorer 16, on voulait utiliser le switch S5, pour éteindre la led, je me suis aperçu que celui-ci était toujours en mode active, car il a été mis sur la même ligne RA7 un switch (S5) ainsi qu'une led (D10) (voir le PDF de la carte Explorer). Lorsque que l'on veut scruter la ligne RA7 (donc en mode input), il se créer une chute de tension sur cette ligne du à la résistance Pull-Up branchée sur le switch et la Led qui est connecté à la "masse"... je n'ai pas trouver si il y avait un moyen soft pour contourner ce problème. une Réponse de solution ?!?!

Pour l'exercice 2.10:


Question : le 07.03.2014--> Petite question, il est demandé d'implémenter la fonction MAP() sous arduino, jusque la pas de problème. Maintenant je ne veux pas utiliser Arduino, mais plutot au uC (et qui n'as la fonction MAP(), héhé) - alors encore la recopie facile, mais je n'arrive pas à me représenter cette formule mathématique : descriptif fonction MAP

A vos réponses ;) :

Merci à Diego, Marc, Jean-Daniel, et Jeremiah - je crois que j'ai oublié personnes) pour les réponses apportées sur la Mailing-List. En fait, c'est une erreur de syntaxe que j'ai commis dans la formule suivante :

(1) return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_max;

(2) return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

Cherchez l'erreur, et oui j'ai pris out_max au lieu de out_min, grrrrr. Mais avec les différentes explications, j'ai repris l'explication théorique... voir prochainement mon gribouillis

Pour l'exercice 3.1:


en élaborant un petit programme en C avec l'IDE codeBlock, en utilisant la fonction printf(), il faut faire attention aux paramètres que l'on veut afficher car ceux-ci sont apparemment converti en int, donc dans cette exercice-là, même si le type (unsigned char) a été déclaré préalablement... il faut à nouveau recaster la valeur dans le printf

Pour l'exercice 3.3:


Normalement pour l'exercice 3.4 il est demandé d'utiliser l'instruction break, mais comme vu dans différents cours en C, on nous rabâche sans cesse qu'il ne faut pas utiliser le break (mauvaise façon de coder), alors à l'aide d'interruption sur un timer et quelques conditions sur des variables globales, le programme proposé sous DSPic n'utilise pas cette instruction

Pour l'exercice 3.11:


le code sur le DSPic est réalisé, mais je ne suis pas convaincu par son contenu (autocritique, oui oui) ; ce que je voulais faire c'est sachant que j'avais configurer l'oscillateur de celui-ci à 8MHz, en lisant le datasheet - voir bas de ce wiki - une instruction (addition, multiplication, division,...) dure une période soit 1/8Mhz = 125ns... et on admet que la réponse d'un switch est de l'ordre d'une centaine de ms. Pour pouvoir afficher une petite ou grande impulsion, j'ai imaginer utilisé les 8 leds que j'ai à disposition sur la carte Explorer ce qui me permettrai de calculer 8 temps (32ms, 64ms, 96ms, 128ms, 160ms, 192ms, 224ms).

J'ai utiliser la fonction suivante : time_ms = compteur/UNITE_DIV; ou UNITE_DIV = 8000 => car 1ms / 125ns = 8000... mais en mode debuuger ca n'a pas le rendu espérer. Pour le moment, je laisse le code comme ça, car pas d'autre idées pour l'améliorer, mais si quelqu'un veut se pencher, voir apporter sa solution, une seule phrase : ALLEZ'Y !!!!

Pour l'exercice 4.1:


Pour l'exercice 4.1 (les version A/B/C), j'ai utilisé une board d'extension (type vero board) spécifiquement pour les cartes Explorer 16. Un projet (see : Extension Explorer 16) est en court de création pour mettre sur même carte les différents montages proprement.