Я что-то пропустил?
Вид для печати
Я что-то пропустил?
Ага!. Часы не тикающие.
И неработающие тесты.
Тесты запустились ("пробой" или окисление конденсатора у пина RST). Процессорный сброс сидел на земле. Ты не глицерин-гидразином платы паяешь?
Часы молчат. Менял кварц, менял PCF. Прозванивал цепи от часов до альтеры. Звонил на "сопли" и обрывы. Пока ничего не накопал. Питание микросхемы в порядке. Под конец уже заменил конденсатор на кварце на 6.8п. Не помогает. Я пока в растерянности...
Да, запись в память часов работает прекрасно. Но они стоят. Питание обнулял полностью (дабы сбросить нулевую ячейку).
В аласме команда волшебная есть eXport, это для тех кому файл из асм->txt
Для коррекции запускаем с метки CORКод:; I2C PCF8583 SetTime version 0.2 Written By MVV Rev.20110221
;Port #8C W/R
; bit7-0 = DATA
;Port #9C W
; bit1-0 = 00:IDLE; 01:START; 10:NSTART; 11:STOP
;Port #9C R
; bit1 = ERROR
; bit0 = BUSY
;BCD FORMAT
SECOND EQU #00 ;7-0=SECOND
MINUTES EQU #22 ;7-0=MINUTES
HOURS EQU %00010110 ;7=FORMAT; 6=FLAG; 5-0=HOURS
YEAR_DATE EQU %01100000 ;7-6=YEAR; 5-0=DAYS
WEEK_MONTH EQU %11100010 ;7-5=WEEKDAYS; 4-0=MONTHS
ORG 30000
DI
;---------------------------------------------------------------
; JP COR ; CORRECTION YEAR
;---------------------------------------------------------------
LD A,%11111101 ;START
OUT (#9C),A
LD A,%10100000 ;SLAVE ADDRESS W
OUT (#8C),A
CALL W1
LD A,%11111100 ;IDLE
OUT (#9C),A
LD A,#02 ;WORD ADDRESS
OUT (#8C),A
CALL W1
LD A,SECOND
OUT (#8C),A
CALL W1
LD A,MINUTES
OUT (#8C),A
CALL W1
LD A,HOURS
OUT (#8C),A
CALL W1
LD A,YEAR_DATE
OUT (#8C),A
CALL W1
LD A,%11111111 ;STOP
OUT (#9C),A
LD A,WEEK_MONTH
OUT (#8C),A
CALL W1
COR LD A,%11111101 ;START
OUT (#9C),A
LD A,%10100000 ;SLAVE ADDRESS W
OUT (#8C),A
CALL W1
LD A,%11111100 ;IDLE
OUT (#9C),A
LD A,#10 ;WORD ADDRESS
OUT (#8C),A
CALL W1
LD A,%11111111 ;STOP
OUT (#9C),A
LD A,#10 ;YEAR CORRECTION
OUT (#8C),A
CALL W1
RET
;WAIT ACKNOWLEDGEMENT
W1 IN A,(#9C)
RRCA
JR C,W1
RRCA
RET
---------- Post added at 22:25 ---------- Previous post was at 22:16 ----------
1) отключи питание платы
2) вынь батарейку
3) разряди кондер батарейки С29
4) подключи шлейф программера и т.д.
5) залей тест, RTC_INT# должно меняться с "0" на "1" с частотой 1Гц.
---------- Post added at 22:34 ---------- Previous post was at 22:25 ----------
Аккуратней с подключением к JP1 (Reset/GPI). И не спеши все распаивать...
Часы устанавливаются с ревизии 20110220
Доработал конфигурацию.
! исправлен скан матрицы клавиатуры
! коррекция дня недели
! правильное отображение года (в ячейке #10 PCF записывается поправка)
Проверить часы можно вольтметром, щуп на вывод 7, после сброса PCF, там частота 1Гц.
Не меняется.
Это чем обосновано?
---------- Post added at 08:58 ---------- Previous post was at 08:26 ----------
Нашел косяк. Непротрав между контактными площадками конденсатора у кварца. Причем не короткое, а имеет сопротивление. Прорезал скальпелем, часы пошли.
А как это объяснить? Если есть вторая PCF, подключи к ней кварц, кондер, питание и вольтметром проверь вывод 7. Если на нем нет изменений, тогда это не PCF8583.
---------- Post added at 08:04 ---------- Previous post was at 08:02 ----------
Так бы раньше, а то уже начали волноваться :)
Как с годом? Есть предложение при считывании в буте банально прибавлять 10 лет. В даташите вроде как значится что PCF работает с 4-х годичным циклом.
Уже так и сделал в ревизии 20110221.
---------- Post added at 08:31 ---------- Previous post was at 08:28 ----------
Обновить нужно этим
---------- Post added at 08:34 ---------- Previous post was at 08:31 ----------
Не совсем так, в ячейке #10 PCF записывается число (для года 2010-2013 это #10)
---------- Post added at 08:38 ---------- Previous post was at 08:34 ----------
Как быть если значения в виртуальном RTC изменились? Проверять CRC? и если не совпадает перезаписывать ячейки #11... PCF, ячейками #0E.. MC146818A?
Влад, я тут уже моск сломал пытаясь решить вопрос с конфликтом пина 11. Ты давал ссылку на иносранный форум с решением, я так понимаю что ответ здесь:
"one good solution is set PIN11 "I/O Maximum Toggle Rate" to "0" by Assignment Editor."
Но я не могу найти эту опцию пина. Уже всё перерыл, так и не нашел.