FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Понедельник, 21.08.2017, 11:04
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 3123»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » EEPROM вопросы по созданию переменных (Помогите разобраться с eeprom)
EEPROM вопросы по созданию переменных
fsergei70 Дата: Вторник, 01.08.2017, 14:54 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Уважаемые знатоки как можно организовать запись значений в память каждый раз в новую переменную. Необходимо считывать к примеру температуру раз в час и записывать значение времени и температуры до заполнения eeprom. В качестве eeprom используется микросхема установленная в часах реального времени. После заполнения памяти в идеале былобы не плохо чтоб старые значения затирались новыми. Таким образом получился бы своеобразный архив. Именем переменной может быть дата и время. Можно конечно использовать карту памяти и писать в файл но интересней всё-таки попробовать  прикрутить eeprom.
 
Сергей Дата: Вторник, 01.08.2017, 15:11 | Сообщение # 2
Модератор
Группа: Модераторы
Сообщений: 481
Награды: 16
Репутация: 7
Статус: Offline
fsergei70, Давайте начнем с простого. Вот блок для записи переменной int в выбранную ячейку еепром.
На вход дата подаете значение
На вход Адр - адрес от 0 до 511 (1 кБ на унке, данных Интежер влезит 512 шт)
На Ен подаете строб записи. На выходе всегда будет значение еппром, адрес которого задан на входе адр

поставив на вход адреса счетчик, с ограничением макс: 510 например, сможете писать новые данные в новую ячейку.

Вот так примерно:
Прикрепления: __-CODE-.ubi(30Kb) · 0541160.jpg(8Kb) · 9425159.jpg(59Kb)


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
fsergei70 Дата: Вторник, 01.08.2017, 15:19 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Спасибо за блок вечером попробую. С внешней eeprom ваш блок работать будет? Я хочу в микросхему памяти часов реального времени писать чтоб ардуинку не портить.
 
OlegAn1962 Дата: Вторник, 01.08.2017, 15:19 | Сообщение # 4
Полковник
Группа: Проверенные
Сообщений: 365
Награды: 4
Репутация: 0
Статус: Offline
Цитата Сергей ()
На выходе всегда будет значение еппром, адрес которого задан на входе адр
То есть, этот блок одновременно является и блоком чтения?
 
Сергей Дата: Вторник, 01.08.2017, 15:21 | Сообщение # 5
Модератор
Группа: Модераторы
Сообщений: 481
Награды: 16
Репутация: 7
Статус: Offline
Цитата fsergei70 ()
С внешней eeprom ваш блок работать будет?
нет, это просто запись во внутреннею память МК. Команды записи/чтения из примеров.
Тип переменной на входе, если надо будет, могу изменить. Лонг интежер или флоат надо писать по другому. Сделаю еще пару блоков под них.


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
Sancho Дата: Вторник, 01.08.2017, 15:26 | Сообщение # 6
Полковник
Группа: Проверенные
Сообщений: 391
Награды: 12
Репутация: 12
Статус: Online
Цитата fsergei70 ()
С внешней eeprom ваш блок работать будет?
Нет, читайте внимательно пост Сергея, тем более, что в предыдущей теме о памяти часов Вами не говорилось.
А вот работать с ней легко, 24C32 - простая память на 4 кб по I2C.
Но в каждом конкретном случае, что-бы не городить огород на плате, лучше все нужные, но громоздкие функции "спрятать" в блок.
В Вашем конкретном случае как видите сборку температуры/времени в байты?
Например, первые два- дата и час, третий( и четвёртый) - параметр(значение).


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
Сергей Дата: Вторник, 01.08.2017, 15:26 | Сообщение # 7
Модератор
Группа: Модераторы
Сообщений: 481
Награды: 16
Репутация: 7
Статус: Offline
Цитата OlegAn1962 ()
То есть, этот блок одновременно является и блоком чтения?
Да. Да там чтения того... пару строк кода. Его и блоком называть смешно.
А если в редакторе блока убрать "*2"
,
то можно побайтно вычитать всю ЕЕПРОМ. В таком случае адрес будет от 0 до 1023.
Прикрепления: 2732545.jpg(114Kb)


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
Sancho Дата: Вторник, 01.08.2017, 15:27 | Сообщение # 8
Полковник
Группа: Проверенные
Сообщений: 391
Награды: 12
Репутация: 12
Статус: Online
Дополню пост 6.
Создание блока для 24C32 не составляет труда, важно лишь понимание конечного результата - сколько информации должно записываться за один "проход" а потом читаться? Чтоб не городить кучу блоков и машинного кода в IDE....


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Вторник, 01.08.2017, 15:34
 
fsergei70 Дата: Вторник, 01.08.2017, 15:32 | Сообщение # 9
Рядовой
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Да неплохо бы было float писать.  Но если что можно значения умножить на 100 а после разделить. Ещё интересует если счётчик адреса сделать например до 255 и его значение в одном случае подавать на ваш блок а на второй такойже блок подавать значения с счетчика плю 256 можно будет писать сразу 2 переменных или этот блок только один в проекте использовать можно?
 
Sancho Дата: Вторник, 01.08.2017, 15:39 | Сообщение # 10
Полковник
Группа: Проверенные
Сообщений: 391
Награды: 12
Репутация: 12
Статус: Online
Цитата fsergei70 ()
Да неплохо бы было float писать.  Но если что можно значения умножить на 100 а после разделить
Вам нужна точность в два знака после запятой?
Какой диапазон параметра?
Какая нужна глубина стёка - число записей?
Вот и считайте байты, до 4К.


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Вторник, 01.08.2017, 15:40
 
Сергей Дата: Вторник, 01.08.2017, 15:42 | Сообщение # 11
Модератор
Группа: Модераторы
Сообщений: 481
Награды: 16
Репутация: 7
Статус: Offline
Цитата fsergei70 ()
Да неплохо бы было float писать
Если математикой с флоат заниматься не будете, то можно флоат писать (только не в этот блок biggrin ) , в противном случае лучше на сто умножать. Ардуина флоат плохо "пережевывает". Математические операции лучше делать с целочисленными переменными. Для этого может понадобится блок для запись лонг интежер сделать.

В проекте можете несколько блоков ставить, только за адресами следите, что бы не "перетирали" друг друга.
У меня в последнем проекте штук 10 похожих блоков в еепром пишут по несколько значений. Отдельно хранятся UID бесконтактных карт, а к их номерам привязаны балансы (суммы денег). К каждой карте соответствует свой баланс, кредитный лимит. Так же в отдельной области еепром хранится остатки товаров, + настройки (крайние углы поворотов) сервоприводов в отдельной области еепром. Все работает, скоро доделаю, запишу полный обзор.
Кстати в нем же и пробовал флоат отнимать, делить... Не прокатило. Решил математику делать с целочисленными.


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
Sancho Дата: Вторник, 01.08.2017, 15:53 | Сообщение # 12
Полковник
Группа: Проверенные
Сообщений: 391
Награды: 12
Репутация: 12
Статус: Online
Сергей, хватило 1К на всё? Сколько пользователей будет в конечном варианте?

Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Вторник, 01.08.2017, 16:13
 
fsergei70 Дата: Вторник, 01.08.2017, 15:54 | Сообщение # 13
Рядовой
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Цитата Sancho ()
Какой диапазон параметра?
Нужно мерить температуру в системе отопления подача и обратка значения до 90 градусов для примерного вычисления потребляемой тепловой энергии. Одного знака после запятой в принципе хватит. В качестве датчика расхода хочу использовать водомер с датчиком хола


Сообщение отредактировал fsergei70 - Вторник, 01.08.2017, 15:56
 
Sancho Дата: Вторник, 01.08.2017, 15:58 | Сообщение # 14
Полковник
Группа: Проверенные
Сообщений: 391
Награды: 12
Репутация: 12
Статус: Online
fsergei70, Какая конечная цель устройства - логгер?

Добавлено (01.08.2017, 15:58)
---------------------------------------------

Цитата fsergei70 ()
Нужно мерить температуру в системе отопления подача и обратка значения до 90 градусов для примерного вычисления потребляемой тепловой энергии. Одного знака после запятой в принципе хватит. В качестве датчика расхода хочу использовать водомер с датчиком хода.
Понято.
А если вычислять сразу и писать? Или нужна температура для "предъяв" smile
Расход примерно стабилен по времени?
Вы пытаетесь сделать дублирующий теплосчётчик?
Как пассатижами тянем инфу для ТЗ... smile


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
Сергей Дата: Вторник, 01.08.2017, 16:10 | Сообщение # 15
Модератор
Группа: Модераторы
Сообщений: 481
Награды: 16
Репутация: 7
Статус: Offline
Цитата Sancho ()
Сергей, хватило 1К на всё?
нет конечно  biggrin . Я на меге2056 сделал. Там места на 100 карточек, + 100 балансов, + 100 кред. лимитов (это все числа лонг интежер по 4 байта) + на пять товаров (в каждом цена закупки, наценка, остаток) + на 5 серв, по 3 интежер (это по два угла и задержка на каждый привод). Как то так...


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
Форум » Основной » Спросить у знатоков » EEPROM вопросы по созданию переменных (Помогите разобраться с eeprom)
Страница 1 из 3123»
Поиск:

FLProg © 2017
Яндекс.Метрика