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

PCF8583 - Clock Alarm nie wywołuje przerwania INT, co robię źle?

ravmar 07 Mar 2012 23:17 1463 2
  • #1 10648787
    ravmar
    Poziom 22  
    Aż głupio i wstyd pisać o takim problemie, ale w końcu portal od tego jest.
    Krótko i na temat : Mam problem z uaktywnieniem clock alarmu + INT
    Timer Alarm działa prawidłowo, Clock alarm już nie.

    startuje zasilanie, PCF'ka zaczyna wszystko liczyć od "zera" czyli 00.00.01 00:00:00

    CONTROL STATUS o adresie 0x00 ustawiam na 0x04
    bit 3 zostaje aktywowany - alarm enable
    ALARM CONTROL o adresie 0x08 ustawiam na 0xDA
    bit 7,6,4,3,1 zostają ustawione
    7,6,3 - dot. aktywacji INT
    5,4 - w moim przypadku daily (alarm dzienny)
    1 - timer porównujący z rejestrem SECOND(przerwania od Timera działają)
    ALARM SECOND o adresie 0x05 ustawiam na 0x10

    Wg. mojego toku rozumowania alarm powinien zostać uaktywniony, a tym samym wywołać przerwanie o czasie 00.00.01 00:00:10
  • Pomocny post
    #2 11114059
    smajlas
    Poziom 12  
    Miałem podobny problem:
    Control Status Register (0x00) ustawiony na 0x04
    Alarm Control (0x08) ustawiony na 0x90
    chciałem uzyskać alarm codziennie o określonej godzinie, a skorzystać chcę z wyjścia INT PCF8583.
    Wszystko ustawione, a flaga się nie zmienia, nie zmienia się też stan wyjścia INT (ma się zmienić z Hi na Lo)
    Po sprawdzeniu rejestrów okazało się, że w rejestrze Hundredth of a second (0x09) znajduje się wartość 0x8F, co skutecznie zapobiega aktywowaniu się flagi alarm flag w rejestrze Control/Status Register.
    Spróbuj ustawić 0x00 w adresie 0x09 - u mnie zadziałało!
  • #3 11412728
    ravmar
    Poziom 22  
    Kolega smajlas bardzo pomógł. Nie mogłem ruszyć z problemem z bardzo błahego powodu. Przy próbach chciałem uruchomić alarmclock od razu na starcie pracy PCFki i wywołać przerwanie po 5sekundach. W tym celu ustawiałem tylko wartość 0x05 pod adresem 0x0A (alarm seconds) zapominając o ustawieniu pierwszego miesiąca 0x01 jak i dnia. Co więcej podglądając rejestry od alarmu, w stanie domyślnym zawierają jakieś krzaki typu 0xFB, 0xBC należy wszystkie zdefiniować.
REKLAMA