Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCF8583 не срабатывает будильник
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
ruslan55x55
Пытаюсь сделать будильник для микроконтроллера на основе часов реального времени PCF8583, программирую на PIC. Собрал тестовую плату с PIC-ом и дисплеем LCD Nokia3310, написал код, где считываю часы, минуты, секунды и вывожу на дисплей каждые 250мс, все нормально работает, часы идут.

Теперь захотел протестировать будильник, дописал код, чтобы будильник срабатывал через каждые 2 минуты. В момент включения время у часов сбрасывается на 00:00:00 и начинается собственно ход, я считываю минуты прибавляю к ним 2, и обратно записываю в регистры будильника, то есть будильник должен сработать в 00:02:00. При срабатывании должен загораться светодиод, и опять все повторяется, теперь будильник должен сработать при 00:04:00 и т.д. Но будильник почему то не срабатывает. Подскажите в чем дело....

Итак вот что я делаю после подачи питания:
1. записываю '00000100' в регистр управления/состояния по адресу 0x00, тем самым включаю бит разрешения сигнала.
2. Записываю '10010000' в регистр управления сигналом по адресу 0x08, тем самым разрешаю прерывание по сигналу, а также устанавливаю ежедневный сигнал.
3. Записываю нули в регистры будильника по адресам 0х0А, 0х0В, 0х0С, которые соответствуют секундам, минутам, часам.
4. Считываю текущее значение минут по адресу 0x03, прибавляю к этому значению число 2.
5. Получившиеся число записываю в регистр будильника(минуты) по адресу 0х0В.
6. Жду пока сработает будильник, (он должен сработать в 00:02:00), параллельно этому считываю время - часы, минуты, секунды, а также на всякий случай считываю содержимое регистра управления/состояния, регистра сигналов, и 3 регистра будильника (часы, минуты, секунды), и вывожу все это на дисплей.

И так наблюдаю, все записалось правильно, во всех регистрах то что мне нужно, жду жду и вот наступает время 00:02:00, но ничего не происходит, светодиод не включается, в регистре управления/состояния флаги не поднимаются, в общем будильник не срабатывает....
ruslan55x55
Я разобрался, надо было еще обнулять регистр будильника отвечающий за миллисекунды по адресу 0x09, а я обнулял только секунды, минуты, часы. Скорее всего в этом регистре лежал какой то мусор, который никогда не совпадал с реальными значениями миллисекунд регистра часов, поэтому и не срабатывал будильник.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.