Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 20/03/2013, à 13:28

mar00o00

Aide dans la programmation embarqué

Bonjour, je comprends pas quelques instructions dans un code C ( programmation embarqué ):

  • #define Switch_pin PORTBbits.RB0

  • #define LED_pin PORTCbits.RC0

  • TRISBbits.TRISB0 = 1

  • INTCON2bits.RBPU=0

  • TRISCbits.TRISC0=0;

Si quelqu'un peut m'expliquer ces instruction et me donner un document pour introduire la programmation embarqué.
Merci.

Hors ligne

#2 Le 20/03/2013, à 13:50

telliam

Re : Aide dans la programmation embarqué

sur quel type de chipset?
sinon google est ton ami


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 20/03/2013, à 15:54

claudius01

Re : Aide dans la programmation embarqué

Bonjour,

Sauf erreur de ma part, cela doit être du Langage C pour micro-contrôleurs PIC de chez Microchip.
TRISBbits.TRISB0 = 1 veut dire : Pin 0 du PORTB programmée en entrée ;-)

cf. par exemple : DEVELOPPEMENT EN C SUR PIC 18 v10 Travaux Pratiques - IUFM


Cordialement, A+
--
Claudius

Dernière modification par claudius01 (Le 20/03/2013, à 16:26)

Hors ligne

#4 Le 20/03/2013, à 17:07

mar00o00

Re : Aide dans la programmation embarqué

Merci claudius01 mais pourquoi écrire TRISBbits : je sais que TRIS est le registre de direction du port et B la catégorie du port , donc pourquoi utiliser "bits" ??
quand au autres instructions ??
type de chipset : Pic 18

Dernière modification par mar00o00 (Le 20/03/2013, à 17:14)

Hors ligne

#5 Le 20/03/2013, à 18:03

claudius01

Re : Aide dans la programmation embarqué

mar00o00,

Parce que TRISBbits est défini comme une structure du type TRISB et composée de champs de bits (exemple tiré pour un PIC24 qui est basé sur une architecture 16 bits) :

typedef struct {
   unsigned int TRISB0  : 1;
   unsigned int TRISB1  : 1;
   unsigned int TRISB2  : 1;
   unsigned int TRISB3  : 1;
   unsigned int TRISB4  : 1;
   unsigned int TRISB5  : 1;
   unsigned int         : 1;   // No defined
   unsigned int TRISB7  : 1;
   unsigned int TRISB8  : 1;
   unsigned int TRISB9  : 1;
   unsigned int TRISB10 : 1;
   unsigned int TRISB11 : 1;
   unsigned int         : 1;   // No defined
   unsigned int TRISB13 : 1;
   unsigned int TRISB14 : 1;
   unsigned int TRISB15 : 1;
} TRISB;

Cette définition est très pratique pour d'une part ne pas mélanger les numéros de bits avec d'autres registres et d'autre part permettre au compilateur d'optimiser toutes les opérations logiques (ET, OU, etc.) sur un ou plusieurs bits.

Quant aux autres instructions :
- TRISCbits.TRISC0=0; => même combat que pour TRISBbits.TRISB0 = 1 (je te laisse trouver ;-)
- INTCON2bits.RBPU=0; => Mise à 0 du bit RBPU du registre INTCON2 (cf. la datasheet du PIC18 que tu utilises pour savoir à quoi cela correspond exactement - de mémoire cela tourne autour de la reconfiguration de certaines pins ; RBPU signifiant : Quand ce bit est mis à 0, une résistance de rappel au +5 volt est placée sur chaque pin du PORT adressé... ).


Cordialement, A+
--
Claudius

Dernière modification par claudius01 (Le 20/03/2013, à 22:06)

Hors ligne

#6 Le 21/03/2013, à 12:14

mar00o00

Re : Aide dans la programmation embarqué

Merci Caudius. peut tu me donner un document pour que je puisse expliquer les autres segments du code.

Hors ligne

#7 Le 21/03/2013, à 14:19

claudius01

Re : Aide dans la programmation embarqué

Bonjour mar00o00 et à tous,

Pour comprendre des séquences de codes particulières comme initialement INTCON2bits.RBPU=0 et après avoir appréhendé la syntaxe (cf. MPLAB XC8 C Compiler User's Guide - Microchip pour du Langage C), il est impératif de suivre la démarche suivante :

- Avoir sous la main la datasheet de Microchip du circuit PIC pour lequel le programme est écrit (google + "datasheet pic18" fournit une palanquée de choix comme le PIC18FXX2 Data Sheet - Microchip)
- Ces datasheet sont très complètes et sont La Référence (je n'en connais et n'utilise pas d'autres)...

Si je reprends l'exemple de la mise à 0 du bit RBPU du registre INTCON2, une recherche dans le PDF du PIC18XX2 aboutit à :

§ 9.2 PORTB, TRISB and LATB Registers
...
To enable weak pull-ups, set the appropriate TRIS bit(s) and clear the RBPU bit (INTCON2<7>)
au dessous de la FIGURE 9-4: BLOCK DIAGRAM OF RB7:RB4 PINS et qui confirme mon précédent post.

La programmation embarquée dédié une fonctionnalité matérielle donnée (micro contrôleur, circuits spécialisés, etc.) suppose une compréhension "électronique" de la fonction. Cela ne peut pas se limiter à de la simple programmation (assembleur, Langage C, etc.) et est généralement vécue comme plus ardue car c'est un mélange de 2 mondes qui ne peuvent s'ignorer. Et je ne parle pas des tests de mise en œuvre où là, c'est parfois carrément de la haute voltige ... sans filet :-).

En espérant t'avoir aidé...


Cordialement, A+
--
Claude

Hors ligne

Haut de page ↑