SPI, Full-Duplex...?
ToR - 17-08-2006 23:45
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.
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
Ostry - 18-08-2006 19:45
Dnia 17-08-2006 o 22:49:36 ToR <ToR_kulaWYTNIJTO@o2.pl> napisał:
> Moja propozycja:
>
> char SPI_MasterTransmit(char cData)
> {
> /* Start transmission */
> SPDR = cData;
> /* Wait for transmission complete */
> while(!(SPSR & (1<<SPIF)));
> return SPDR;
> }
jest OK
--
Ostry
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl