Добрый день!
Народ, кто работал с часами реального времени оснащенными будильником, подскажите, почему при возникновении прерывания, часы продолжают держать линию в 0. Использую DS1339, через подтягивающий резистор вывод будильника соединен с входом INT1 МК Atmega8. Из-за этого, контроллер постоянно шпарит прерывания (прерывание вызывается по уровню 0 на INT1). В регистр 0x0F этих часов я после возникновения прерывания записываю байт 0х00, то есть обнуляю флаг возникновения прерывания в часах, однако линия все равно находится в нуле. В чем может быть дело?
Заранее благодарен.
Прерывание от часов реального времени.
- Реклама
Re: Прерывание от часов реального времени.
Так работает RTC и это изменить нельзя. В МК следует настраивать прерывание не по уровню 0, а по падению уровня. Тогда оно вывовется один раз. После обработки прерывания МК, в RTC следует послать команду сброса флага прерывания для подъема уровня сигнала на выводе прерывания.
Re: Прерывание от часов реального времени.
Дело в том, что я использую спящий режим Power-down, а МК из него НЕ выводится по перепаду, только по уровню.
Re: Прерывание от часов реального времени.
Я уже не помню как это в AVR, но если так, то это типичная глупость от Атмела. Тогда в обработчике прерывания от RTC при первом входе запрещайте прерывания от него. Потом после посылки кода в RTC о сбросе флага прерывания (и когда урвень напряжения на выводе прерывания повысится), очищайте флаг прерывания в МК и разрешайте прерывания от RTC.

