Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 29, 2025 14:03:12

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8919 ]     ... , , , 427, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:23:42 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3421
Откуда: Казань
Рейтинг сообщения: 0
Поменьше писать - максимально редко и, возможно, максимально сжимая. А то что пишется, сдвигать по кольцу. И ничего большего программно не придумать.

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:24:49 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
В устройстве есть STM32L052 и два драйвера RS485. Не считая клемм и светодиодов.

Данные это разные параметры установки, которые воемя от времени оператор меняет. Это и байты, и 16-битные, и float-ы... Разные. И нет никаких закономерностей их изменения, кроме того, что все они вводятся вручную и приходят в МК по модбасу. Т.е. никогда не будет (кроме первой инициализации) записи чаще, чем 1 раз в несколько секунд, т.к. физически быстрее ввести данные невозможно.
Самый простейший способ, который сразу приходит в голову:
В начале EEPROM храним сами переменные (предположим = 10 байт), а в оставшейся части - журнал изменений. При получении нового значения переменной - пишем его в журнал (добавляя к нему идентификатор). Когда журнал доходит до края EEPROM и поступает новое значение - все данные из журнала (последнее значение каждой переменной) переписываем в начальный блок переменных. Журнал стираем чтобы потом начать его заполнение вновь.
Вот и всё. Ресурс уже увеличен на величину журнала.

Кстати - кроме уменьшения износа. этот способ также даёт устойчивость к сбоям питания. В виде бонуса. А не как вы привыкли - на авось.

Также можно разбить EEPROM на ячейки одинакового размера. С идентификаторами содержимого и счётчиками записей. И писать переменные в них. Там где минимальный счётчик. И периодически проводить процедуру выравнивания для всего массива - переписывать давно лежащие без движения ячейки (у которых счётчик износа значительно меньше максимального из других ячеек) в более изношенные ячейки. Типа как в SSD. Но этот способ сложнее журналирования.


Последний раз редактировалось jcxz Вт мар 04, 2025 20:52:34, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:28:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Прошу подробнее, что вы подразумеваете под журналом? Что туда писать?
Я как-то не уловил, как потом читать данные? Из журнала, разыскивая самое свежее значение? Тогда нафига вообще первый блок?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Последний раз редактировалось ARV Вт мар 04, 2025 20:32:32, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:30:49 
Мучитель микросхем

Карма: 5
Рейтинг сообщений: 50
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 411
Откуда: Алчевск
Рейтинг сообщения: 0
У себя проверяю изменения с копией записи епром раз в минуту. При их наличии перезаписываю со сдвигом. Данных мало и 1кбайт записал за 1,5 года.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:31:02 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
Прошу подробнее, что вы подразумеваете под журналом? Что туда писать?
Пишем: "Новое значение переменной X равно Y".
Вроде как очевидно. Каждой переменной дать ID (имя). Числовое. Запись закодировать COBS и записать в журнал по-байтно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:34:53 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Идея с журналом занятная. Но интуитивно представляется ужасно геморной в реализации... С учетом того, что значения-то разные по длине... Это целая файловая система получается.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:38:34 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
Идея с журналом занятная. Но интуитивно представляется ужасно геморной в реализации...
Вот ваш предшественник видимо думал также. И просто забил болт. 8)
С учетом того, что значения-то разные по длине... Это целая файловая система получается.
Ничего там сложного нет: байт_идентификатора, за ним - байты переменной. Итого общая длина записи = 2...5 байт. Кодируем COBS получаем = 3...6 байт. Дописывает в хвост журнала. С отступом в один байт от предыдущей записи журнала. куда уж проще?

При старте программы создаём в ОЗУ копию текущих данных: читаем сами начальные данные с EEPROM, затем пробегаемся по журналу, внося изменения согласно каждой записи журнала. Все модификации (при поступлении новые значений) производим над копией данных в ОЗУ, а потом - пишем в журнал.

В качестве разделителей записей журнала (кодированных COBS) лучше использовать стёртое состояние ячеек. Если оно =0 - всё ок, пишем записи COBS как есть. Если стёртое значение ячеек == 0xFF, то после COBS-кодирования инвертируем данные кодированные COBS перед записью в EEPROM. Ну и обратно - перед COBS-декодированием.


Последний раз редактировалось jcxz Вт мар 04, 2025 20:46:47, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:48:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Мой предшественник так не думал... Но то, как он эту проблему решал, меня немного расстроило... И я решил переделать.

За идею с журналом спасибо, я буду в этом направлении думать.

Получается, первичный блок вообще не нужен: начальную инициализацию делаем в виде записей журнала, и далее всю память по кругу заполняем журналом... Как-то так...

Добавлено after 2 minutes 56 seconds:
Даже начальную инициализацию можно вообще в коде прописать...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:50:34 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
Получается, первичный блок вообще не нужен: начальную инициализацию делаем в виде записей журнала, и далее всю память по кругу заполняем журналом... Как-то так...
Нет. Первичный блок нужен, если у вас переменные изменяются с разной частотой. Может ведь оказаться, что одна переменная изменилась 100 раз, а другие - ни одного. И тогда записи одной часто меняющейся переменной, в конце концов вытеснят из журнала записи других переменных. Вот для этого и нужно при каждом полном заполнении журнала скидывать все данные в начальное хранилище. А потом - стирать журнал и по новой.

Я выше неправильно написал - это не кольцевой журнал, а линейный. От одного края свободного пространства EEPROM до другого края. "Заполнение журнала" -это достижение им конца выделенного под него пространства. После чего следует сброс его содержимого в Начальное Хранилище и стирание журнала.
За один цикл прохождения журнала переписываются по разу все ячейки EEPROM - износ их выровнен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:56:19 
Мучитель микросхем

Карма: 5
Рейтинг сообщений: 50
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 411
Откуда: Алчевск
Рейтинг сообщения: 0
Не знаю как в L0, но во внешних лучше писать стирать страницами. По первому байту страницы (не ff) можно быстро найти крайнюю запись.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 20:59:29 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
Не знаю как в L0, но во внешних лучше писать стирать страницами. По первому байту страницы (не ff) можно быстро найти крайнюю запись.
Конечно. Для внешних. Там можно и по 256КБ-секторам искать. Чтобы быстрее. И кольцо сделать в несколько десятков МБ размером.
Но ARV говорил про внутреннюю EEPROM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:04:30 
Мучитель микросхем

Карма: 5
Рейтинг сообщений: 50
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 411
Откуда: Алчевск
Рейтинг сообщения: 0
По времени запись отдельных байт по очереди может выйти дольше чем страницы сразу. Я по BOD не успевал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:16:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
А, кстати, BOD в stm32, так же, как и в AVR, тупо давит ресет, или может в еще безопасный момент прерывание сгенерировать?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:32:53 
Мучитель микросхем

Карма: 5
Рейтинг сообщений: 50
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 411
Откуда: Алчевск
Рейтинг сообщения: 0
Может. Например в G4 заведен выход монитора питания на EXTI line16.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:35:09 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ну... G4... я про свой... Так-то в них много чего может быть...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:39:47 
Мучитель микросхем

Карма: 5
Рейтинг сообщений: 50
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 411
Откуда: Алчевск
Рейтинг сообщения: 0
Надо смотреть в RM Programmable voltage detector (PVD) и Peripheral Voltage Monitoring (PVM) если есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 21:57:41 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4599
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не решается. Потому как сразу после иголки вызвавшей сброс, может воспоследовать уже обычное выключение.
Прикольно. Сначала Вы пишете фразу "без выкл.питания", и я с её учётом делаю вывод, описывая только этот момент. Но потом Вы резко переобуваетесь в воздухе, дописывая причину, которую исключили сами же постом выше :))) :))) :)))
Я же даже в цитате выделил жирным Вашу фразу :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 22:11:22 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Надо смотреть в RM Programmable voltage detector (PVD) и Peripheral Voltage Monitoring (PVM) если есть.
попробую иначе: если в CubeMX не найду ничего с BOD связанного, значит... :))) все РМы не перечитать никогда...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт мар 04, 2025 23:48:04 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
Прикольно. Сначала Вы пишете фразу "без выкл.питания", и я с её учётом делаю вывод, описывая только этот момент. Но потом Вы резко переобуваетесь в воздухе, дописывая причину, которую исключили сами же постом выше :))) :))) :)))
В чём именно "переобуваюсь"?? не понял...
И ничего я не исключал. Сперва происходит сброс процессора без выключения питания, просто сброс от помехи. Потом, с малым интервалом после, пока программа стартует, происходит выкл.питания.
В чём здесь переобувка??? :dont_know:
Сброс от помехи не исключает же возможность выключения питания сразу после него? И старт программы происходит не мгновенно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср мар 05, 2025 10:36:53 
Электрический кот
Аватар пользователя

Карма: 14
Рейтинг сообщений: 387
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 1064
Откуда: Тула
Рейтинг сообщения: 0
Я выше неправильно написал - это не кольцевой журнал, а линейный.

В запись журнала, кроме идентификатора переменной и её значения, можно писать ещё и счётчик номера записи. По этому счётчику можно будет определять последнюю запись в журнале при включении питания. Тогда журнал можно сделать кольцевым и его не надо будет очищать целиком за раз. Для предотвращения ошибок определения (после переполнения кольца), ёмкость этого счетчика должна быть больше максимального количества записей журнала.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8919 ]     ... , , , 427, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y