Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Defines explication

Tibo06, le jeudi 20 mars 2008 à 09:49:24
Bonjour a tous!
Tout d'abord merci de me repondre si vous le faite.
Alors voila mon probleme (je vais essayer d'etre le plus clair possible), je sais bien ce qu'est un #include mais le reste me parait quelque peu mysterieux.
D'apres ce que j'ai compris il sagit des definitions des adresse des registre du µC mais je sui scurieux de savoir ce que fait au final la derniere ligne

BASE_PIO_LED->PIO_OER = (LED_A | LED_B);

pouvez vous m'expliquer par ordre cronologique ce qui se passe svp?

Je dois aussi avouer que je ne saisi pas non plus ces lignes
#define PIO_OER         (AT91_CAST(AT91_REG *) 	0x00000010)
#define AT91C_BASE_PIOA	(AT91_CAST(AT91PS_PIO) 0xFFFFF400)

Pour les AT91 CAST et REG * et les 0x... je ne m'y retrouve plus pourriez vous me dire ce qui se passe pour chacune des variables.

Pour cette ligne il me faudrai juste la confirmation que la variable vaut 1 décalé de 0 donc 1.
#define AT91C_PIO_PA0	(1 <<  0)





/**Dans fichier AT91SAM7S64.h**/
#ifndef __ASSEMBLY__
typedef volatile unsigned int AT91_REG;// Hardware register definition
#define AT91_CAST(a) (a)
#else
#define AT91_CAST(a)
#endif

#ifndef __ASSEMBLY__
typedef struct _AT91S_PIO {
	...
	...
	...
	AT91_REG	PIO_OER;	// Output Enable Register
	...
	...
} AT91S_PIO, *AT91PS_PIO;
#else
#define ...
#define ...
#define ...
#define PIO_OER         (AT91_CAST(AT91_REG *) 	0x00000010) // (PIO_OER) Output Enable Register
#define ...
#define ...
#endif

#define AT91C_PIOA_PER	(AT91_CAST(AT91_REG *) 0xFFFFF400) //(PIOA) PIO Enable Register


#define AT91C_PIO_PA0	(1 <<  0)	//Pin Controlled by PA0
#define AT91C_PIO_PA1	(1 <<  1)	//Pin Controlled by PA1
#define AT91C_BASE_PIOA	(AT91_CAST(AT91PS_PIO) 0xFFFFF400) //(PIOA) Base Address




/**Dans fichier AT91SAM7S-EK.h**/
#include "AT91SAM7S64.h"

#define AT91B_LED1          AT91C_PIO_PA0
#define AT91B_LED2          AT91C_PIO_PA1
#define AT91D_BASE_PIO_LED  AT91C_BASE_PIOA



/**Dans fichier main.c**/

#include "AT91SAM7S-EK.h"
#include "AT91SAM7S64.h"

#define LED_A          AT91B_LED1
#define LED_B          AT91B_LED2
#define BASE_PIO_LED   AT91D_BASE_PIO_LED

BASE_PIO_LED->PIO_OER = (LED_A | LED_B);


Merci beaucoup à tous.
Tibo
Configuration: Windows XP
Firefox 2.0.0.12
Répondre à Tibo06  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tibo06, le jeudi 20 mars 2008 à 09:52:08
Juste un truc, je sais quand meme que 0x... c'est de l'hexa mais je ne voit pas ce que ca fait apres les parentheses ou *
En gros un define tout simple ca va mais quand ce deviens tortueux je galere un peu voir meme beaucoup.
Répondre à Tibo06

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
le père, le jeudi 20 mars 2008 à 12:08:16
Bonjour

BASE_PIO_LED->PIO_OER = (LED_A | LED_B);

Cette ligne met à un 2 bits d'un port du microcontroleur, ce qui a pour effet d'allumer ou d'éteindre (ça dépend du hard) les deux leds correspondantes. Au passage, ça met à 0 tous les autres bits du port, tant pis pour eux.

Le sens du AT91_CAST change suivant que __ASSEMBLY__ est défini ou non. Je suppose que __ASSEMBLY__ est défini dans les passages en assembleur, et pas dans les passages en C. Pour en être sûr, il faudrait lire le manuel du compilateur.
Nous allons nous en tenir au cas du 'pur C'
la définition #define PIO_OER (AT91_CAST(AT91_REG *) 0x00000010) ne s'applique pas puisqu'elle est dans la branche #else du #ifndef __ASSEMBLY__
C'est la définition de la structure AT91S_PIO qui s'applique et PIO_OER est un champ de cette structure, (ce qui explique qu'il aparaît à droite d'un -> )

#define AT91C_BASE_PIOA (AT91_CAST(AT91PS_PIO) 0xFFFFF400) maintenant - toujours dans le cas du C
regarde la définition de AT91_CAST, tu vois que c'est équivallent à
#define AT91C_BASE_PIOA ((AT91PS_PIO) 0xFFFFF400)
ce qui définit un pointeur sur la structure AT91S_PIO, pointeur dont la valeur est constante et vaut 0xFF..FF400.

Sans cette syntaxe, comment ferais tu en C pour écrire dans le registre d'adresse 0xFFFFF410 ? (bien sûr que oui, il y a d'autres manières, mais pas plus 'légères', je crois)
Répondre à le père

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tibo06, le vendredi 21 mars 2008 à 16:37:48
Bonjour, merci pour cette reponse. J'ai compris à peu pres l'explication mais ce n'est pas encore bien clair, en fait je me doutais bien que c'etait des definitions d'adresse de registre mais si je devais ecrire des lignes comme celles ci par moi meme je ne pense en etre capable.
J'imagine qu'il me faudrai une bonne revision des structures define et pointeurs. Connaitrais tu un tuto bien fait sur le sujet?
Merci encore
Tibo
Répondre à Tibo06

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
le père, le vendredi 21 mars 2008 à 16:45:10
Bonjour

Désolé pour le tuto, je n'en ai pas.
Répondre à le père

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Tibo06, le vendredi 21 mars 2008 à 16:51:44
Ce n'est pas grave, c'est deja tres gentil d'avoir passé du temps pour m'expliquer tout ca.
Bonne journée et joyeuse paque
Tibo
Répondre à Tibo06

Résultats pour Defines explication

VB6 : Les classes : un didactitiel? (Résolu) Bonjour à toutes et tous, Je suis à la recherche d'un bon petit didactitiel sur les classes en VB6. Définition, explications sur leur importance, utilisation, etc... Si vous connaissez un site qui donne de bonnes explications, je suis preneuse...... www.commentcamarche.net/forum/affich-2323090-vb6-les-classes-un-didactitiel
[Dico] Dictionnaires - Définitions - Extensions Alors que vous êtes en plein boulot sur votre computeur, n’avez-vous jamais eu besoin de la définition ou de l’orthographe d’un mot ? D’une explication ou de la traduction d’un terme informatique ? Et ces “.com”, ou “.bmp”, qu’est-ce que c’est que... www.commentcamarche.net/faq/sujet-2240-dico-dictionnaires-definitions-extensions
#define MAX(a,b) ((a) > (b) ? (a) : (b)) (Résolu) Bonjour, ce quoi l'explication de cette ecriture en c #define MAX(a,b) ((a) > (b) ? (a) : (b)) merci www.commentcamarche.net/forum/affich-8385795-define-max-a-b-a-b-a-b

Résultats pour Defines explication

[Windows] WGA - Windows Genuine AdvantageWindows Genuine Advantage - WGA Un message vous indique "WGA - Vous êtes victime d'une contrefaçon" ? 1 - Explications 1.1 - Définition de WGA 1.2 - Actions de WGA 2 - Solutions 2.1 - Solution Microsoft 2.2 - Solution du logiciel Remove... www.commentcamarche.net/faq/sujet-3625-windows-wga-windows-genuine-advantage
[Google] Fonction définition• Google vous permet de trouver rapidement la défintion d'un mot, pour cela, tapez ceci : (Attention: il faut mettre un espace avant et apres les deux points ( : ), sinon cela ne fonction pas.) definition : mot-clé • Pour n'obtenir que les... www.commentcamarche.net/faq/sujet-3504-google-fonction-definition
Définir une hauteur verticale et relative à un élémentParfois, on voudrait définir une hauteur verticale à un élément. C'est simple en utilisant des valeurs fixes (en pixels pas exemple), mais c'est plus compliqué en utilisant des hauteurs relatives (en pourcentages). Ce problème est souvent... www.commentcamarche.net/faq/sujet-4713-definir-une-hauteur-verticale-et-relative-a-un-element

