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

PCF8583 RTC - Zawieszanie się i błędne dane przy częstym resetowaniu

Luklukowaty 28 Kwi 2004 22:12 1808 7
REKLAMA
  • #1 617490
    Luklukowaty
    Poziom 19  
    Posty: 394
    Pomógł: 29
    Ocena: 42
    Witam.

    Ma malutki problemy z tym układem - otóż ten RTC zachowuje się tak jakby czasami się zawieszał i to nie wiem czemu. Przestaje generować impulsy na INT, a datę i godzinę podaje jakieś bzdury (i te bzdury zawsze są takie same). Dzieje się tak jak robie coś z układem, programuje, często włączam i wyłączam.

    Macie jakieś rady ??
  • REKLAMA
  • #2 617860
    diag
    Poziom 29  
    Posty: 1401
    Pomógł: 45
    Ocena: 209
    Bez schematu nie zgadniesz.
  • REKLAMA
  • #3 618931
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    1 sprawdz sobie obw. kwarca
    2 jesli czesto programujesz, wyłaczasz układ to zadbaj aby po presecie procka dobrze nawiazac łacznosć (ja w krótkim czasie kilka razy wystawiam warunek stop dla i2c) ustawiam także odpwoeidnią wartosc do rejestru kontrolego. Może byc tak że przerywasz komunikacje proca z RTC i po ponownym odpaleniu układu RTC jest gdzie indziej- problem ten wystąpi gdy RTC ma osobne zasialnie

    napisz też jaki to prco i czym jest zaprogramowany
  • #4 619613
    Luklukowaty
    Poziom 19  
    Posty: 394
    Pomógł: 29
    Ocena: 42
    RTC posiada własne zasilanie 3V, które obsługiwane jest przez MAX690CPA.

    Procek to AT89S52 zaprogramowany w asemblerze przez ISP. Kwarce są wszystkie OK, itd. Dzieję się tak bardzo rzadko i tylko wtedy, gdy przez RS-485 przesyłam baaaardzo dużo danych w nieodpowiednim czasie. Układ PCF podłączony jest pod osobne linie, które łączą się tylko z AT24C02, która ma inny adres.
  • REKLAMA
  • #5 619881
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    he he mamy podobne gusty- też teraz bawie sie z S52 i PCF. nie pamietam czy programowe zatrzymanie zegara powoduje też że przestaje on generować przerwania co sekunde (może sie ktos wypowie dla pewnosci), takie zatrzymanie jest niby wskazane przy nastawianiu zegarka- osobiście darowałem sobie zatrzymywanie zegara w tym momencie.

    komunikacja z eepromem jest ok? Przyjżał bym się procedurom od i2c, nagle zmiany wartosci odbieranych z magistali to dziwna sprawa. Tu snują mi się po głowie dwa rozwiazania:
    1: RS485 modyfikuje ci rejestry procesora, które są urzyte w procedurach i2c
    2: RS wjeżdza ci w RAM gdzie trzymane są dane od PCFa

    małe pytanko, wiesz o tym, aby w momencie przerwania odłożyć na stos wszystkie te rejestry (np ACC, B PSW ARx) które są urzywane w programie głównym jak i w procedurze przerwania?

    pozdrawiam!
  • REKLAMA
  • #6 624626
    Luklukowaty
    Poziom 19  
    Posty: 394
    Pomógł: 29
    Ocena: 42
    Rejestry, oczywiście na stos. Sądzę, że błąd wynika podczas odczytu komórki pamięci, chodzi mi o to, że PIC automatycznie zatrzymuje sobie zegar podczas odczytu komórek zegara i jeżeli odczyt nie zostanie zakończony, to zegar stoi, a tak się dzieje, jeżeli mamy baterię :)

    W ten sposób, podczas startu uPC należałoby przesłać kilka NAKów i STOPów oraz zapisać do rejestru konfigurującego PCFa (czyli pod adres 0) wartość 0 uruchamiającą zegar od nowa. Jedynie to zastanawiam się, czy zegar się wtyedy nie rozjedzie....
  • #7 625006
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    źle robisz, zatrzymanie pcf ma jedynie sens podczas wpisywania do pcfa nowego czasu. Włączanie i wyłaczanie zliczania kilka, kilkanaście razy na sekunde nic dobrego chyba nie przyniesie....

    Zastanawiam się też czy źle zrozumiałeś PDF'a. tam jest napisane że podczas odczytu wszystkie dane przezucane sa do osobnego zatrzasku. Ma to uchronic przed błędami w odczycie

    "...to zegar stoi, a tak się dzieje, jeżeli mamy baterię"
    Wytałumacz o co chodzi dokładniej z tą baterią

    Co do inicjalizacji to robie tak że po resecie kilka razy wysyłam STOP i zero do rejestru specjalnego w PCF

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy układu RTC PCF8583, który przy częstym resetowaniu i programowaniu przestaje generować impulsy na wyjściu INT oraz podaje błędne, powtarzalne dane czasu i daty. Układ posiada własne zasilanie 3V realizowane przez MAX690CPA, a mikrokontroler to AT89S52 programowany w asemblerze przez ISP. Problemy pojawiają się głównie podczas intensywnej transmisji danych przez RS-485, co może wpływać na rejestry procesora lub pamięć RAM wykorzystywaną w procedurach I2C. Zalecane jest sprawdzenie obwodu kwarcowego i kondensatorów, poprawne inicjalizowanie magistrali I2C po resecie (wielokrotne wysyłanie warunków STOP i wartości do rejestru kontrolnego PCF8583), a także prawidłowe zarządzanie rejestrami procesora podczas przerwań. Dyskusja podkreśla, że zatrzymywanie i uruchamianie zegara PCF8583 powinno odbywać się tylko podczas ustawiania czasu, a nie wielokrotnie w krótkim czasie, aby uniknąć błędów. Wątpliwości budzi interpretacja działania zegara podczas odczytu danych i wpływ baterii podtrzymującej zasilanie RTC.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA