Linux a zacatecnik
David Belohrad
David.Belohrad
Středa Březen 17 14:24:42 CET 2004
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