Я боролся с RTC на дедушке этого чипа (LPC2148) около 5 лет назад.Если вы посмотрите на группу Yahoo LPC2000 (она также охватывает микросхемы LPC1000), вы увидите RTC, и его проблемы часто возникают.
Во всяком случае, я иду из памятиздесь, но я думаю, что я пришел к выводу, что чтение регистра статуса не было достаточно надежным.Возможно, проблема заключалась в том, что при отключении питания, если резервная батарея отсутствовала, все зависало ...
Итак, я помню, что во время загрузки я делал следующее:
(1) Включить периферийное устройство RTC
(2) Считать ВСЕ регистры RTC.В прошивке, иметь «вне границ» минимальные и максимальные значения для каждого поля (например, год должен быть не менее 2005 и не более 2030)
(3) Если какое-либо значение выходит за пределы диапазона, дата сброса& время до некоторого жестко заданного значения (например, 1 января 2005 г.) (продукт позволит пользователю настроить время / дату после загрузки)
(4) сделать снимок регистров;подождите по крайней мере одну секунду (используйте периферийное устройство таймера для измерения времени), затем убедитесь, что значение изменилось.Я мог зайти так далеко во время загрузки, чтобы установить значения так, чтобы 1-секундный тик вызывал / должен был переворачивать все (вероятно, за 1 секунду до полуночи, 31 декабря), гарантировал, что все меняется, и затем записывал обратноИсходное значение + 1 секунда.(Вы хотели бы сделать это правильно при изменении значения, чтобы избежать скольжения секунд)
Я постараюсь выкопать код и посмотреть, было ли что-то еще.Я просто вспоминаю, наконец, заключив, что мне пришлось запустить эту чертову штуку и посмотреть, как она работает, прежде чем пройти POST для этого периферийного устройства.
(я как-то упомянул об этом попутно, но просто повторить ... еслиВаши значения кажутся испорченными при включении, убедитесь, что схема резервного питания от батареи надежна - даже достаточно простой схемы с парой диодов. Может быть, часы работают, когда продукт работает, а когда - питаниеудаляется, его мозг ломается.)