Résultats pour Defines explication

Void dans java (Résolu)Bonjour tout le monde je suis completement new dans java je voudrais avoir une explication concernant le mot clef " void" et son utilisation dans la definition de mothodes ou procedures des classes . en effet j ai googlé beaucoup mais tout ce que j ai... www.commentcamarche.net/forum/affich-5739681-void-dans-java
Modif propriété layer ? (Résolu)Coucou : je voudrait savoir de quelle facon on peut modifier les propriété d'un layer dans une fonction javascript ? Explications : J'ai les bouts de code suivants (perdus dans un océan de lignes...) : Définition du layer : www.commentcamarche.net/forum/affich-1490296-modif-propriete-layer
Pythagore , Thales (Résolu)bonsoir , j'aimerais que quelqu'un puisse me donner , des explication ou definition , comment faire/ trouver : Théorème de Pythagore : Théorème de Thales : Reciproque du Théorème de Pythagore: Reciproque du Théorème de Thales : (huumm ça ,... www.commentcamarche.net/forum/affich-4046367-pythagore-thales

Résultats pour Defines explication

Télécharger Drivers Realtek High Definition Audio pour VistaLe pilote Realtek High Definition Audio pour Windows Vista est compatible avec les chipsets audio suivants : Realtek ALC260 Realtek ALC262 Realtek ALC267 Realtek ALC268 Realtek ALC269 Realtek ALC272 ... www.commentcamarche.net/telecharger/telecharger-34056542-drivers-realtek-high-definition-audio-pour-vista
Télécharger Drivers Realtek High Definition Audio pour 2000/XPLe pilote Realtek High Definition Audio pour Windows 2000/XP est compatible avec les chipsets audio suivants : Realtek ALC260 Realtek ALC262 Realtek ALC267 Realtek ALC268 Realtek ALC269 Realtek ALC272 Realtek ALC273 Realtek... www.commentcamarche.net/telecharger/telecharger-34056608-drivers-realtek-high-definition-audio-pour-2000-xp

Résultats pour Defines explication

Microsoft travaillerait sur une XBOX 360 Haute Définition(Paris - Relax news) - microsoft réfléchirait à produire un nouveau modèle de xbox 360 en collaboration avec toshiba, dévoile le site australien smarthouse. prévue pour la fin de l'année 2008, la console se tournerait davantage vers la haute défintion... www.commentcamarche.net/actualites/microsoft-travaillerait-sur-une-xbox-360-haute-definition-3847462-actualite.php3
La guerre de la Haute Définition tourne à l'avantage du Blu-Ray(Paris - Relax news) - Le CES qui se déroule actuellement à Las Vegas a pour toile de fond la guerre des supports de la Haute Définition. Qui du Blu-Ray ou du HD-DVD succèdera au bon vieux DVD ? Dans les coulisses du plus grand salon électronique du... www.commentcamarche.net/actualites/la-guerre-de-la-haute-definition-tourne-a-l-avantage-du-blu-ray-4581595-actualite.php3
Blu-Ray, désormais seul format pour la Haute Définition(Paris - Relax news) - La guerre autour du format de support pour les DVD en Haute Définition a désigné son vainqueur. Lâchée tour à tour par les studios hollywoodiens et les distributeurs de films, Toshiba, inventeur et fervent défenseur du HD-DVD, a... www.commentcamarche.net/actualites/blu-ray-desormais-seul-format-pour-la-haute-definition-5091621-actualite.php3

Résultats pour Defines explication

Définition des besoins en terme de sécurité informatiquePhase de définition La phase de définition des besoins en terme de sécurité est la première étape vers la mise en oeuvre d'une politique de sécurité. L'objectif consiste à déterminer les besoins de l'organisation en faisant un véritable état des... www.commentcamarche.net/contents/secu/securite-besoins.php3
Le concept de réseauQu'est-ce qu'un réseau? Le terme générique « réseau » définit un ensemble d'entités (objets, personnes, etc.) interconnectées les unes avec les autres. Un réseau permet ainsi de faire circuler des éléments matériels ou immatériels entre chacune de... www.commentcamarche.net/contents/initiation/concept.php3
Introduction à XMLPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement... www.commentcamarche.net/contents/xml/xmlintro.php3