Sari la conținut
ELFORUM - Forumul electronistilor

MikroC Proteus EEPROM


ohamoha

Postări Recomandate

Salut,

Incerc sa simulez accesul la un EEPROM extern folosind MikroC si Proteus. Ma chinui de vreo doua zile sa-i dau de cap.

Daca ati mai folosit MikroC, poate va dati seama unde e beleaua ca eu sunt destul de incepator.

Am pornit de la exemplul din manualul MikroC.

 

Pic: PIC18F4620

Eeprom: 24C16

 

Asta e codul:

#include "lcd.h"void main() {  char i;  char txt[16];  int k;  UART1_Init(9600);  ADCON1 = 0x0F;                  // Configure AN pins as digital  CMCON  = 7;                     // Turn off comparators  i=0;    k=0;  initLcd();  k++; //1  I2C1_Init(100000);      // initialize I2C communication  k++; //2  I2C1_Start();           // issue I2C start signal  k++; //3  I2C1_Wr(0b10100000);          // send byte via I2C  k++; //4  I2C1_Wr(0x00);             // send byte (address of EEPROM location)  k++; //5  I2C1_Wr(0xAA);          // send data (data to be written)  k++; //6  I2C1_Stop();            // issue I2C stop signal  delay_ms(100);  I2C1_Start();           // issue I2C start signal  I2C1_Wr(0b10100000);          // send byte via I2C  (device address + W)  I2C1_Wr(0x00);             // send byte (data address)  I2C1_Repeated_Start();  // issue I2C signal repeated start  I2C1_Wr(0b10100001);          // send byte  i=I2C1_Rd(0);    // Read the data (NO acknowledge)  I2C1_Stop();            // issue I2C stop signal  //UART1_Write_Text("Gata");UART1_Write(10);UART1_Write(13);  ByteToStr(i,txt);  setText(txt,0,0,3);  ByteToStr(k,txt);  setText(txt,0,8,3);}

Programul se blocheaza la primul I2C1_Wr(0x00); dupa cum se vede in imaginea de mai jos, k nu ajunge decat la valoarea 4.

[attachment=2]s1.jpg[/attachment]

 

Daca la I2C1_Init(100000); in loc de 100.000 pun 1.000.000 nu se mai blocheaza si afiseaza ca citeste din memorie 161.

[attachment=1]s2.jpg[/attachment]

 

Foarte aiurea este ca daca sterg modulul EEPROM cu totul, tot 161 se afiseaza.

[attachment=0]s3.jpg[/attachment]

 

Daca la I2C1_Init pun 2.000.000 imi afiseaza 255 cu sau fara EEPROM.

 

Nu m-am lamurit foarte clar ce inseamna parametrul dat la I2C1_Init. In manual e 100.000 si explicatia este:

"Initializes I?C with desired clock (refer to device data sheet for correct values in respect with Fosc)."

Am vazut ca EPPROM-urile astea au ceasul la 100kHz sau 400kHz, dar dupa cum ziceam, valoarea 100.000 nu merge.

 

Multumesc mult

Link spre comentariu
  • Răspunsuri 1
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • ohamoha

    2

Zile populare

Top autori în acest subiect

Daca folosesc libraria Soft I2C totul functioneaza corect. Se pare ca este o problema cu utilizarea modului MSSP al PIC-ului. Poate aveti un sfat cum sa-l fac si pe asta sa mearga.

 

Soft_I2C_Init();      // initialize I2C communication  Soft_I2C_Start();           // issue I2C start signal  Soft_I2C_Write(0b10100000);          // send byte via I2C  Soft_I2C_Write(0x00);             // send byte (address of EEPROM location)  Soft_I2C_Write(0xAA);          // send data (data to be written)  Soft_I2C_Stop();            // issue I2C stop signal  delay_ms(100);  Soft_I2C_Start();           // issue I2C start signal  Soft_I2C_Write(0b10100000);          // send byte via I2C  (device address + W)  Soft_I2C_Write(0x00);             // send byte (data address)  Soft_I2C_Start();  // issue I2C signal repeated start  Soft_I2C_Write(0b10100001);          // send byte  i=Soft_I2C_Read(0);    // Read the data (NO acknowledge)  Soft_I2C_Stop();            // issue I2C stop signal
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări