Gamoover

Si vous êtes nouveau, n'hésitez pas à vous présenter ici et à poser toutes vos questions, meme si elles vous paraissent ridicules... Gamoover regroupe une communauté de passionnés prêts à vous aider ! Bienvenue à vous ;)

Launchpad tuto 002 : Leds clignotantes.

Démarré par KodeIn, Lundi 23 Mai 2011, 00:58:32 AM

keube

Citation de: KodeIn le Mardi 24 Mai 2011, 14:01:02 PM
Merci pour tes remarques, je vais les prendre en compte et faire les corrections adéquates. (bon, pas tout de suite parce qu'il faut que je réécrive certaines parties, du coup)

Par contre, je pense que je vais conserver les "+" dans le premier tuto, il me semble que c'est plus compréhensible pour les débutants.
Dans les tutos suivant, je modifierai les lignes pour utiliser l'opérateur kivabien (et qui évite les merdages bête).  ;)

Quand tu parles du descriptif des ports, tu veux parler du schéma des composants pilotant chaque pin?
Si c'est bien ça, j'ai peur de rendre le tuto trop complexe et un peu effrayant pour les "nouveaux convertis".
Déjà comme ça, il est pas léger-léger  :P
non juste le descriptif des bits de chacun des registres, qui explique pourquoi tu mets un 0 ou un 1 dedans.
Du coup ton tuto ça me donne envie de programmer ;D

KodeIn

#17
Voilà, j'ai modifié un peu le bouzin.
J'ai rajouté une petite table de correspondance entre n° d'I/O et bits de P1OUT vite fait.
Changé les titre des colonnes des tables de vérité, etc...

Puis sinon, c'est bien mon but, motiver les gens à apprendre à manipuler des µC!
Ils sont les couteaux suisses de l'électronique. Ils s'adaptent facilement à des situations très variées.
Et surtout, ils ne coutent pas grand chose par rapport à la puissance disponible.
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente

Maitre_Poulpi

Bon ben tuto fait aussi.
Pour l'instant RAS, je pense avoir à peu près compris (enfin je crois), on va voir la suite.
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

KodeIn

#19
Si jamais t'as un doute sur un truc, n'hésite pas à le dire.
J'essayerai de te réexpliquer et d'en profiter pour améliorer le tuto :)

Bon je vais considérer que le tuto est bon  ^-
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente

Maitre_Poulpi

Citation de: KodeIn le Vendredi 27 Mai 2011, 01:55:04 AM
Si jamais t'as un doute sur un truc, n'hésite pas à le dire.
J'essayerai de te réexpliquer et d'en profiter pour améliorer le tuto :)

Bon je vais considérer que le tuto est bon  ^-

Oui, j'ai un doute d'avoir compris à 100% l'histoire des opérateurs bitvouizz  :D
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

KodeIn

Je vais essayer d'éclairer ta lanterne ;)

Elément important à savoir, les opérations bitwise s'effectuent bit à bit. (j'aurais dû le mettre dans le tuto)
Donc, prenons un octet A, un octet B, un octet resultat et l'opérateur & (au hasard) et effectuons "resultat = A & B";
Le bit0 de résultat sera égal au résultat de l'opérateur & entre le bit0 de A et le bit 0 de B.
Le bit1 de résultat ... égal ... & entre ... bit1 de A et ... B.
Et ainsi de suite pour les autres bits.

Une fois qu'on sait ça, l'usage des tables de vérité des 4 opérateurs bitwise devrait être plus évident.
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente

Maitre_Poulpi

Je crois que je viens de comprendre un truc dans le code en fait.
Dis-moi si je me trompe et si je suis clair dans ce que je dis  :D

Dans cette ligne : P1OUT &= ~(BIT0 + BIT6);

En fait, quand on fait référence à un BIT, d'un point de vue code, c'est qu'on le met à 1.
Comme tu as mis l'opérateur ~ (NOT), on l'apelle à 0.
Donc, peut importe le reste des "BIT" puisqu'on y fait pas référence.
Avec l'opérateur &, on teste l'état précédent si BIT0 était à 0 alors BIT0=0 (car 0&0=0) si BIT0 était à 1 alors BIT0=0 (car 1&0=0).

Je sais pas si je suis clair  ;D
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

KodeIn

#23
Sisi, t'es à peu près aussi clair que moi  =:))

Bon, en fait je te dévoiler la ruse de sioux : derrière BIT0 se cache en fait cette valeur : 0000‿0000‿0000‿0001₂ ou 0x01 ;)
et BIT6 : 0000‿0000‿0100‿0000₂ ou 0x40
donc BIT1 + BIT6 => 0000‿0000‿0100‿0001₂ ou 0x41

J'aurais dû expliquer ça aussi tien!
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente

keube

Citation de: Maitre_Poulpi le Vendredi 27 Mai 2011, 12:57:54 PM
Je crois que je viens de comprendre un truc dans le code en fait.
Dis-moi si je me trompe et si je suis clair dans ce que je dis  :D

Dans cette ligne : P1OUT &= ~(BIT0 + BIT6);

En fait, quand on fait référence à un BIT, d'un point de vue code, c'est qu'on le met à 1.
Comme tu as mis l'opérateur ~ (NOT), on l'apelle à 0.
Donc, peut importe le reste des "BIT" puisqu'on y fait pas référence.
Avec l'opérateur &, on teste l'état précédent si BIT0 était à 0 alors BIT0=0 (car 0&0=0) si BIT0 était à 1 alors BIT0=0 (car 1&0=0).

Je sais pas si je suis clair  ;D
je pense que tu as compris mais on va détailler tout ça:
#define BIT0 0x01 /* en binaire 00000001 */
#define BIT6 0x40 /* en binaire 01000000 */
BIT0 + BIT6 = 0x41 /* en binaire 01000001 */
~(BIT0 + BIT6) = 0xBE /* en binaire 10111110 */
l'opérateur & va donc mettre à 0 les bits 0 et 6 et conserver la valeurs des autres bits:
valeur du port & 10111110 => X0XXXXX0 (X étant la valeur précédente de la pin)

Maitre_Poulpi

Ca devient plus clair.
Ca veut dire aussi que si on ne mettait pas le ~ devant on serait pas sûr que ça mette à 0 car si l'état précédent était 1 ça ferais 1 comme résultat.

Autre question : c'est quoi le ₂ à la fin ?
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

KodeIn

#26
Le ₂, c'est de cette manière qu'on informe que la suite de 1 et de 0 est en base 2, en binaire quoi.
Sans le ₂, normalement ça signifie qu'on travaille en décimal.
Il me semble que c'est une notation standardisée internationale.
Pour l'octadécimal, on notera [valeur]₈ et de l'hexa, [valeur]₁₆.
Je n'ai pas utilisé cette notation [valeur]₁₆ pour l'hexa parce que dans le code, on a une notation particulière à l'hexadécimal et ça me paraissait plus intéressant de se familiariser directement avec ce système de notation là.

EDIT: Voilà, j'ai rendu ça plus clair dans le tuto, maintenant on apprends que le fichier .h contient la définition, entre-autres, de BIT0 et BIT6 et j'indique leur valeur binaire et hexa. Ça devrait aider à simplifier la compréhension.

Au fait, merci à toi, Maitre_Poulpi, mon beta-testeur (et non testeur bêta  :D).
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente