SPI ket atmega kozott

Fuzesi Arnold arno at externet.hu
Thu Apr 7 12:28:41 CEST 2005


Sziasztok!

Adott ket atmega.
Kommunikalnak aszinkron modon egymassal, SPI buszon, azonos (frekiben) az
orajeluk.

A mega-k SPI interfesze tud olyat hogy ha master modban az SS
labat lehuzom 0-ba, akkor slave-be valt a master. Igy tulkeppen mind a ket
mega master, es amikor egyik adni akar, akkor a masik SS labat nullaba huzva
az slave-be valt, es szepen veszi az adatokat. (azt mar kivedtem ha tok
egyszerre valtanak, akkor ne legyen gond)
Igy kellemesen tok aszinkron modon lehet kommunikalni ide-oda "esz nelkul".

Viszont, kerdesem:

Ado oldalon ez a master IT rutin vege:

/*********MASTER Interrupt: ha az SPDR kiurult/betelt*********/
  (*spi_obuff_pntr++)=SPDR;  //SPDR-t berakom a bufferbe

  if(--spi_bufflen)                //ha van még kuldendo byte
   SPDR=*spi_obuff_pntr;  //akkor a bufferbol a soron kovetkezo byte-ot
beteszem az SPDR-be
  else{                            //ha nincs mar kuldendo byte
   nSS=1;                        //akkor masik uC CS labat felhuzom
   nSS_DDR=IN;               //ss labat bemenetre+pullup allitom, hogy a
masik uC le tudja huzni ha akarja
  }

vevo oldalon ez a slave rutin vege:
/*********SLAVE Interrupt: ha az SPDR kiurult/betelt*********/
  (*spi_obuff_pntr++)=SPDR;  //SPDR-t berakom a bufferbe
   spi_bufflen++;
    asm("nop");
   asm("nop");
   asm("nop");
  if(!nSS_PIN)                    //ha a masik uC (master) meg lenn tartja
az SS labat
   SPDR=*spi_obuff_pntr;  //akkor a bufferbol a soron kovetkezo byte-ot
beteszem az SPDR-be
  else{                                //ha felengedte
        spi_alapallapot();        //spi-t alapallapotba teszem, es jelzem
hogy fel kene dolgozni a buffert
  }


Ez igy vajon jo, vagy rejthet szerintetek hibat?
Alapotlet az, hogy egyszerre jelentkezik az IT rutin mind a ket uC-n. (SPDR
egyiken kiürül, másokon ugyan ekkor telemegy)

A master az IT utan szinte rogton (par utasitas mulva) felemeli az SS-t, ha
kikuldott mindent.
A slave meg ezt ugyan ekkor vizsgalhatja. Illetve egy icipicit kesobb. Ezert
a par nop.

Mit gondoltok?
En mar fel oraja nezem, de nem talalok kifogasolni valot benne.
Viszont orulnek ha ravilagitanatok az esetleges gyenge pontjara.
(Kar hogy nincs IT az SS felengedesre is... :((((( )

(mas megoldas nem jatszik, mert a protokoll amit at akarok vinni nem ismert.
Igy nem tudom atkuldeni pl  byte-ok szamat, es ez alapjan varni az SS
felengedesere. Mindenkeppen IT-bol akarom elintezni az egesz kommunikaciot,
szoval az sem megoldas hogy a foprogram nezi hogy felment-e az SS)

Kösz,
Arnold





More information about the Elektro mailing list