SPI, Full-Duplex...?

Aug 17, 2006 1 Replies

Potrzebuje napisac komunikacje SPI w full-duplex'sie i mam problem bo nie wiem jak to zaimplemenotwac.Otoz aktualnie mam funkcje dostepne w dokumentacji Atmega16 AVR czyli:



//-------------------------------- void SPI_MasterTransmit(char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); }


//-------------------------------- char SPI_Master_Receive(void) { /* Wait for reception complete */ while(!(SPSR & (1<<SPIF))); /* Return data register */ return SPDR; }



ale to nie full duplex...Bo transmisje "z" i "do" sa osobno. Znalezlem w ksiazce (BTC) pseudo-kod full-dupleska ale nie wiem jak sie do niego dobrac moze Wy bedziecie miec jakies propozycje:



unsigned char SPI_trans(unsigned char dana_nadana) { unsigned char i,dana_odebrana; dana_odebrana = 0; i = 8; whil (i) { i--; MISO=(dana_nadana>>i)$1; SCK=1; dana_Odebrahna=dana_odebrana|(unsigned char) (MOSI)<<i); SCK = 0; } return dana_odebrana; }



gdzie MISO,MOSI,SCK wyprowadzenia SPI na procku.



Wszytko fajnie ale ten ten kod wyglada mi na wlasna implementacje algorytmu SPI a ja chce wykotrzystac sprzetowy. A wiec czy mozecie jakos doradzic jak to polaczyc ?



Moja propozycja:



char SPI_MasterTransmit(char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); return SPDR; }



Pozdrawiam, Rafal k.


Dnia 17-08-2006 o 22:49:36 ToR <ToR snipped-for-privacy@o2.pl napisał:

jest OK

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required