SPI ket atmega kozott

Fuzesi Arnold arno at externet.hu
Thu Apr 7 12:44:47 CEST 2005


Nem akarnék nagyon nyákot taknyolni, meg asszem nincs is szabad IT láb. :((

Arnold
----- Original Message ----- 
From: "Rancz Lajos" <csigaelektro at freemail.hu>
To: <elektro at tesla.hu>
Sent: Thursday, April 07, 2005 12:36 PM
Subject: Re: SPI ket atmega kozott



Hi!

Csak ötlet: ha az SS lábat párhuzamosítanád a INT0 / INT1-re, akkor máris
lenne IT ;-)

Üdv,
Lajos

On Thu, 7 Apr 2005 12:28:41 +0200, Fuzesi Arnold wrote:
> 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
>
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/


-----------------------------------
 Szponzorunk: http://tonerbolt.hu/




More information about the Elektro mailing list