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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 25.11.2017, 16:47   #1
Theyler
Member
 
Регистрация: 07.05.2017
Сообщений: 42
Вес репутации: 172/11
Theyler has a spectacular aura aboutTheyler has a spectacular aura about
По умолчанию Cложение времени и формах хранения в EEPROM

Устройство нарабатывает моточасы.
При включении индицируется общий счётчик наработки: DDDDD:HH:MM:SS
Дней там аж на два байта - 65536. Больше не нужно (столько не живут). (=
С часами-минутами-секундами тут понятно: макс. - 23:59:59 при переполнении добавляется 1 день.

Когда включается нагрузка, идёт время работы в этом включении.
Затем нагрузка отключается.
На дисплее время останавливается и должно суммироваться с накопительным счётчиком моточасов, а затем происходит запись этих данных в EEPROM.
Потом по некоторым событиям опять включается нагрузка, идёт время, потом по выключении опять добавляется к общему счётчику и пишется в EEPROM. И т.д.

Вопрос: какой формат лучше реализовать для записи и чтения в/из EEPROM?
Что удобнее и правильнее -
Просто взять пять байт подряд типа DH DL HH MM SS и писать туда значения типа 01 47 15 25 07, что соответствует 147дней 15ч 25мин 7сек наработки,
или лучше записывать, как многоразрядное общее число количества секунд, каждый раз преобразовывая (делением на 24, затем остаток на 60, ещё раз на 60, а остаток - секунды) его в ДДДД ЧЧ ММ СС при необходимости?


Камень PIC16F628A.
Theyler вне форума   Ответить с цитированием
Старый 25.11.2017, 16:57   #2
Vovka
Senior Member
 
Аватар для Vovka
 
Регистрация: 27.12.2007
Адрес: недалеко от г.Белгорода
Возраст: 52
Сообщений: 1,914
Вес репутации: 3232/95
Vovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond repute
Отправить сообщение для Vovka с помощью ICQ
По умолчанию Re: Cложение времени и формах хранения в EEPROM

Туда-сюда преобразовывать... для кого?
Лично я бы писал в формате DDDDD:HH:MM:SS и не заморачивался!
__________________
Настройся на хороший день и он таким будет!
Vovka вне форума   Ответить с цитированием
Старый 25.11.2017, 17:02   #3
Theyler
Member
 
Регистрация: 07.05.2017
Сообщений: 42
Вес репутации: 172/11
Theyler has a spectacular aura aboutTheyler has a spectacular aura about
По умолчанию Re: Cложение времени и формах хранения в EEPROM

Преобразовывать для простоты суммирования.
В EEPROM они пишутся в HEX, а выводятся в DEC, да ещё и в формате часов. То есть, по 59 на разряд секунд и минут, и по 23 на час.
Это требует постоянного обратного преобразования в HEX, причём не по переносу STATUS, а проверять на больше или равно 60 или 24.
Каша, не охота возиться.
наверняка есть изящнее метод.
Theyler вне форума   Ответить с цитированием
Старый 25.11.2017, 17:34   #4
Vovka
Senior Member
 
Аватар для Vovka
 
Регистрация: 27.12.2007
Адрес: недалеко от г.Белгорода
Возраст: 52
Сообщений: 1,914
Вес репутации: 3232/95
Vovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond repute
Отправить сообщение для Vovka с помощью ICQ
По умолчанию Re: Cложение времени и формах хранения в EEPROM

Цитата:
Сообщение от Theyler Посмотреть сообщение
В EEPROM они пишутся в HEX, а выводятся в DEC, да ещё и в формате часов.
а хранить в формате часов что мешает?
__________________
Настройся на хороший день и он таким будет!
Vovka вне форума   Ответить с цитированием
Старый 25.11.2017, 19:10   #5
Theyler
Member
 
Регистрация: 07.05.2017
Сообщений: 42
Вес репутации: 172/11
Theyler has a spectacular aura aboutTheyler has a spectacular aura about
По умолчанию Re: Cложение времени и формах хранения в EEPROM

Да вот каша в коде получается.

Для записи наработанных за крайнее включение дней:часов:минут:секунд, нужно:
1. Взять значение каждого прочитанного при включении устройства временного параметра из EEPROM и поместить его в некую переменную:
Код:
	movfw	EE_1_S
	movwf	Acc_S
	movfw	EE_1_M
	movwf	Acc_M
	movfw	EE_1_H
	movwf	Acc_H
	movfw	EE_1_D_Lo
	movwf	Acc_DL
	movfw	EE_1_D_Hi
	movwf	Acc_DH
Тут понятно.

2. Просуммировать текущие временные значения наработанного за крайний период, причём, крайнее допустимое значение байта не 255, а 59 (для минут и секунд) или 23 (для часов). Поэтому флаги переноса Z и C тут не помогут. Всё делать вручную, типа:
Код:
	movfw	Sec
	addwf	Acc_S
	movlw	.60
	subwf	Acc_S,w
	bnz	_Min
	incf	Acc_M,f
_Min
Примерно так. И для каждого параметра..

В итоге, каши становится всё больше, код раздувается..

А хотелось бы взять текущее значение дней:часов:минут:секунд и махом перевести в общее значение секунд и тупо добавить к тому, что в EEPROM.
Без деления на составляющие, без вычисления каждый раз переполнения 60-ти секунд и т.д.
Получилось бы, скажем, такое число: 12345678 секунд, что соответствует:
12345678 / 86400 (сек. в 1 сутках) = 142 целых суток
остаток 76878 делим на 3600 (сек. в 1 часе) = 21 час
остаток 1278 делим на 60 (сек. в 1 минуте) = 21 минута
остаток = 18 секунд.

Таким образом, всего три деления:
На 86400
На 3600
На 60

И можно выводить на экран.

А суммирование общего количества наработанных секунд - это одна простая процедура сложения трёхбайтового числа.

Наверное, сумбурно, но суть, надеюсь, понятна.
Theyler вне форума   Ответить с цитированием
Старый 25.11.2017, 19:30   #6
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 835
Вес репутации: 1630/60
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: Cложение времени и формах хранения в EEPROM

Цитата:
Сообщение от Theyler Посмотреть сообщение
Таким образом, всего три деления:
и сколько это займет в попугаях (командах) ?
Цитата:
Поэтому флаги переноса Z и C тут не помогут
это почему?
DmitrijVDN вне форума   Ответить с цитированием
Старый 25.11.2017, 19:36   #7
siargy
Senior Member
 
Аватар для siargy
 
Регистрация: 03.07.2007
Адрес: Минск
Возраст: 40
Сообщений: 900
Вес репутации: 1351/68
siargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud of
По умолчанию Re: Cложение времени и формах хранения в EEPROM

я бы щитал 2 значения паралельно- общий и текущий. это гораздо проще преобразований на этом мк, и никакой кашы.

но меня бы больше беспокоило как не потерять время наработки и не исчерпать ресурс ячеек перезаписью.
да еще - в спидометре дублируется значение пробега с контрольной суммой.
__________________
Построил тепличку, посеял литопсы, вырастил кактусы
siargy вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время записи в EEPROM PIC12F683 kaligraf Вопросы начинающих 2 12.04.2016 02:00
Вопрос по прерываниям RB7-RB4 KSB31 Продукция MICROCHIP 4 15.08.2010 23:53
EEPROM 93LC46 nayabuka Продукция MICROCHIP 16 20.07.2009 08:29
PIC18F452 не пишет в EEPROM tzirulnicov Продукция MICROCHIP 2 03.01.2008 16:10
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


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


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