реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM8S EEPROM надо ли ждать EOP флага после записи 1 байта?
sigmaN
сообщение Jun 22 2017, 11:24
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Мне надо записывать два байта подряд(т.е. 16ти битную переменную)
У меня stm8s003, у которого судя по даташиту нет read-while-write (RWW) capability.

В документации сказано
Цитата
Devices without RWW capability: The application stops for the duration of the byte
program operation.

Это означает, что я могу не проверять EOP флаг? И программировать хоть все 128 байт в цикле?

Я пробовал проверять этот флаг и иногда программа на этом цикле ожидания виснет....А иногда проскакивает. Что очень странно.
Без цикла ожидания работает, но как-то на душе не спокойно....

В исходниках STDLib от ST ожидания EOP тоже нет, но на душе всё равно не спокойно )))))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 22 2017, 19:04
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я проверял, зависаний не было. Работал с STM8S105, STM8AF52Ax.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 22 2017, 20:06
Сообщение #3


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Ощинь странная история. Лаадно, будем тестирвать... Есть дискавэри с S105 устрою более детальный тест


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 23 2017, 07:21
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(sigmaN @ Jun 22 2017, 16:24) *
В исходниках STDLib от ST ожидания EOP тоже нет, но на душе всё равно не спокойно )))))

Вспомнил. Я тоже сначала подсмотрел в STDLib и сделал без ожидания. И словил глюки - иногда не успевал записываться не первый байт в последовательности. Я добавил ожидание, и глюки пропали.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 23 2017, 08:53
Сообщение #5


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



У меня глюки и так и так. Я правда в функции записи снимал и ставил защиту на запись. Если снятие защиты сделать чуть раньше и потом не трогать то вроде без глюков и с ожиданием и без ожидания пишет.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 25 2017, 08:45
Сообщение #6


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Оставил ожидание, но с частым снятием/установкой защиты от записи явно присутствуют какие-то проблемы.
Функция записи 2х байт вначале проверяла флаг DUL, если он не стоит то разлочивала ипром и писала два байта, после чего сразу залочивала ипром путем записи 0 в DUL.
Глючило(незапись некоторых байтов) и иногда подвисало на ожидании EOP именно пока не убрал эту разлочку/залочку.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 25 2017, 15:36
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А пауза после разлочки/залочки не спасает?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 25 2017, 20:46
Сообщение #8


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Не пробовал, должна по идее спасать. Забил я на это дело, у меня указатель на eeprom по которому все модули считывают настройки сделан const, чтобы компилятор бил по рукам при попытках через него что-то туда писать. А там где надо запись идет через другой указатель в строго дозированных кол-вах)) Посчитал это достаточной защитой на данный момент


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 26 2017, 09:54
Сообщение #9


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Хотел на дискавэри для уточнения всех ньюансов еще раз всё это дело испытать
а оказалось, что на STM8S105, который там стоит, есть read-while-write (RWW) capability. Загуглил STM8AF52A, с которым у вас был опыт работы и оказалось там тоже RWW есть.

Потом как-нибудь именно на 8S003 окончательно разберусь какая задержка после залочки-разлочки нужна и вообще что это было.. Потому как нигде в документации не упоминается ничего похожего. Errata еще надо бы почитать наверно, но что-то терзают меня смутные сомнения, может ложная тревога и я там где-то накосячил при экспериментах....

Add:
Нашел!
А вот и было такое предчувствие, что что-то тут не чисто... Что где-то не доглядел )))
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 26 2017, 10:38
Сообщение #10


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



sm.gif Я чего-то такого и ждал. У STM такое часто бывает.
Интересно, а в либе своей они проверяют этот DUL?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 27 2017, 14:18
Сообщение #11


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Неа, не проверяют. Я ж туда в первую очередь и полез смотреть как там сделана запись...
Только многократное перечитывание даташита спасет ))

P.S.
А как я тут Independent Watchdog настраивал недавно. Прописал ему в регистры все настройки(с предварительной разлочкой записи, ну всё как положено).
Потом включаю ватчдог прописывая в регистр команду Enable. А собака стартует с дефолтными параметрами.
Я уже и туда и сюда всё перепроверил, использую же библиотеку STшную фирменную....
А потом в даташите вычитываю ВНЕЗАПНО
Цитата
Once enabled, the independent watchdog can be configured through the IWDG_PR, and IWDG_RLR registers.


Т.е. оказывается сначала надо ENABLE а потом у тебя есть 15ms чтобы успеть его сконфигурить до того как эта собака сработает с дефолтными настройками
И это всё указано только в одном предложении и ключевые слова тут Once enabled. Ох и на долго запомню я этот прикол ))))



--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Эдди
сообщение Jun 27 2017, 19:25
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



SPL не пользуюсь. DUL проверяю, как и пишут в даташите. Потом пишу данные и жду EOP. Все по даташиту. Работает нормально, ничего не зависает.

Насчет сторожевого пса: читайте внимательно даташит, а не кривые коды SPL. Тем паче, SPL для STM8 — это ж вообще дикость какая-то! Там же RM'а того — полтысячи страниц всего.
Когда мне понадобился сторожевой таймер, взлетело с первой попытки — потому как по даташиту делаю.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 27 2017, 20:08
Сообщение #13


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
взлетело с первой попытки — потому как по даташиту делаю.
Ну я вот немного не дочитал с первого раза....


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 27 2017, 20:19
Сообщение #14


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Эдди @ Jun 28 2017, 00:25) *
SPL не пользуюсь. DUL проверяю, как и пишут в даташите.

Ну кто ж так проверяет? sm.gif
Код
    if(!(FLASH_IAPSR & 0x08))
        return 0;

По-хорошему, тут нужен цикл. Ваш код работает только за счёт тормознутости sdcc. (Или за счёт того, что разблокировка производится только один раз при старте программы).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 27 2017, 20:34
Сообщение #15


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
разблокировка производится только один раз при старте программы

Так нет же, вроде как тут-же строкой выше анлок
Код
// unlock memory
    FLASH_DUKR = EEPROM_KEY1;
    FLASH_DUKR = EEPROM_KEY2;
    // check bit DUL=1 in FLASH_IAPSR
    if(!(FLASH_IAPSR & 0x08))
             return 0;


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 08:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016