SPI, Full-Duplex...?

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.

Reply to
ToR
Loading thread data ...

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

jest OK

Reply to
Ostry

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.