Pokrewne
menu      Mosty miedzy interfejsami (UART/SPI/I2C)
menu      Gdzie kupic EEPROM SPI 25LC040 ?
menu      SQL Error : 1114 The table 'xxx_users_cache' is full
menu      Separacja SPI
menu      drukowanie duplex
menu      praca ł±cza w Full Duplex
menu      Co¶ w podobie iptables.
menu      Zakup nowego komputera - co wybrać ?
menu      grafika/chodzenie s754/obudowa 3,5 cala na HDD/ co wybrać??
menu      NaMedal.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • legator.pev.pl
  • 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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • konstruktor.keep.pl
  • Design by flankerds.com