Questions générales C [Forums - Langage C]
Questions générales C [Forums - Langage C]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes



« 1 2 (3) 4 5 6 ... 11 »


Re: Questions générales C
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Autant enfoncer les clous et reformuler...

Dinastar doit avoir les neurones en feu à faire le tri entre le nouveau, le compliqué qui ne l'est pas et le reste !

Je m’appuie sur ce que tu dis parce que mes bases à moi ne sont pas forcément très saines...

Posté le : 03/03/2016 09:38
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Ok c'est compris.

C'est juste que j'ai toujours l'allure de l'asm en tête et il suffit de faire :
ds_bus    equ    PTC
et le tour est joué !

Donc
#define PTAD_PTAD0 LED
je dois le mettre où celui-là ? Dans ma lib C ? Ou mon h ?

Posté le : 03/03/2016 10:59
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
classiquement dans un .h

tu peux en créer 500000 si tu veux, avec un nom parlant

tu mets le define dans le .h
puis dans les fichiers .c où tu as besoin de ce define (eux aussi tu peux en créer 50000) tu mets au début du fichier
#include "Lefichier.h"


dans ton application tu avoir par exemple
un fichier 1wire.c avec dedans les fonctions propres au 1wire
un fichier 1wire.h avec le prototype des fonctions de 1wire.c qui seront utilisées autrepart et les defines utilisés dans les fonctions 1wire

un fichier DS1258.c qui appelle 1wire.h et qui a des fonctions pour parler au DS1258 qui elle même utilisent les fonctions de 1wire.c
un fichier DS1258.h avec le prototype des fonctions de DS1258.c qui seront utilisées dans l'application pricipale

un fichier GestionPoele.c et son .h ou il y aura la "stratégie" de gestion du poele et qui fera appel à DS1258.h pour les mesures de température, actionneurs.h pour gérer tes relais, afficheur.h pour mettre à jour l'afficheur etc


Posté le : 03/03/2016 11:30
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Mmmmm tout cela commence à devenir très clair !

Posté le : 03/03/2016 15:01
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Bonjour à tous !

Y'a un truc que je n'arrive pas à faire. En gros, c'est l'appel d'une fonction avec arguments, et contenant elle même plusieurs fonctions avec argument également. Je vous explique ;

Admettons :

J'ai 3 fichiers C :

- I2C.c -> le driver
- 24AA02.c -> les routines pour lire et écrire dans cette EEPROM I2C
- Et mon main.c

- Fichier I2C.c -> contient les fonctions de bas niveau

//I2C Module ON/OFF
void I2C_ON(void)
{
    
I2C_C1_IICEN 1;        //Enable I2C module    
}
void I2C_OFF(void)
{
    
I2C_C1_IICEN 0;        //Disable I2C module    
}


void I2C_START(void)
{
    
I2C_C1_TXAK 0;         // RX/TX = 1; MS/SL = 1; TXAK = 0;
    
I2C_C1 |= 0x30;         // And generate START condition;
}

void I2C_STOP(void)
{
    
I2C_S_IICIF=1;             // clear the interrupt event flag;
    
I2C_C1_MST 0;         // generate STOP condition;
}
void I2C_OUT(unsigned char j)    //Sent one byte over the bus
{
    
I2C_D j;                 // Address the slave and set up for master transmit;
    
while (!I2C_S_IICIF);     // wait until IBIF;
    
I2C_S_IICIF=1;             // clear the interrupt event flag;
    
while(I2C_S_RXAK);         // check for RXAK;
}


- Et maintenant, mon fichier 24AA02.c et dans lequel je dois mettre mes routines de lecture/écriture pour ce composant

Pour l'exemple :

void SendData(U8 slave_adressU8 adressU8 data)
{
void I2C_ON(void);        //I2C Module ON


void I2C_START(void);    //Send Start Condition    
void I2C_OUT(unsigned char j);    //Send slave adress to the slave R/W = 0
void I2C_OUT(unsigned char j);    //Send adress memory
void I2C_OUT(unsigned char j);    //Send data memory

void I2C_STOP(void);    //Send Stop Condition
void I2C_OFF(void);        //I2C module OFF
}


Comment mettre les valeurs de slave_adress, adress, data, dans l'orde dans la fonction qui se répète void I2C_OUT(unsigned char j); ???

Comme cela, dans mon main(), je mettrai par exemple :

U8 slave_adress 0xB1;
U8 adress 0x10;
U8 data 0x17;

SendData(slave_adressadressdata);


Ou alors, je n'emprunte pas le bon chemin ...

Posté le : 14/03/2016 17:05
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
void SendData(U8 slave_adressU8 adressU8 data)
{
void I2C_ON(void);        //I2C Module ON


void I2C_START(void);    //Send Start Condition    
void I2C_OUT(slave_adress);    //Send slave adress to the slave R/W = 0
void I2C_OUT(adress);    //Send adress memory
void I2C_OUT(data);    //Send data memory

void I2C_STOP(void);    //Send Stop Condition
void I2C_OFF(void);        //I2C module OFF
}
tout simplement ou alors je n'ai pas compris la question...

Posté le : 14/03/2016 18:23
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Si t'as très bien compris !

Ben voilà ça a l'air tout simple, et je savais que j'allais passer pour un débutant

Posté le : 14/03/2016 18:54
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Pilier de la communauté
Inscrit:
27/09/2005 18:07
De Metz
Messages: 1354
Hors Ligne
void SendData(U8 slave_adressU8 adressU8 data

void I2C_ON(void);        //I2C Module ON 


void I2C_START(void);    //Send Start Condition     
void I2C_OUT(slave_adress);    //Send slave adress to the slave R/W = 0 
void I2C_OUT(adress);    //Send adress memory 
void I2C_OUT(data);    //Send data memory 

void I2C_STOP(void);    //Send Stop Condition 
void I2C_OFF(void);        //I2C module OFF 
}
A quoi servent tous ces void ????

Le seul valable est celui placé devant SendData.

mettre un type devant un nom de fonction n'est demandé que lors de la déclaration (son entête uniquement) ou de la définition d'une fonction (son entête et son contenu)
L'appel d'une fonction se fait uniquement en donnant le nom de la fonction suivi du nom ou de la valeur des paramètres entre parenthèses.

Posté le : 14/03/2016 20:35
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Bien vu Jacques,

Belle erreur, mais c'est une erreur d'écriture et de copier/coller, si vous permettez, je remet tout ça comme il faut en suivant, et pour éviter toute confusion de compréhension.

Pffff quel bourricot suis-je ...

Posté le : 14/03/2016 20:49
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Questions générales C
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Correction de la solution :

void SendData(U8 slave_adressU8 adressU8 data

I2C_ON();        //I2C Module ON 


I2C_START();    //Send Start Condition     
I2C_OUT(slave_adress);    //Send slave adress to the slave R/W = 0
I2C_OUT(adress);    //Send adress memory 
I2C_OUT(data);    //Send data memory 

I2C_STOP();    //Send Stop Condition 
I2C_OFF();        //I2C module OFF 
}

Posté le : 14/03/2016 20:53
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant
« 1 2 (3) 4 5 6 ... 11 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Questions générales C [Forums - Langage C]