Chciałbym skorzystać z funkcji alarmu na kostce PCF8583.
Robie tak:
Wpisuje (w kodzie BCD) do rejestrów:
* 0AH - sekundy, 0BH - minuty, 0CH - godziny, 0DH - dzień miesiąca, 0EH - miesiąc - w celu ustawienia zadziałania alarmu
* ustawiam w rejestrze 00H (CONTROL\STATUS) bit "alarm enable" - główne zezwolenie dla alarmu (aktywuje rejestr 08H (ALARM CONTROL)
* w rejestrze ALARM CONTROL wybieram tryb alarmu (4 i 5 bit):
00 - no clock alarm
01 - daily alarm (codziennie)
10 - weekday alarm (w określonym dniu tygodnia - można ustawić bity dla dowolnych dni tygodnia)
11 - dated alarm (w określonym dniu miesiąca)
* ustawiam bit "timer alarm enable" (6 bit)
* ustawiam bit "alarm interrupt enable" (7 bit).
Ostatni bit powinien spowodować wygenerowanie przerwania i ustawienie flagi alarmu (bit 1 rejestru CONTROL\STATUS) w odpowiednim czasie.
W BASCOMie tak to realizuje:
Kod: Zaznacz cały
i2cstart
i2cwbyte 162
i2cwbyte 0 'w rejestrze 00 (status/control)
i2cwbyte 4 'ustawienie alarm enable
i2cstop
i2cstart
i2cwbyte 162
i2cwbyte 10 'zaczynam od rejestru sekund wpisywanie czas zadziałania alarmu:
i2cwbyte s 'sekundy (juz w kodzie BCD)
i2cwbyte m 'minuty(juz w kodzie BCD)
i2cwbyte dzien 'dzien(juz w kodzie BCD)
i2cwbyte miesiac 'miesiac(juz w kodzie BCD)
i2cstop
i2cstart
i2cwbyte 162
i2cwbyte 8 'w rejestrze alarm control:
i2cwbyte 16 'tryb dzienny
i2cstop
i2cstart
i2cwbyte 162
i2cwbyte 8
i2cwbyte 64
i2cstop
i2cstart
i2cwbyte 162
i2cwbyte 8
i2cwbyte 128
i2cstart
Czemu to nie działa??????????????????????????????????????
Do rejestru 8 wpisuje pojedyńczo każdy bit = 1. Jednak próbowałem też od razu trzy bity (7, 6, 4) ustawić i też nie działa.
UKŁAD NIE GENERUJE PRZERWANIA INT!!!!????
Pomocy koledzy!!!!