eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
Ilość wypowiedzi w tym wątku: 5

  • 1. Data: 2009-09-25 15:39:13
    Temat: AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
    Od: "roxy" <k...@o...pl>

    Mam pytanie: czy na zamieszczonym ponizej fragmencie programu zasada
    generowania sygnalu potwierdzenia ACK jest taka ze po odebraniu wlasnego
    adresu uklad sleve generuje ACK po napotkaniu polecenia:

    "TWCR|=(1<<TWEA)|(1<<TWINT); // potwierdza to wygenerowaniem do mastera
    syg ACK"

    czy może zasada jest taka że slave odbiera swoj adres automatycznie generuje
    ACK a dzialanie polecenia:
    "TWCR|=(1<<TWEA)|(1<<TWINT); // potwierdza to wygenerowaniem do mastera
    syg ACK"
    jest takie aby po odebraniu nastepnego bajtu (ktory przychodzi po adresie)
    wygenerować ACK.

    sadze ze jasno sie wyrazilem.


    Oto fragment funkcji obslugi przerwan od twi
    ISR(TWI_vect)
    {
    switch (TW_STATUS) // sprawdzam status twi po zgloszeniu
    przerwania
    {
    case TW_BUS_ERROR: // blad na magistrali TWI - nieprawidlowy
    sygnal stopu/startu
    {
    TWCR|=(1<<TWSTO)|(1<<TWINT); // jezeli wystapil blad na mag.
    twi to ustaw SCL i SDA w HIZ

    break;
    }
    case TW_SR_SLA_ACK: // slave zostal wywolany przez odbior
    wlasnego adresu
    {
    TWCR|=(1<<TWEA)|(1<<TWINT); // potwierdza to
    wygenerowaniem do mastera syg ACK
    break;
    }
    ..... .
    ......
    ...

    } //end switch

    }




    __________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow
    4457 (20090925) __________

    Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

    http://www.eset.pl lub http://www.eset.com





  • 2. Data: 2009-09-25 20:12:14
    Temat: Re: AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
    Od: Adam Dybkowski <a...@4...pl>

    roxy pisze:

    > Mam pytanie: czy na zamieszczonym ponizej fragmencie programu zasada
    > generowania sygnalu potwierdzenia ACK jest taka ze po odebraniu wlasnego
    > adresu uklad sleve generuje ACK po napotkaniu polecenia:
    >
    > "TWCR|=(1<<TWEA)|(1<<TWINT); // potwierdza to wygenerowaniem do mastera
    > syg ACK"
    >
    > czy może zasada jest taka że slave odbiera swoj adres automatycznie generuje
    > ACK a dzialanie polecenia:
    > "TWCR|=(1<<TWEA)|(1<<TWINT); // potwierdza to wygenerowaniem do mastera
    > syg ACK"
    > jest takie aby po odebraniu nastepnego bajtu (ktory przychodzi po adresie)
    > wygenerować ACK.

    To drugie. Bit TWEA służy do włączenia (1) / wyłączenia (0)
    automatycznej generacji ACKów przy pracy ATmegi w trybie slave.

    Zapisanie jedynki do bitu TWINT natomiast zeruje stan tego bitu czyli
    potwierdza przyjęcie przerwania ("The TWINT Flag must be cleared by
    software by writing a logic one to it").

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 3. Data: 2009-09-26 13:17:54
    Temat: Re: AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
    Od: "roxy" <k...@o...pl>

    > To drugie. Bit TWEA służy do włączenia (1) / wyłączenia (0)
    > automatycznej generacji ACKów przy pracy ATmegi w trybie slave.
    >
    > Zapisanie jedynki do bitu TWINT natomiast zeruje stan tego bitu czyli
    > potwierdza przyjęcie przerwania ("The TWINT Flag must be cleared by
    > software by writing a logic one to it").
    >
    > --
    > Adam Dybkowski
    > http://dybkowski.net/
    >

    A jaka sekwencją rozkazow powinienem zakonczyc odbior ostatniego bajtu
    przez slave zakonczona transmisją NACK

    np.
    case TW_SR_DATA_NACK:
    {
    buf[5]=TWDR;
    TWCR|= ;// iteraz co wpisac do TWCR aby bylo poprawnie????

    }




    __________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow
    4459 (20090926) __________

    Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

    http://www.eset.pl lub http://www.eset.com





  • 4. Data: 2009-09-26 15:33:53
    Temat: Re: AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
    Od: "roxy" <k...@o...pl>


    > A jaka sekwencją rozkazow powinienem zakonczyc odbior ostatniego bajtu
    > przez slave zakonczona transmisją NACK
    >
    > np.
    > case TW_SR_DATA_NACK:
    > {
    > buf[5]=TWDR;
    > TWCR|= ;// iteraz co wpisac do TWCR aby bylo poprawnie????
    >
    > }
    >

    Jeszcze jedno pytanie. Co wpisac do rejestrru TWCR gdy po sprawdzeniu
    statusu TWSR zostanie wykonany fragment :

    case TW_BUS_ERROR: // blad na magistrali TWI - nieprawidlowy sygnal
    stopu/startu
    {
    ....
    n=twi_recive_buf[0]=0;
    TWCR=??? // co tu wlasciwie ma być???
    break;
    }



    __________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow
    4459 (20090926) __________

    Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

    http://www.eset.pl lub http://www.eset.com





  • 5. Data: 2009-09-27 21:29:06
    Temat: Re: AVR ATMEGA8 i2c moze ktos wyjasnic niejasnosc?
    Od: Adam Dybkowski <a...@4...pl>

    roxy pisze:

    > A jaka sekwencją rozkazow powinienem zakonczyc odbior ostatniego bajtu
    > przez slave zakonczona transmisją NACK

    Co tu dużo tłumaczyć - zobacz po prostu, jak to jest zrobione w
    sterownikach otwartych systemów operacyjnych, np. Nut/OS
    (www.ethernut.de, najlepiej ściągnąć najnowszą wersję przez SVN), kod
    znajdziesz po rozpakowaniu/instalacji źródeł systemu w pliku
    nut/arch/avr/dev/twif.c

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

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: