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