O
otuzsubat
Guest
Jeg vil bruke hverdag alarm i PCF8583.For eksempel, jeg ønsker at den produserer et avbrudd på hver mandag 13:30.Min koden nedenfor.Kan du si meg hvor er det feil?
int int2bcd (int dec) (
return ((dec/10) <<4) (dec% 10);
)
void rtc_set () (
i2c_start ();
i2c_write (0xA2); / / sender enheten adresse
i2c_write (0x00); / / sende adressen byte
i2c_write (0x80); / / Stopp RTC telling
/************* Skriv faktiske tiden ****************/
i2c_write (0x00); / / hundredel av andre
i2c_write (0x00); / / Sekunder
i2c_write (RTC [3 ]);// Minutes (i BCD format)
i2c_write (RTC [2 ]);// timer (i BCD format, 24hour format)
i2c_write (RTC [0 ]);// År / Dato (i BCD format)
i2c_write (RTC [1 ]);// Ukedag / måned (i BCD format)
i2c_write (0x00); / / Disable Tidsur
/************* Skriv alarmtidspunktet ****************/
i2c_write (0xA0); / / Alarm Flag, Interrupt, No tidtaker alarm, Ukedag alarm
i2c_write (0x00); / / Alarm hundredel av andre
i2c_write (0x00); / / Alarm Sekunder
i2c_write (int2bcd (alarm.minute ));// Alarm Minutes
i2c_write (int2bcd (alarm.hour ));// Alarm Timer
i2c_write (0x00); / / Alarm Dato
i2c_write ((0x01 <<(alarm.day-1 )));// Alarm Ukedag
i2c_stop ();
delay_ms (5);
i2c_start ();// starter overføringen
i2c_write (0x00); / / sender enheten adresse
i2c_write (0x00); / / Send adressen byte
i2c_write (0x04); / / Start RTC telling
i2c_stop ();
delay_ms (5);
)
int int2bcd (int dec) (
return ((dec/10) <<4) (dec% 10);
)
void rtc_set () (
i2c_start ();
i2c_write (0xA2); / / sender enheten adresse
i2c_write (0x00); / / sende adressen byte
i2c_write (0x80); / / Stopp RTC telling
/************* Skriv faktiske tiden ****************/
i2c_write (0x00); / / hundredel av andre
i2c_write (0x00); / / Sekunder
i2c_write (RTC [3 ]);// Minutes (i BCD format)
i2c_write (RTC [2 ]);// timer (i BCD format, 24hour format)
i2c_write (RTC [0 ]);// År / Dato (i BCD format)
i2c_write (RTC [1 ]);// Ukedag / måned (i BCD format)
i2c_write (0x00); / / Disable Tidsur
/************* Skriv alarmtidspunktet ****************/
i2c_write (0xA0); / / Alarm Flag, Interrupt, No tidtaker alarm, Ukedag alarm
i2c_write (0x00); / / Alarm hundredel av andre
i2c_write (0x00); / / Alarm Sekunder
i2c_write (int2bcd (alarm.minute ));// Alarm Minutes
i2c_write (int2bcd (alarm.hour ));// Alarm Timer
i2c_write (0x00); / / Alarm Dato
i2c_write ((0x01 <<(alarm.day-1 )));// Alarm Ukedag
i2c_stop ();
delay_ms (5);
i2c_start ();// starter overføringen
i2c_write (0x00); / / sender enheten adresse
i2c_write (0x00); / / Send adressen byte
i2c_write (0x04); / / Start RTC telling
i2c_stop ();
delay_ms (5);
)