O
otuzsubat
Guest
Ik wil gebruik weekdag alarm in PCF8583.Bijvoorbeeld, ik wil dat hij produceert een interrupt op elke maandag 13:30.Mijn code wordt hieronder.Kunt u mij zeggen waar is de fout?
int int2bcd (int dec) (
return ((dec/10) <<4) (dec 10%);
)
void rtc_set () (
i2c_start ();
i2c_write (0xA2); / / verzenden apparaatadres
i2c_write (0x00); / / verzenden adres byte
i2c_write (0x80); / / Stop RTC tellen
/************* Schrijf werkelijke tijd ****************/
i2c_write (0x00); / / honderdste van seconde
i2c_write (0x00); / / Seconden
i2c_write (RTC [3 ]);// Notulen (in het BCD-formaat)
i2c_write (RTC [2 ]);// Uren (in BCD formaat, 24hour formaat)
i2c_write (RTC [0 ]);// Jaar / Datum (in BCD-formaat)
i2c_write (RTC [1 ]);// Weekdag / maand (in BCD-formaat)
i2c_write (0x00); / / Timer Uitschakelen
/************* Schrijf alarmtijdstip ****************/
i2c_write (0xa0); / / Alarm Flag, Interrupt,
nr. timer alarm Weekdag alarm
i2c_write (0x00); / / Alarm honderdste van seconde
i2c_write (0x00); / / Alarm Seconden
i2c_write (int2bcd (alarm.minute ));// Alarm notulen
i2c_write (int2bcd (alarm.hour ));// Alarm Uren
i2c_write (0x00); / / Alarm Datum
i2c_write ((waarde 0x01 <<(alarm.day-1 )));// Alarm Weekdag
i2c_stop ();
delay_ms (5);
i2c_start ();// start verzending
i2c_write (0x00); / / verzenden apparaatadres
i2c_write (0x00); / / Stuur adres byte
i2c_write (0x04); / / Start RTC tellen
i2c_stop ();
delay_ms (5);
)
int int2bcd (int dec) (
return ((dec/10) <<4) (dec 10%);
)
void rtc_set () (
i2c_start ();
i2c_write (0xA2); / / verzenden apparaatadres
i2c_write (0x00); / / verzenden adres byte
i2c_write (0x80); / / Stop RTC tellen
/************* Schrijf werkelijke tijd ****************/
i2c_write (0x00); / / honderdste van seconde
i2c_write (0x00); / / Seconden
i2c_write (RTC [3 ]);// Notulen (in het BCD-formaat)
i2c_write (RTC [2 ]);// Uren (in BCD formaat, 24hour formaat)
i2c_write (RTC [0 ]);// Jaar / Datum (in BCD-formaat)
i2c_write (RTC [1 ]);// Weekdag / maand (in BCD-formaat)
i2c_write (0x00); / / Timer Uitschakelen
/************* Schrijf alarmtijdstip ****************/
i2c_write (0xa0); / / Alarm Flag, Interrupt,
nr. timer alarm Weekdag alarm
i2c_write (0x00); / / Alarm honderdste van seconde
i2c_write (0x00); / / Alarm Seconden
i2c_write (int2bcd (alarm.minute ));// Alarm notulen
i2c_write (int2bcd (alarm.hour ));// Alarm Uren
i2c_write (0x00); / / Alarm Datum
i2c_write ((waarde 0x01 <<(alarm.day-1 )));// Alarm Weekdag
i2c_stop ();
delay_ms (5);
i2c_start ();// start verzending
i2c_write (0x00); / / verzenden apparaatadres
i2c_write (0x00); / / Stuur adres byte
i2c_write (0x04); / / Start RTC tellen
i2c_stop ();
delay_ms (5);
)