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

[Atmega16][Bascom] i2c - PCF8583

wsk175 04 Sie 2008 00:32 4479 7
REKLAMA
  • #1 5406186
    wsk175
    Poziom 11  
    Witam !!! Czytam i czytam o tych układach i nie mogę tego odpalić. Kupiłem sobie płytkę testową z mikrokontrolerem Atmega16 i w sumie już coś nie coś się nauczyłem o mikrokontrolerach, oprócz i2c. Mam podłączone pod i2c eeprom 24c02 i rtc PCF8583. Orginalnie SDA i SCL nie są podciągnięte prze rezystory do 5V+. Dodali programiki testowe do tej płytki są one pisane w C i w Bascomie. Wybrałem Bascom bo łatwiutki (wcześniej śmigałem na delphi to cos tam rozumiem). I tu mój problem bo tak wgram program pisany w C i PCF działa liczy od zera, a jak wgrywam program pisany w Bascomie to I2C w ogóle nie odpowiada. Mam taki programik (zaczerpnięty z elektrody) do sprawdzania urządzeń pod jakimi adresami są ale jak go wgrywam to nic się nie wyświetla na lcd :( . Może być problemem brak rezystorów podciągających, ale z drugiej strony to w cale by nie działał.

    Dim Adres As Byte                                           'zmienna adres
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    Cursor Off
    
    Cls
    For Adres = 0 To 255
    I2cstart                                                    'start magistrali
    I2cwbyte Adres                                         'wysyła 1 bajt, (zapytanie o odpowiedź)
    I2cstop                                                     'koniec transmisji
    
    Cls
    Lcd "Uklad pod:" ; Adres ; "  "
    Wait 2
    End If
    
    Next Adres
    Lcd "Koniec szukania"
    End                 
  • REKLAMA
  • #2 5406414
    marek-c
    Poziom 19  
    Bez tych rezystorów NIE MA PRAWA DZIAŁAĆ!!!!
  • REKLAMA
  • #3 5406471
    mirekk36
    Poziom 42  
    A przeanalizowałeś chociaż troszeczkę, ten krótki kod, który przedstawiłeś i który jak domniemam ci nie działa???

    w pętli for masz jakiś zagubiony "End If" ni przypiął ni wypiął, to po pierwsze

    a po drugie pętla ma wysyłać na magistralę I2C adresy no i co potem? wysyła i albo ci się ta pętla zawiesza albo jak usuniesz ten end if to będzie ci w pętli wyświetlać zmienną Adres, która i tak kręci się w kółko jako licznik pętli i to nawet gdy wyrzucisz to wysyłanie na i2c

    coś ten kodzik dziwnie wygląda jakby był pocięty i nie dokończony
  • #4 5435984
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 5551600
    mirolek2
    Poziom 11  
    Podkleję się do tego tematu bo nie ma sensu zakładać kolejnego.

    Tworze właśnie zegar na atmega i tym PCF'ie i napotkałem na problem. Mianowicie sekundy nie zliczają się kolejno od 1 do 60 tylko wartości przeskakują liczy od 1 do 9 i np. z 9 na 16, z 25 na 32 itp a przy tym PCF zlicza sekundy powyżej 59. Pytanie co może być tego powodem? Czy może to być spowodowane tym, że napięcie na PCF'ie wynosi 4,64V a nie równe 5V (ale to chyba przez diodę 1n4148). Ma ktoś jakieś pomysły???
  • REKLAMA
  • #6 5551624
    skritland
    Poziom 13  
    Poczytaj dokumentację i o kodzie BCD.
  • #7 5551640
    karlos79
    Poziom 33  
    Witam
    PCF8583 zwraca wynik w kodzie BCD.
    Musisz zamienić ten kod na kod dziesiętny i dopiero wyświetlać dane.
    To samo tyczy się danych które chcesz wysłać do PCF. Najpierw trzeba przekodować je na kod BCD i dopiero do niego wysłać.
    To tak po krótce :)
    Pozdrawiam
  • #8 5552029
    mirolek2
    Poziom 11  
    Tak to jest gdy w parze idą ze sobą pośpiech i niedoświadczenie - człowiek popełnia głupie błędy.

    Dzięki za pomoc, problem rozwiązany.
REKLAMA