Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[I2C] - I2C Pcf8583 transmisja

squelch 02 Sty 2016 10:20 783 15
  • #1 02 Sty 2016 10:20
    squelch
    Poziom 11  

    Cześć. Mam szybkie pytanie: dlaczego po wysłaniu startu i bajtu lub odebraniu zerujemy SCL?

    0 15
  • #2 02 Sty 2016 10:50
    2675900
    Użytkownik usunął konto  
  • Pomocny post
    #4 02 Sty 2016 11:01
    2675900
    Użytkownik usunął konto  
  • Pomocny post
    #5 02 Sty 2016 11:08
    373522
    Użytkownik usunął konto  
  • #6 02 Sty 2016 11:49
    squelch
    Poziom 11  

    Ja mam bluebooka i tam mirek operuje na portx a nie na ddrx ale mozna chyba i tak i tak.Przegladalem jego kody i on tam jak wysyła start i stop i bajt lub odbiera to zawsze ma koncu ustawia w stan niski scl.Tylko jak stop wysyla to tak nie robi[/img]

    0
  • #7 02 Sty 2016 12:03
    excray
    Poziom 39  

    Pokaż kod o którym mówisz.

    0
  • Pomocny post
    #8 02 Sty 2016 12:13
    2675900
    Użytkownik usunął konto  
  • #9 02 Sty 2016 13:47
    squelch
    Poziom 11  

    To jest część kodu mirka dla startu

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Do czego służy to opóżnienie o 3 takty kwarca

    0
  • Pomocny post
    #10 02 Sty 2016 13:49
    2675900
    Użytkownik usunął konto  
  • #11 02 Sty 2016 14:19
    squelch
    Poziom 11  

    Wielkie dzięki za pomoc.

    Znalazłem coś takiego

    Cytat:

    Zmiana na linii danych podczas transmisji może następować jedynie, gdy linia zegara znajduje się w stanie niskim. Nie dotyczy to specjalnych sytuacji: bitu startu i bitu stopu.


    Dlatego że Slave mogłoby zmianę SDA podczas wysokiego SCL potraktować jako bajt tak :?:

    0
  • Pomocny post
    #12 02 Sty 2016 14:21
    excray
    Poziom 39  

    squelch napisał:
    Dlatego że Slave mogłoby zmianę SDA podczas wysokiego SCL potraktować jako bajt tak

    Mogłoby potraktować jako start albo stop. Inne opcje nie wchodzą w rachubę. Spójrz na zdjęcie w poście #4. Masz na żółto zaznaczone takie sytuacje.

    0
  • #13 02 Sty 2016 15:22
    squelch
    Poziom 11  

    A jeszcze pytanie do kodu mirka

    Kod: c
    Zaloguj się, aby zobaczyć kod


    niepotrzebne jest chyba
    I2C_SDL_HI; // pozostawienie SDA w stanie wysokim
    bo przecież rezystory wymuszają stan wysoki

    i jeszcze po co on zeruje SCL
    I2C_SCL_LO;
    w funkcji generującej stop mógłby przecież ustawić stan niski na SDA a potem wysoki

    dobrze myślę :?:

    Dodano po 2 [minuty]:

    A dlaczego on robi jakiś dziwny zwrot ack
    return (b == 0); //zwrócenie ACK jako rezultatu funkcji
    nie może być b

    0
  • #14 02 Sty 2016 15:43
    2675900
    Użytkownik usunął konto  
  • #16 02 Sty 2016 17:21
    2675900
    Użytkownik usunął konto