Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 02.09.2008, 12:02   #1
Watcher
Guest
 
Сообщений: n/a
По умолчанию Процедура чтения DS3235.

Здравствуйте.
Столкнулся с такой проблемой:
запускаю часы (генератор включен, термокомпенсация включена) и читаю с них данные каждые 0.1 сек. При этом часы за сутки отстали более чем на 20 мин!
Затем я чтение синхронизировал с тактовым сигналом 1Гц с выхода DS3235, т.е. модулем захвата переднего фронта жду импульса и в прерывании читаю данные, результат — за сутки отставание 45 сек.
Следующее что я сделал — после получения переднего фронта (прерывание) ставлю небольшую задержку, после чего читаю данные. Часы отставать перестали.
Подскажите пожалуйста, что делаю не так?

PS Подпрограммы I2c неоднократно проверялись, разводка платы в норме.
  Ответить с цитированием
Старый 02.09.2008, 12:11   #2
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Да, и ещё, чтобы убедиться, что проблема не в часах я настраивал их по эталонным, затем выключал основное питание (часы начинают питаться от батарейки и естественно никаких операций по шине i2c не идёт), в таком состоянии оставлял их более 2х суток, затем включал питание считывал и сравнивал результат - никаких расхождений небыло. Т.е. отставание происходит именно при чтении часов.
  Ответить с цитированием
Старый 02.09.2008, 12:28   #3
Picozoid
Senior Member
 
Регистрация: 25.02.2007
Адрес: Н.Новгород
Сообщений: 386
Вес репутации: 302/51
Picozoid is a jewel in the roughPicozoid is a jewel in the roughPicozoid is a jewel in the roughPicozoid is a jewel in the rough
По умолчанию Ответ: Процедура чтения DS3235.

Делал так: при включении девайса происходит чтение времени из ДСки, далее по SQW тикают программные часы в контроллере. Т.е. у нас происходит всего _одна_ операция чтения. Часы при этом не убегали.
PS Читать время каждые 0.1сек - это перебор
PPS Действительно чем чаще читаешь ДСки, тем сильнее сбивается время. Как их сертифицировали непонятно.
Picozoid вне форума   Ответить с цитированием
Старый 02.09.2008, 12:44   #4
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Picozoid Посмотреть сообщение
Делал так: при включении девайса происходит чтение времени из ДСки, далее по SQW тикают программные часы в контроллере.
Попробую так сделать (правда ещё календарь писать придётся ), ещё вот PCF часики поробую потестировать, может лучше ДСки будет, ДСка понравилась отсутствием внешнего кварца.
  Ответить с цитированием
Старый 02.09.2008, 12:58   #5
Picozoid
Senior Member
 
Регистрация: 25.02.2007
Адрес: Н.Новгород
Сообщений: 386
Вес репутации: 302/51
Picozoid is a jewel in the roughPicozoid is a jewel in the roughPicozoid is a jewel in the roughPicozoid is a jewel in the rough
По умолчанию Ответ: Процедура чтения DS3235.

ИМХО календарь всё же лучше не вести программно, а читать при переходе на следующие сутки из микросхемы - так у вас не будет проблем с определением 30\31-го дня при переходе через границу месяца.
Picozoid вне форума   Ответить с цитированием
Старый 03.09.2008, 11:36   #6
RexeR
Member
 
Регистрация: 02.03.2007
Возраст: 45
Сообщений: 46
Вес репутации: 106/46
RexeR will become famous soon enoughRexeR will become famous soon enough
Отправить сообщение для RexeR с помощью ICQ
По умолчанию Ответ: Процедура чтения DS3235.

