eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR i TWI (I2C)
Ilość wypowiedzi w tym wątku: 4

  • 1. Data: 2009-02-10 20:39:51
    Temat: AVR i TWI (I2C)
    Od: g...@n...invalid (Adam Wysocki)

    Cześć,

    Próbuję użyć TWI w AVR i mam pytanie - skąd mam wiedzieć, że STOP już został
    wysłany i mogę wysłać następny START?

    --
    http://www.extreme-photo.pl/


  • 2. Data: 2009-02-10 23:01:20
    Temat: Re: AVR i TWI (I2C)
    Od: "PcmOL" <...@...net>

    "Adam Wysocki" <g...@n...invalid> wrote in message
    news:gophi.pme.1234298391@news.chmurka.net...
    > Cześć,
    >
    > Próbuję użyć TWI w AVR i mam pytanie - skąd mam wiedzieć, że STOP już
    > został
    > wysłany i mogę wysłać następny START?

    Jako master nie musisz czekac na STOP. Możesz wysyłać REPEATED START. Ja
    właśnie wykombinowałem jak nie wysyłać STOP.


  • 3. Data: 2009-02-10 23:06:21
    Temat: Re: AVR i TWI (I2C)
    Od: PH <s...@w...pl>

    Adam Wysocki pisze:
    > Cześć,
    >
    > Próbuję użyć TWI w AVR i mam pytanie - skąd mam wiedzieć, że STOP już został
    > wysłany i mogę wysłać następny START?
    >

    void i2c_stop(void)
    {
    /* send stop condition */
    TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);

    // wait until stop condition is executed and bus released
    while(TWCR & (1<<TWSTO));

    }/* i2c_stop */


    Czyli dopóki TWSTO jest wysokie, to nic nie powinieneś robić.
    Ale.. osobiście miałem problemy z slave'ami które miały z jakiegoś
    powodu wolną obsługę I2C. Za stopem a przed kolejnym startem, wstawiałem
    delaya - i się już dobrze bujało.



    --
    PH


  • 4. Data: 2009-02-11 07:53:08
    Temat: Re: AVR i TWI (I2C)
    Od: "PcmOL" <...@...net>

    "PH" <s...@w...pl> wrote in message
    news:gmt4jf$uo4$1@julia.coi.pw.edu.pl...
    > Adam Wysocki pisze:
    >> Cześć,
    >>
    >> Próbuję użyć TWI w AVR i mam pytanie - skąd mam wiedzieć, że STOP już
    >> został wysłany i mogę wysłać następny START?
    >>
    >
    > void i2c_stop(void)
    > {
    > /* send stop condition */
    > TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
    >
    > // wait until stop condition is executed and bus released
    > while(TWCR & (1<<TWSTO));
    >
    > }/* i2c_stop */
    >
    >
    > Czyli dopóki TWSTO jest wysokie, to nic nie powinieneś robić.
    > Ale.. osobiście miałem problemy z slave'ami które miały z jakiegoś powodu
    > wolną obsługę I2C. Za stopem a przed kolejnym startem, wstawiałem delaya -
    > i się już dobrze bujało.

    Ciekawiej się robi w środowisku multimaster.
    Jest sobie SLAVE RECEIVER i czeka na stop, żeby przełączyc sie na MASTER
    TRANSMITTER i wysłać swoje.
    Niby jest TWSR = A0 ( TWI_SRX_STOP_RESTART), ale jak elegancko rozróżnić te
    dwa stany?
    Eeech.... biorę się za lekture.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: