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

[atmega32][c]błąd odczytu/zapisu z rtc pcf8583

margas4542 13 Mar 2011 08:59 3048 8
REKLAMA
  • #1 9270280
    margas4542
    Poziom 16  
    Witam. Gdzieś w tym kodzie popełniłem błąd ale pomimo kilkukrotnego sprawdzenia nadal nie potrafię odkryć czy błędnie zapisuje dane czy błędnie je odczytuje...może ktoś mógłby wskazać "usterkę" w tym programie.?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [url=]Link[/url]
  • REKLAMA
  • #2 9270418
    Karol966
    Poziom 31  
    Użyj sprawdzonych bibliotek do zegara. Pamiętaj o rezystorach podciągających.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Przykład użycia:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Procedury nie są moje. Moje jest ich właściwe wykorzystanie. Generalnie tak robiłem kiedyś, teraz obsługuję magistralę moim zdaniem w bardziej poprany sposób, czyli tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Do tego oczywiście napisałem odpowiednie funkcje twi*. Ten drugi sposób to tak na przyszłość - przydaje się bardzo przy pracy z różnymi układami na i2c, chociażby większe pamięci eeprom, które już wymagają innej obsługi niż zegar pcf8583 czy mniejsze kostki eeprom.
  • REKLAMA
  • #3 9271305
    margas4542
    Poziom 16  
    Korzystam ze sprzętowego TWI który w innym programie nie sprawia problemów...coś namieszałem w kodzie i nie potrafię odnaleźć tego bubla..kod obslugi TWI jest chyba taki sam jak twój..
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    //----- inicjacja TWI - preskaler I2C - ((F_CPU / 100000UL - 16)
    TWSR=0x00; TWBR=0x48;
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 9271374
    Karol966
    Poziom 31  
    A z czym dokładnie masz problem? Sam układ zegara działa poprawnie - podłącz diodę led (np czerwoną z rezystorem sporym np 1k) do wyjścia INT zegara i zobacz czy jest tam (na oko) 1Hz? Druga sprawa co do ustawień kierunków linii SCL SDA - gdy używam sprzętowego i2c to nic z tym nie robię, poza tym jeżeli już chcesz ustawiać kierunek tych linii to zauważ, że np linia SDA jest raz wyjściem (nadawanie) a raz wejściem (odbiór danych).
  • REKLAMA
  • #5 9271931
    margas4542
    Poziom 16  
    Ogólnie problem jest z koncepcją tego programu...teraz usiłuje wymyślić jak zrobić dwu kanałowy zegar sterujący z możliwością sterowania od poniedziałku do piątku o jednym czasie a w sobotę i niedzielę o drugim czasie by sterować przez optotiaki przyłączonymi do jego kanałów czterema obwodami sieciowymi... jest to część systemu monitorującego napięcie ogniwa fotogalwanicznego, napięcia i prądu akumulatora oraz prądu zasilania i poboru prądu przez obciążenia.Jeżeli ktoś ma pomysł ja to zrobić to podeśle mój nie dokończony program dla orientacji jak zrobione jest menu opcji i co z czym usiłuje pożenić.
  • #7 9379680
    margas4542
    Poziom 16  
    Witam. Miał być w założeniu dwukanałowy czyli sterować wybrane w programie obwody np;z pierwszego kanału obwody 3 i 4 a z drugiego obwody 1 i 2 ale nie potrafiłem sobie z tym poradzić więc "przypisałem" każdemu obwodowi własny czas załączenia i wyłączenia z podziałem na dni robocze [od Poniedzialku do Piatku ] i dni wolne [sobota niedziela]. Chciałem jeszcze napisać funkcję pozwalającą na odroczenie czasu zadziałania o określony czas [zwłoka] ale nie poradziłem sobie ze zdefiniowanie odpowiedniej funkcji. Zamieszczam cały kod i udzielam zezwolenia na jego kopiowanie i modyfikację. Każdy kto mógłby pomóc w jego dopracowaniu mile widziany . pozdrawiam.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #8 9777340
    kazio0o
    Poziom 12  
    Witam, mam problem z ustawieniem zegara.
    jak przed odczytem czasu wywołam zapisz_czas_do_PCF8583 od Karok966 a potem odczytam to ładnie wyświetli mi zmieniony czas jednak gdy chcę zmienić znów to już nie działa. Czy ktoś wie czym może to być spowodowane?
  • #9 9777368
    margas4542
    Poziom 16  
    Nie wiem czy to istotne ale w moim kodzie zapis czasu do PCF-a realizowany jest po odczycie wcześniej ustawionych wartości początkowych naliczania czasu.
REKLAMA