CAN - Pic18f4520 - CNA (PCF8591 - I2C )

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Projets fin d'études
AuteurMessage
Tunisia.png servntes
Newbie



Messages : 4
Inscrit(e) le: 03/06/2010
Posté le 09/06/2010 16:35  
CAN - Pic18f4520 - CNA (PCF8591 - I2C )
Bonjour à tous,

Je viens de travailler sur un projet pour programmer un correcteur PID ou bien un régulateur PID, Alors j'aimerais tester la CNA et CAN,

Alors j'ai configuré le bit 0 du PORTA comme une entrée analogique AN0, Pour insérer à cette entrée, un signal entre [0v et 5v] à l'aide d'un potentiomètre,

Donc j'ai la convertie à l'aide du convertisseur analogique numérique.et le résultat obtenue, j'aimerais le récupérer sur une sortie analogique,
J'ai utilisé le PCF 8591 par le bus I2C. Convertisseur Numérique Analogique 8 bit.

J'ai testé la CAN et il marche très bien, mais la CNA sa marche pas !!
Je varie le potentiomètre de 0v à 5 v; mais sur la sortie le résultat reste toujours à 0v

Svp s'il y a quelqu'un qui peut m'aider à cette démarche !!!

Voila mon code, que j'ai simulé (pas d'erreur lors de la compilation) :


#include <p18f45k20.h>
#include <stdio.h>
#include <math.h>

#define SCL_PIN PORTCbits.RC3
#define SDA_PIN PORTCbits.RC4

#define SCL_DIR TRISCbits.TRISC3
#define SDA_DIR TRISCbits.TRISC4

void main (void);
void DelayMs(unsigned int);
void Pcf_8591_d2a(unsigned char);
void i2c_init(void);
void i2c_start(void);
void i2c_wr(unsigned char);
void i2c_ack(void);
void i2c_stop(void);
void i2c_high_scl(void);
void i2c_low_scl(void);
void i2c_high_sda(void);
void i2c_low_sda(void);


#pragma code

/*************************
* Definition des Variables
*************************/
unsigned char Ys;
/*********************
* Fonction principal
********************/
void main()
{
TRISD=0;

ADCON1=0x00;
ADCON0=0x01;
ADCON2=0x00;


while(1)
{
ADCON0bits.GO = 1; // lancement de la conversion analogique numérique
while (ADCON0bits.GO)
{
//pas de opcode; // attendre la fin de la conversion lorsque GO=0
}
Ys = ADRESH; // résultat de la conversion analogique numérique,
Pcf_8591_d2a(Ys); // lancement de la conversion numérique analogique
}
}
/*******************************************
* PCF 8591 Conversion numerique analogique
*******************************************/
void Pcf_8591_d2a(unsigned char dat)
{
int iConfig=0x40; // Configuration du CNA du PCF8591; bit6=1(activaation sortie analogique)
int cPCF8591_w=0x90; // Adresse du PCF85910
i2c_init();
i2c_start(); // Signal Start
i2c_wr(cPCF8591_w); // Adresse de l'esclave (PCF8591)
i2c_ack(); // Acquitement
i2c_wr(iConfig); // Cofiguartion pour activer la Conversion N/A
i2c_ack(); // Acquitement
i2c_wr(dat); // les données N/A
i2c_ack(); // Acquitement
i2c_stop(); // Signal Stop
}
/***********************
* Initialisatin Bux I2C
***********************/
void i2c_init(void)
{
SSPSTAT=0x80;
SSPCON1=0x28;
SSPCON2=0x01;
}
/*******************
* Start Condition
******************/
void i2c_start(void)
{
i2c_low_scl();
i2c_high_sda();
i2c_high_scl();
i2c_low_sda();
i2c_low_scl();
}
/*******************
* Stop Condition
*****************/
void i2c_stop(void)
{
i2c_low_scl();
i2c_low_sda();
i2c_high_scl();
i2c_high_sda();
}
/******************************
* Procedure d'ecriture PCF8591
******************************/
void i2c_wr(unsigned char data)
{
unsigned char n;
for(n=0; n<8; n++)
{
if(data&0x80)
{
i2c_high_sda();
}
else
{
i2c_low_sda();
}
i2c_high_scl();
i2c_low_scl();
data <<=1;
}
i2c_high_sda();
}


/******************************
* Acknowledge == Acquittement
******************************/
void i2c_ack(void)
{
i2c_high_sda();
i2c_high_scl();
i2c_low_scl();
}

/******************************
* Niveau haut/bas pou SCL/SDA
******************************/
void i2c_high_sda(void)
{
SDA_DIR = 1;
DelayMs(1);
}

void i2c_low_sda(void)
{
SDA_PIN = 0;
SDA_DIR = 0;
DelayMs(1);
}

void i2c_high_scl(void)
{
SCL_DIR = 1;
DelayMs(1);
}

void i2c_low_scl(void)
{
SCL_PIN = 0;
SCL_DIR = 0;
DelayMs(1);
}

Edité par servntes le 09/06/2010 16:38
Revenir en haut | Permalien
Tunisia.png salem
Member



Messages : 102
Inscrit(e) le: 09/01/2008
Posté le 10/06/2010 11:49  
1276163389.rar (261 Ko)
RE : CAN - Pic18f4520 - CNA (PCF8591 - I2C )
bon je essayee qlq mois arriere un project avec le PCF8591 et ca marchee tu peut le voir si ca vous aide
et aussi il faut que tu bien lire le pdf de ce circuit

Revenir en haut | Permalien

Haut de page

© 2024 Technologue pro, cours électricité électronique informatique · © 2007 - 2024 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos