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