Около семи лет мы используем DS1603 в своих изделиях , год назад перешли на DS3231 . Опрос регистров микросхемы происходит каждые 64 мс. За всё это время проблем с отставанием часов не наблюдалось .
Можно ли взглянуть на Ваш код ?
RexeR вне форума   Ответить с цитированием
Старый 03.09.2008, 11:46   #7
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от RexeR Посмотреть сообщение
Около семи лет мы используем DS1603 в своих изделиях , год назад перешли на DS3231 . Опрос регистров микросхемы происходит каждые 64 мс. За всё это время проблем с отставанием часов не наблюдалось .
Можно ли взглянуть на исходники ?
Ну может по позже и выложу, просто времени нет выдирать из проекта.
А так в общих чертах:
1) используется аппаратный i2c (PIC18F452) на 100 кГц, эти процедуры работали на ds1307, памяти, разных узкоспециальных датчиках - сбоев не наблюдалось.
2) Сейчас чтение делается так: настраиваю CCP в режим захвата переднего фронта, по факту захвата разрешено прерывание. После возникновения указанного прерывания читаю ДС по стандартным i2c процедурам. CCP тактируется от сигнала с ДСки (SQW) 1Гц. Вот в таком режиме отставание за сутки до 20..30 сек.
Однако, если ввести задержку перед чтением, отставать перестают.
Может попробовать ДС-ки из другой партии?
  Ответить с цитированием
Старый 03.09.2008, 11:47   #8
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

А кто-нибудь использовал часы от Филипс PCF...? Какие результаты.
  Ответить с цитированием
Старый 03.09.2008, 12:20   #9
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/104
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Watcher Посмотреть сообщение
Ну может по позже и выложу, просто времени нет выдирать из проекта.
А так в общих чертах:
1) используется аппаратный i2c (PIC18F452) на 100 кГц, эти процедуры работали на ds1307, памяти, разных узкоспециальных датчиках - сбоев не наблюдалось.
2) Сейчас чтение делается так: настраиваю CCP в режим захвата переднего фронта, по факту захвата разрешено прерывание. После возникновения указанного прерывания читаю ДС по стандартным i2c процедурам. CCP тактируется от сигнала с ДСки (SQW) 1Гц. Вот в таком режиме отставание за сутки до 20..30 сек.
Однако, если ввести задержку перед чтением, отставать перестают.
Может попробовать ДС-ки из другой партии?
1. DS3235 не нашел, что такое, но подозреваю не особенно что-то отличающиеся от скажем DS1307.
2. Скорее всего(еще учитывая 1-й пункт) - у Вас в коде постоянно опрашивается/и "насильно"устанавливается флаг общей остановки часов и от этого отставание. Это конечно предположение и поэтому нужно посмотреть код.
AleksBak вне форума   Ответить с цитированием
Старый 03.09.2008, 12:27   #10
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от AleksBak Посмотреть сообщение
1. DS3235 не нашел, что такое, но подозреваю не особенно что-то отличающиеся от скажем DS1307.
2. Скорее всего(еще учитывая 1-й пункт) - у Вас в коде постоянно опрашивается/и "насильно"устанавливается флаг общей остановки часов и от этого отставание. Это конечно предположение и поэтому нужно посмотреть код.
Вы имеете ввиду флаг включения/выключения осциллятора? Опрос этого флага делаю только на момент включения устройства.
Код выложу чуть позже.
  Ответить с цитированием
Старый 03.09.2008, 12:53   #11
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/104
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Watcher Посмотреть сообщение
Вы имеете ввиду флаг включения/выключения осциллятора? Опрос этого флага делаю только на момент включения устройства.
...
да он самый
Цитата:
Код выложу чуть позже
AleksBak вне форума   Ответить с цитированием
Старый 03.09.2008, 16:31   #12
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3564/97
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от AleksBak Посмотреть сообщение
1. DS3235 не нашел, что такое, но подозреваю не особенно что-то отличающиеся от скажем DS1307.
2. Скорее всего(еще учитывая 1-й пункт) - у Вас в коде постоянно опрашивается/и "насильно"устанавливается флаг общей остановки часов и от этого отставание. Это конечно предположение и поэтому нужно посмотреть код.
Они вот тут:
http://para.maxim-ic.com/en/search.m...>C&tree=timers
Кстати я тоже думаю, что дело в некорректном
обращении к ним.
Больно явная лажа.
К DS1307 у меня претензий нет.
Хотя и слегка устаревшая микросхема.
Petr вне форума   Ответить с цитированием
Старый 03.09.2008, 17:04   #13
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Petr Посмотреть сообщение
Они вот тут:
http://para.maxim-ic.com/en/search.m...>C&tree=timers
Кстати я тоже думаю, что дело в некорректном
обращении к ним.
Больно явная лажа.
К DS1307 у меня претензий нет.
Хотя и слегка устаревшая микросхема.
С DS1307 работал-проблем небыло, а вот с этой начались, уж и незнаю как ещё с ней обращаться
  Ответить с цитированием
Старый 03.09.2008, 17:15   #14
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Вот подпрограмма чтения данных с часов, надёргал из проекта всё что касается часов:
ЭТО ПРОСТО КУСКИ ПРОГРАММЫ
Код:
;************************************************************************************
;Тип процессора и подключаемые файлы.
	PROCESSOR	18F452
	INCLUDE		<p18f452.inc>
	#INCLUDE	"Fp32_18.inc"
	INCLUDE		"i2c.inc"
;************************************************************************************
;
;************************************************************************************
;Задание конфигурации.
	__CONFIG	_CONFIG1H,	_OSCS_OFF_1H	&	_XT_OSC_1H
	__CONFIG	_CONFIG2L,	_BOR_ON_2L		&	_BORV_20_2L & _PWRT_ON_2L
	__CONFIG	_CONFIG2H,	_WDT_OFF_2H		&	_WDTPS_128_2H
	__CONFIG	_CONFIG4L,	_STVR_ON_4L		&	_LVP_OFF_4L & _DEBUG_OFF_4L
;************************************************************************************
;
;************************************************************************************
;Определение РОН
	CBLOCK 0x00
	W_TEMP			;Регистры сохранения контекста.
	STATUS_TEMP		;
	BSR_TEMP		;
	ENDC
;
;************************************************************************************
;МАКРОСЫ RTC.
;Команда start адрес устройства и операция запись.
RTC_ADDR_W MACRO
	CALL		i2c_start		;Условие start.
	MOVLW		H'D0'			;Адрес устройства (1101000) и операцию записи (0).
	MOVWF		i2c_data
	CALL		i2c_write
	ENDM
;Команда start адрес устройства и операция чтения.
RTC_ADDR_R MACRO
	CALL		i2c_restart		;Условие restart.
	MOVLW		H'D1'			;Адрес устройства (1101000) и операцию чтения (1).
	MOVWF		i2c_data
	CALL		i2c_write
	ENDM
;************************************************************************************
START:
;ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ МИКРОКОНТРОЛЛЕРА.
	; настроим порт PORTC для работы с MSSP
	movlw	b'11111101'	; RC - на ввод
	movwf	TRISC		; запишем из регистра W в TRISC
	movlw	b'11111100'	; 
	movwf	TRISD		; запишем из регистра W в TRISD
	movlw	b'00001111'	; 
	movwf	TRISB		;ALL PIN'S PORTB - INPUT.
	CLRF	LATB	
	CLRF	LATD
	CLRF	LATC
	CLRF	COUNT
	CLRF	COUNT1
	CLRF	COUNT2
	CLRF	FLAG
	CLRF	FLAG1
	CLRF	FLAG2
	CLRF	FLAG3
	CLRF	FLAG4
;Инициализация периферийных модулей.
;Инициализация модуля UART
	MOVLW	.12
	MOVWF	SPBRG			;Настройка генератора скорости обмена.
	MOVLW	B'00100100'
	MOVWF	TXSTA			;Конфигурация передатчика.
	MOVLW	B'10000000'
	MOVWF	RCSTA			;Конфигурация приёмника.
;
;Конфигурирование модуля CCP1.
;Захват каждого переднего фронта.
	MOVLW	B'00000101'
	MOVWF	CCP1CON
;
;Предварительная инициализация модуля ШИМ на CCP2 и TMR2.
;Модуль CCP2 выключен.
; * PWM registers configuration.
; * Fosc = 4000000 Hz.
; * Fpwm = 3521.13 Hz (Requested : 3500 Hz).
; * Resolution is 10 bits.
; * Prescaler is 4.
	MOVLW	B'01000110'
	MOVWF	PR2
	MOVLW	B'00000101'
	MOVWF	T2CON
;
;Инициализация шины I2C.
	CALL	i2c_init
;Вывод контроллера LCD из сброса.
	BSF		Port_reset,TIC
;************************************************************************************
;
;
;************************************************************************************
;ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ RTC DS3231.
	RTC_ADDR_W
	WriteDATA	0x0E		;Адрес данных регистра CONTROL (0x0E).
	WriteDATA	B'01100000'	;Данные для записи регистра CONTROL.
	WriteDATA	B'00001000'	;Данные для записи регистра STATUS (0x0F).
	CALL		i2c_stop	;Условие stop.
;************************************************************************************
;************************************************************************************
Time_read:
;
;Задержка 30 мс.
	MOVLW		.245
	MOVWF		COUNT
	MOVLW		.39
	MOVWF       COUNT1
	CALL		Delay
;
	RTC_ADDR_W
	WriteDATA	0x00		;Адрес данных регистра SECONDS (0x00).
	RTC_ADDR_R
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.
	MOVFF	i2c_data,Sec	;Чтение секунд.
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,Min	;Чтение минут.
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,Hour	;Чтение часов.
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,Day	;Чтение дня недели.
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,N_Month;Чтение даты.
;
	CALL	i2c_sent_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,Month	;Чтение месяца.
;
	CALL	i2c_sent_no_ask
	CALL	i2c_read		;Чтение байта.	
	MOVFF	i2c_data,Year	;Чтение года.
;
	CALL	i2c_stop		;Условие stop.
	RETURN
;************************************************************************************
;
  Ответить с цитированием
Старый 03.09.2008, 17:16   #15
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

;ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ RTC DS3231 - делаю один раз при включении.
  Ответить с цитированием
Старый 03.09.2008, 17:19   #16
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

С Задержкой 30 мс часы отставать перестают, подпрогрмма чтения вызывается в прерывании от модуля CCP (захват переднего фронта) - 1 раз в секунду.
  Ответить с цитированием
Старый 03.09.2008, 17:24   #17
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Вот ещё программы для работы с аппаратным iic:
Код:
;
;Объявления для функций работы с шиной i2c.
;
;Данные для работы с i2c.
	EXTERN	i2c_data		;Считываемые/записываемые данные.
	EXTERN	i2c_address		;Адрес.
;Функции для работы с i2c.
	EXTERN	i2c_start		;Формирование условия START.
	EXTERN	i2c_restart		;Формирование условия RESTART.
	EXTERN	i2c_stop		;Формирование условия STOP.
	EXTERN	i2c_init		;Инициализация i2c.
	EXTERN	i2c_write		;Запись байта на шину i2c.
	EXTERN	i2c_read		;Чтение байта с шины i2c.
	EXTERN	i2c_sent_no_ask	;Формирование бита NO ASK.
	EXTERN	i2c_sent_ask	;Формирование бита ASK.
;
i2crd		EQU		1		;Чтение.
i2cwr		EQU		0		;Запись.


Код:
INCLUDE		<p18f452.inc>
;
;Определение данных для работы с i2c.
	UDATA
i2c_data	RES	1			;Код символа.
	GLOBAL	i2c_data
i2c_address	RES	1			;Код символа.
	GLOBAL	i2c_address
	CODE
;
;Определение функций для работы с i2c.
;
;*****************************************************************
;Формирование условия Start.
i2c_start:
	GLOBAL	i2c_start
  	BCF		PIR1,SSPIF		;Очистим флаг прерывния SSP.
	BSF		SSPCON2, SEN	;Инициируем START.
wait_start:
	BTFSS	PIR1, SSPIF		;Ожидаем завершения выполнения START.
	GOTO	wait_start
	RETURN
;*****************************************************************
;
;*****************************************************************
;Формирование условия повторный Start.
i2c_restart:
	GLOBAL	i2c_restart
  	BCF		PIR1,SSPIF		;Очистим флаг прерывния SSP.
 	BSF		SSPCON2, RSEN	;Инициируем START.
wait_restart:
	BTFSS	PIR1, SSPIF		;Ожидаем завершения выполнения START.
	GOTO	wait_restart
	RETURN
;*****************************************************************
;
;*****************************************************************
;Формирование условия Stop.
i2c_stop:
	GLOBAL	i2c_stop
 	BCF		PIR1, SSPIF		;Сбросим бит прерывния.
 	BSF		SSPCON2, PEN	;Инициируем STOP.
wait_stop:
	BTFSS	PIR1, SSPIF		;Ожидаем завершения выполнения STOP.
	GOTO	wait_stop
	RETURN
;*****************************************************************
;
;*****************************************************************
;Инициализация работы модуля MSSP.
i2c_init:
	GLOBAL	i2c_init
;Подключим выводы PORTC к модулю MSSP.
 	BSF		TRISC, 3		;SCL bit = 3.
 	BSF		TRISC, 4		;SDA bit = 4.
	BCF		SSPSTAT, CKE	;Соответствие спецификации I2C.
	MOVLW	D'9'			;Установить частоту 100 kHz при тактовой частоте 4МГц.
	MOVWF	SSPADD              
	MOVLW	b'00101000'		;Разрешить SSP, режим I2C Master.
	MOVWF	SSPCON1             
	CLRF	SSPCON2			;Очистить биты управления.
 	BCF		PIR1,SSPIF		;Очистить флаг прерыания SSP.
	BCF		PIR2,BCLIF		;Очистить флаг коллизий.
	RETURN
;*****************************************************************
;
;*****************************************************************
;Передача байта на шину i2c.
;i2c_data - передаваемый байт.
i2c_write:
	GLOBAL	i2c_write
	BCF		PIR1,SSPIF			;Очистим флаг SSP.
 	MOVFF	i2c_data, SSPBUF	;Начинаем передачу данных.
tx_wait:
	BTFSS	PIR1,SSPIF			;Ожидаем завершения выпонения команды.
	BRA		tx_wait             ; 
	BTFSC	SSPCON2,ACKSTAT		;Проверим прием бита ACK.
ackfailed:
	BRA		ackfailed			;Если ACK не принят.
	RETURN
;*****************************************************************
;
;*****************************************************************
;Прием байта с шины i2c.
;i2c_data - принимаемый байт.
i2c_read:
	GLOBAL	i2c_read
	BCF		PIR1,SSPIF			;Очистим флаг прерывания SSP.
 	BSF		SSPCON2,RCEN		;Инициировать прием байта.
rx_wait:
	BTFSS	PIR1,SSPIF			;Ожидаем завершения операции.
	BRA		rx_wait				; 
	MOVFF	SSPBUF, i2c_data	;Копируем байт.
	BCF		PIR1,SSPIF			;Очистим флаг прерывания SSP.
	BSF		SSPCON2,ACKEN		;Генерируем бит ACK/NO ACK.
rx_wait2:
	BTFSS	PIR1,SSPIF			;Ожидаем завершения операции.
	BRA		rx_wait2			; 
	RETURN
;*****************************************************************
;
;*****************************************************************
;Запись байта в i2c устройство по заданному адресу.
;i2c_data - записываемый байт.
i2c_write_byte:
	GLOBAL	i2c_write_byte
	RCALL	i2c_start
;Посыл управляющего байта.
	RCALL	i2c_write
	RETURN
;*****************************************************************
;
;*****************************************************************
;Посыл NO ASC.
i2c_sent_no_ask:
	GLOBAL	i2c_sent_no_ask
	BSF		SSPCON2,ACKDT		;Установить для выдачи бита NO ASK.
	RETURN
;*****************************************************************
;
;*****************************************************************
;Посыл ASC.
i2c_sent_ask:
	GLOBAL	i2c_sent_ask
	BCF		SSPCON2,ACKDT		;Установить для выдачи бита ASC.
	RETURN
;*****************************************************************
;
	END
  Ответить с цитированием
Старый 03.09.2008, 23:10   #18
pfgx
Senior Member
 
Регистрация: 14.11.2007
Сообщений: 1,104
Вес репутации: 822/62
pfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to behold
По умолчанию Ответ: Процедура чтения DS3235.

Тут обсуждали нечто подобное. В конце на второй странице описаны мои издевательства над DS1307 и результат.
pfgx вне форума   Ответить с цитированием
Старый 03.09.2008, 23:24   #19
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от pfgx Посмотреть сообщение
Тут обсуждали нечто подобное. В конце на второй странице описаны мои издевательства над DS1307 и результат.
Вот думаю, может такой изврат сделать:
Секунды, минуты, часы читать раз в секунду, а день, месяц, год - раз в сутки...
Правда, у себя косяк нашёл, CCP когда тестил настроил на захват по ЗАДНЕМУ фронту. А так как выход у часов c открытым истоком, то, получается, считываю регистры в момент инкремента внутренних счётчиков часов.
Косяк сейчас устранил - посмотрим что будет.
Если не получится DS3231 попробую.
С ds1307 вообще проблем не было, помню на макетке на проводах для пробы присобачил и всё работало.
А тут вроде всё по науке (разводка в смысле) и затык.
  Ответить с цитированием
