logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

DS1337 Bascom program. Uruchomienie zegarka. Dlaczego wyświetla 165?

VippeR 23 Mar 2009 17:23 4349 18
  • #1 6321709
    VippeR
    Poziom 15  
    Usiłuję uruchomić ten zegarek. Wyświetla mi 165. Poniżej kod. Czy ktoś wie, co jest nie tak? Czytałem inne posty z podobnymi problemami, ale programy tam zamieszczone działają tak samo.


      
    I2cstart
    I2cwbyte 208
    I2cwbyte 0
    I2cstop
    I2cstart
    I2cwbyte 209
    I2crbyte S , Ack
    I2crbyte M , Ack
    I2crbyte H , Nack
    I2cstop
    S = Makedec(s) 
    Cls
    Lcd S
  • #3 6326287
    VippeR
    Poziom 15  
    No tak masz racje. Poprawiłem. Teoretycznie według danych nie powinno być i2cstop
    po pierwszym wysłaniu danych. Sprawdziłem i to. Nie działa. Dodam tylko, że 165 to liczba bo zdekodowaniu makedec. W rzeczywistości są wysłane same jedynki w BCD.
  • #4 6326953
    zumek
    Poziom 39  
    VippeR napisał:
    ... Czy ktoś wie, co jest nie tak? ...

    Raczej nikt nie będzie wiedział :|
    A dlaczego :?: Ano dlatego, że Twoje informacje są mniej niż skąpe.
    1)Wiemy że Bascom, ale nie wiemy jaki - AVR, 8051 :?:
    2)Jeśli AVR, to korzystasz ze sprzętowego TWI, czy z programowego :?:
    3)Schemat mile widziany, lub opis co i gdzie podłączone.
    4)Pull-up'y na magistrali są :?:
    Test:
    
    Cls
    I2cstart
    I2cwbyte 208
    If Err=0 Then      'zgłosiło się urządzenie o adresie 208 
       I2cwbyte 0
       I2cstart
       I2cwbyte 209
       I2crbyte S , Ack
       I2cstop
       S = Makedec(s)
       Lcd S
    Else                  'brak urządzenia o adresie 208
       Lcd "No device !"
    End If
    
  • #5 6326984
    VippeR
    Poziom 15  
    Hmmm... może masz i rację. No więc tak.
    Procesor to ATtiny2313. Twi programowe (aczkolwiek nie pamiętam co to znaczyło, choć się o tym uczyłem ;)
    Schemat raczej nie potrzebny. Korzystam z płytki AVT3500. Rezystory są, tak jak na płytce. Przy okazji dodam, że piny są zwarte AB na płytce.
    Układ DS1337 mam oddzielnie na płytce stykowej.

    Dodano po 2 [minuty]:

    Hmm, wyświetla No device! :(
  • #6 6327239
    zumek
    Poziom 39  
    VippeR napisał:
    Procesor to ATtiny2313.

    Nie ma sprzętowego TWI, więc pozostaje programowe.
    VippeR napisał:
    Przy okazji dodam, że piny są zwarte AB na płytce.

    Zwory przestaw tak:
    J1=BC
    J2=BC
    VippeR napisał:
    Hmm, wyświetla No device! :(

    A to oznacza kłopoty ;)
    I żeby było wszystko jasne, to skonfiguruj w kodzie magistralę I2C i inne rzeczy :-P
    Np.
    
    $Crystal = 1000000 ' wpisz właściwą wartość
    $Hwstack = 32
    $Swstack = 16
    $Framesize = 16
    Config Sda = Portd.6
    Config Scl = Portd.5
    Config I2cdelay = 20
    
  • #7 6327647
    VippeR
    Poziom 15  
    A czy wtedy rezystory podciągające nie będą miały zbyt małej wartości - 3,3k? Bo w I2C chyba powinno być 4,7k.

    Dodano po 43 [sekundy]:

    Zrobiłem tak jak napisałeś id alej nic :(

    $regfile = "attiny2313.dat"
    $crystal = 4000000                                          ' wpisz właściwą wartość
    $Hwstack = 32
    $Swstack = 16
    $framesize = 16
    
    Config Portb = 255                                         
           Portb = &B11111111                                   
    Config Portd = &B1111100                                   
           Portd = &B1111111
    
    Config Sda = Portd.6
    Config Scl = Portd.5
    Config I2cdelay = 20
    
    Dim S As Byte
    
    Portd.2 = 0
    
    Do
    Wait 1
    Cursor Off
    Cls
    I2cstart
    I2cwbyte 208
    If Err=0 Then      'zgłosiło się urządzenie o adresie 208
       I2cwbyte 0
       I2cstart
       I2cwbyte 209
       I2crbyte S , Ack
       I2cstop
       S = Makedec(s)
       Lcd S
    Else                  'brak urządzenia o adresie 208
       Lcd "No device"
    End If
    Loop
    End
  • #9 6336335
    crazy_phisic
    VIP Zasłużony dla elektroda
    VippeR napisał:
    Jak rozumiem nikt nie jest w stanie mi pomóc? Hmmm...


    A kolega co zrobił żeby rozwiązać problem?
    - połączenia elektryczne sprawdzone?
    - zwory przestawione na BC?
    - zasilanie RTC prawidłowe?
    - Attiny2313 domyślnie pracuje z zegarem 1MHz (chyba że kolega przestawił Fuse bity na zewnętrzny kwarc 4MHz) - w programie 4MHz a może to 90S2313?
  • #10 6336686
    VippeR
    Poziom 15  
    Oczywiście, że połączenia sprawdzone. To była moja pierwsza czynność. Zwory przestawione. Zasilanie też sprawdzałem i ok. ATtiny ma przestawione fusebity na 011100 czyli na zewnętrzny oscylator od 3 do 8MHz, czyli jest dobrze.
  • #11 6336947
    zumek
    Poziom 39  
    A po co konfigurujesz ten port :?:
    
    Config Portd = &B1111100                                   
           Portd = &B1111111
    

    W tym przykładzie jest to zbędne i być może "szkodliwe" ;)
    Spróbuj ponownie, ale bez tej konfiguracji.
  • #12 6336995
    VippeR
    Poziom 15  
    Nie może być szkodliwe. zastanów się nad tym dobrze. wykorzystuję tylko dwie końcówki. Co zresztą? Po drugie w książce P. Góreckiego "Mikrokontrolery dla początkujących" tak było i wszystko śmigało bez problemów.
  • #13 6337218
    crazy_phisic
    VIP Zasłużony dla elektroda
    VippeR napisał:
    .... ATtiny ma przestawione fusebity na 011100 czyli na zewnętrzny oscylator od 3 do 8MHz, czyli jest dobrze.


    CKDIV8?
  • #14 6337456
    zumek
    Poziom 39  
    VippeR napisał:
    Nie może być szkodliwe.

    W tym konkretnym przypadku, zapisanie "1" do PORTD.5 i PORTD.6 jest szkodliwe.
    VippeR napisał:

    zastanów się nad tym dobrze.

    Nie muszę ;) Ja po porostu wiem , jak działa programowa obsługa magistrali I2C w Bascomie. W dużym skrócie rzecz ujmując, komunikacja opiera się tylko na zmianie kierunku (zapis do rejestru DDR) odpowiednich bitów , przyporządkowanych do SCL i SDA.Jeśli w rejestrze PORT ustawisz bity odpowiadające liniom SCL i SDA, to nici z komunikacji.
    ...

    PS
    I nie wierz we wszystko , co wyczytasz w książkach :-P
  • #16 6340061
    VippeR
    Poziom 15  
    Tak, spróbowałem i taki jesteś obeznany, że i to nie działa. W ogóle te forum to dziwne jest - bez obrazy. Zauważyłem, że wszędzie ludzie piszą, że czego to nie umieją, wszystko krytykują, a jak co do czego, to... nie będę kończyć, bo było by to nieetyczne.
  • #17 6341545
    zumek
    Poziom 39  
    VippeR napisał:
    Tak, spróbowałem i taki jesteś obeznany, że i to nie działa. W ogóle te forum to dziwne jest - bez obrazy. Zauważyłem, że wszędzie ludzie piszą, że czego to nie umieją, wszystko krytykują, a jak co do czego, to... nie będę kończyć, bo było by to nieetyczne.

    Przykro mi to czytać :|
    Widzę że własne niepowodzenia, chcesz "przypisać do mojego konta".
    Ileż to tematów przewinęło się przez ten dział, gdzie autorzy tematów zarzekali się, że wszystko podłączyli tak jak opisali, stosowali się do rad innych, a urządzenie jak nie działało, tak nie działa.Na koniec okazywało się że, a to pomylili kabelki, a to zimny lut i jeszcze tysiąc innych przyczyn, mimo że wcześniej przysięgali, że wszystko sprawdzili 100 razy...
    Nie wiem co jeszcze może być przyczyną niedziałania Twojego układu, ale program na pewno jest dobry.Jeśli masz jakiś inny układ z szyną I2C, umieść go ma swojej płytce stykowej i sprawdź czy uC się z nim "dogada", bo może Twój DS1337 jest uszkodzony, może coś z Twoją płytką jest nie tak, a może ... jeszcze coś innego.
  • #18 6341823
    janbernat
    Poziom 38  
    VippeR:
    "wszędzie ludzie piszą, że czego to nie umieją...
    ...W ogóle te forum to dziwne jest..."
    Ale wielu pisze:
    wszędzie są ludzie którzy niczego(jeszcze) nie umieją...
    A to forum, jako jedno z nielicznych jest NORMALNE.
    Wymaga własnej pracy i używania rozumu.
  • #19 6840150
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA