PIC 16F877 A

craycz@email.cz craycz
Středa Březen 17 14:24:40 CET 2004


Nicmene, vy vite z jake adresy budete cist ???
Pokud jste neco nekam zapsal pak cekate a davate
adresu zapisu, kterou nedokoncite a pak chcete
z eepromy cist v podstate skoro neznamo odkud, jestli
to dobre chapu co ten cyklus zapisu adresy dokoncit.
Ten zdrojak je takovej dost nepruhlednej ;-(.

Navim jestli jsem to dobre pochopil, ale
casto byva problem, ze po vyslani adresy pri
cteni je v dokumentaci psano

START -- ADRESAI2Czapis -- ADRESA v pameti --
START -- ADRESAI2Ccteni -- a pak cteni dat -- STOP

je lepsi pred ten START dat i STOP.

a vubec co ja se namaham, tady jsou odkazy ;-))

http://www.hw.cz/design/i2c_errors/i2c_eeprom_wr_fake.html
http://www.hw.cz/programovani/x51_eeprom_serial/24cxx.html
http://www.hw.cz/programovani/x51_eeprom_serial/24cxx_routine.html
http://www.hw.cz/constrc/i2c_skolka/i2c_skolka.html
http://www.hw.cz/constrc/i2c_lpt/i2c_lpt.html


S pozdravem
         Zdenek Aster


----- Original Message -----
From: "Igor KOPRIVA" <xKoprivaI@seznam.cz>
To: <hw-news@list.gin.cz>
Sent: Wednesday, November 06, 2002 9:56 AM
Subject: Serial EEPROM programming problem


> Ahoj vsichni,
>
> rad bych poprosil o drobne nakopnuti spravnym smerem. Programuji serial
> eeprom 24C32 od ST a nejak se mi nedari s cekanim na dokonceni
> programovaciho cyklu. Pouzivam metodu pollingu pomoci adresy zarizeni a
> cekanim na ACK. Toto funguje spravne, jenze pak zrejme nespravne ukoncim
> komunikaci a vrati se mi chyba pri nasledujicim cteni. Poradte mi prosim,
> jak to zmaknout spravne.
>
> Muj postup je nasledujici. Chyba je zjevne v radcich oznacenych !!!!!!.
> Podle dokumentace se ma pri dokonceni vnitrniho progr. cyklu, vyvolat
> ReSTart a pak STOP, protoze je pamet pripravena prijmout dalsi cast
adresy,
> coz ja nechci a chci ukoncit celou komunikaci. No a pak dalsi rutinou zase
> neco precit, coz uz ale neprojde :-(.
>
>
> Predem diky za reakce.
>
>     SET_START_CONDITION;
>                                         // Send device address and
>     IIC0 = uchEEPromAddress & WRITE;    // set write mode
>     WAIT_WRITE_INT_AND_ACK;
>
>     IIC0 = (BYTE)(wByteAddress >> 8);              // Send EEProm byte
> address
>     WAIT_WRITE_INT_AND_ACK;
>     IIC0 = (BYTE)(wByteAddress & 0x00FF) ;              // Send EEProm
byte
> address
>     WAIT_WRITE_INT_AND_ACK;
>
>   while(citac--)
>   {
>    IIC0 = uchDataIn++;                   // Send data
>    WAIT_WRITE_INT_AND_ACK;
>   }
>     SET_STOP_CONDITION;
>
>   do
>   {
>      SET_START_CONDITION;
>    IIC0 = uchEEPromAddress & WRITE;
>     SLEEP250(4);                      // Wait EEProm write time = 1ms
>   }
>   while (!bACKD0);
>     SET_START_CONDITION;        !!!!!!!!!!!!!!!         //restart
>     SET_STOP_CONDITION;          !!!!!!!!!!!!!!!
>
> Igor KOPRIVA
>
>
>





Další informace o konferenci Hw-list