Старый 03.09.2008, 23:26   #20
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Люди, а кто всё-таки победил ds3231 (ds3235) хотябы словами опишите как с них данные читаете.
  Ответить с цитированием
Старый 04.09.2008, 09:55   #21
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/104
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Watcher Посмотреть сообщение
Люди, а кто всё-таки победил ds3231 (ds3235) хотябы словами опишите как с них данные читаете.
Считывать данные каждые 0.1 сек это мягко говоря чересчур. Вчера не заметил, а сейчас смотрю - зачем? Все равно там только каждую секунду меняются данные! Попробуй так - вывод SQW/INT заведи на вход с прерыванием(INTx, RBxx и пр.). Все равно у тебя модуль CCP использует монопольно ногу контроллера и тут теперь будет также, но другая ножка. Настраиваешь DS-ку и с выходом SQW/INT частотой в 1Гц и в прерваниях считываешь данные и обновляешь на табло. Модуль ССР здесь не нужен! Считывать данные согласно даташиту. К сожалению у тебя программа на ассме, а я его перестаю переваривать - хоть он и очень простой(слишком простой). Главное - ничего не записывай на время в DS-ку, для проверки, а только считывай и посмотри, что получится. (покамест все равно др. идей нет)
AleksBak вне форума   Ответить с цитированием
Старый 04.09.2008, 10:39   #22
Tehnoon
Senior Member
 
Регистрация: 25.02.2007
Адрес: Украина, Хмельницкий.
Сообщений: 243
Вес репутации: 201/49
Tehnoon has a spectacular aura aboutTehnoon has a spectacular aura aboutTehnoon has a spectacular aura about
Отправить сообщение для Tehnoon с помощью ICQ
По умолчанию Ответ: Процедура чтения DS3235.

Была аналогичная проблема с DS3231. После перехода на софтовый I2C, исчезла. Вычитываем раз в секунду.
З.С. Чрезвычайно точные часики.
Tehnoon вне форума   Ответить с цитированием
Старый 04.09.2008, 12:59   #23
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Большое спасибо за ответы, в общем буду побывать.
  Ответить с цитированием
Старый 05.09.2008, 09:25   #24
Watcher
Guest
 
Сообщений: n/a
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Watcher Посмотреть сообщение
Правда, у себя косяк нашёл, CCP когда тестил настроил на захват по ЗАДНЕМУ фронту. А так как выход у часов c открытым истоком, то, получается, считываю регистры в момент инкремента внутренних счётчиков часов.
Косяк сейчас устранил - посмотрим что будет.
Результат эксперимента - часы отстают на 2 сек.
Сейчас переделал как советовал AleksBak, включил - посмотрим что будет через сутки.
  Ответить с цитированием
Старый 05.09.2008, 12:40   #25
RexeR
Member
 
Регистрация: 02.03.2007
Возраст: 45
Сообщений: 46
Вес репутации: 106/46
RexeR will become famous soon enoughRexeR will become famous soon enough
Отправить сообщение для RexeR с помощью ICQ
По умолчанию Ответ: Процедура чтения DS3235.

Цитата:
Сообщение от Tehnoon Посмотреть сообщение
Была аналогичная проблема с DS3231. После перехода на софтовый I2C, исчезла. Вычитываем раз в секунду.
З.С. Чрезвычайно точные часики.
В своих изделиях для DS3231 использую аппаратный I2C , и как писАл ранее - проблем не обнаруживалось . Кроме того MSSP модуль котроллера в некоторых моих приложениях работает в двух режимах - SPI и I2C , без всяких дополнительных ключей для сигнала данных . И в таких изделиях микросхемы RTC работают без проблем .
RexeR вне форума   Ответить с цитированием
Ответ

Метки
ds3235, часы


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти бит защиты от чтения на PIC16F628A vanish Продукция MICROCHIP 3 22.06.2008 19:36
Программа для чтения только области DATA EEPROM 16F84A Korus Продукция MICROCHIP 3 01.09.2007 11:18
Для чтения... Krot Продукция MICROCHIP 0 16.04.2007 09:29


Часовой пояс GMT +3, время: 07:28.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot