Перейти к содержанию
    

STM8S EEPROM надо ли ждать EOP флага после записи 1 байта?

Мне надо записывать два байта подряд(т.е. 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 тоже нет, но на душе всё равно не спокойно )))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оставил ожидание, но с частым снятием/установкой защиты от записи явно присутствуют какие-то проблемы.

Функция записи 2х байт вначале проверяла флаг DUL, если он не стоит то разлочивала ипром и писала два байта, после чего сразу залочивала ипром путем записи 0 в DUL.

Глючило(незапись некоторых байтов) и иногда подвисало на ожидании EOP именно пока не убрал эту разлочку/залочку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел на дискавэри для уточнения всех ньюансов еще раз всё это дело испытать

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

 

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

 

Add:

Нашел!

А вот и было такое предчувствие, что что-то тут не чисто... Что где-то не доглядел )))

post-35751-1498470716_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) Я чего-то такого и ждал. У STM такое часто бывает.

Интересно, а в либе своей они проверяют этот DUL?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Только многократное перечитывание даташита спасет ))

 

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. Ох и на долго запомню я этот прикол ))))

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Насчет сторожевого пса: читайте внимательно даташит, а не кривые коды SPL. Тем паче, SPL для STM8 — это ж вообще дикость какая-то! Там же RM'а того — полтысячи страниц всего.

Когда мне понадобился сторожевой таймер, взлетело с первой попытки — потому как по даташиту делаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SPL не пользуюсь. DUL проверяю, как и пишут в даташите.

Ну кто ж так проверяет? :)

    if(!(FLASH_IAPSR & 0x08))
        return 0;

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Так нет же, вроде как тут-же строкой выше анлок

// unlock memory
    FLASH_DUKR = EEPROM_KEY1;
    FLASH_DUKR = EEPROM_KEY2;
    // check bit DUL=1 in FLASH_IAPSR
    if(!(FLASH_IAPSR & 0x08))
             return 0;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...