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

 
 
> 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
 
Start new topic
Ответов
sigmaN
сообщение Jul 31 2017, 09:40
Сообщение #2


I WANT TO BELIEVE
******

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



Код
/**
  * @brief  Wait for a Flash operation to complete.
  * @note   The call and execution of this function must be done from RAM in case
  *         of Block operation.
  * @param  FLASH_MemType : Memory type
  *         This parameter can be a value of @ref FLASH_MemType_TypeDef
  * @retval FLASH status
  */
IN_RAM(FLASH_Status_TypeDef FLASH_WaitForLastOperation(FLASH_MemType_TypeDef FLASH_MemType))
{
  uint8_t flagstatus = 0x00;
  uint16_t timeout = OPERATION_TIMEOUT;
  
  /* Wait until operation completion or write protection page occurred */
#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S105) || \
  defined(STM8S005) || defined(STM8AF52Ax) || defined(STM8AF62Ax) || defined(STM8AF626x)  
    if(FLASH_MemType == FLASH_MEMTYPE_PROG)
    {
      while((flagstatus == 0x00) && (timeout != 0x00))
      {
        flagstatus = (uint8_t)(FLASH->IAPSR & (uint8_t)(FLASH_IAPSR_EOP |
                                                        FLASH_IAPSR_WR_PG_DIS));
        timeout--;
      }
    }
    else
    {
      while((flagstatus == 0x00) && (timeout != 0x00))
      {
        flagstatus = (uint8_t)(FLASH->IAPSR & (uint8_t)(FLASH_IAPSR_HVOFF |
                                                        FLASH_IAPSR_WR_PG_DIS));
        timeout--;
      }
    }
#else /*STM8S103, STM8S903, STM8AF622x */
  while((flagstatus == 0x00) && (timeout != 0x00))
  {
    flagstatus = (uint8_t)(FLASH->IAPSR & (FLASH_IAPSR_EOP | FLASH_IAPSR_WR_PG_DIS));
    timeout--;
  }
#endif /* STM8S208, STM8S207, STM8S105, STM8AF52Ax, STM8AF62Ax, STM8AF262x */
  
  if(timeout == 0x00 )
  {
    flagstatus = FLASH_STATUS_TIMEOUT;
  }
  
  return((FLASH_Status_TypeDef)flagstatus);
}


Кажется EOP тоже проверяется в индусском коде.
Может быть у вас старая версия библиотеки?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 31 2017, 11:18
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(sigmaN @ Jul 31 2017, 12:40) *
Кажется EOP тоже проверяется в индусском коде.
Может быть у вас старая версия библиотеки?

Да не старая, а от другого чипа. Даже в приведённом вами коде видно, что для разных чипов всё по разному.

Теперь понятно, почему IAR не доделал полноценно работу с __eeprom как в AVR. Именно из-за этого зоопарка. sad.gif

Вывод: чти даташит на каждый чип!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sigmaN   STM8S EEPROM надо ли ждать EOP флага после записи 1 байта?   Jun 22 2017, 11:24
- - AHTOXA   Я проверял, зависаний не было. Работал с STM8S105,...   Jun 22 2017, 19:04
- - sigmaN   Ощинь странная история. Лаадно, будем тестирвать.....   Jun 22 2017, 20:06
- - AHTOXA   Цитата(sigmaN @ Jun 22 2017, 16:24) В исх...   Jun 23 2017, 07:21
- - sigmaN   У меня глюки и так и так. Я правда в функции запис...   Jun 23 2017, 08:53
- - sigmaN   Оставил ожидание, но с частым снятием/установкой з...   Jun 25 2017, 08:45
|- - AHTOXA   А пауза после разлочки/залочки не спасает?   Jun 25 2017, 15:36
- - sigmaN   Не пробовал, должна по идее спасать. Забил я на эт...   Jun 25 2017, 20:46
- - sigmaN   Хотел на дискавэри для уточнения всех ньюансов еще...   Jun 26 2017, 09:54
|- - AHTOXA   Я чего-то такого и ждал. У STM такое часто бывает....   Jun 26 2017, 10:38
- - sigmaN   Неа, не проверяют. Я ж туда в первую очередь и по...   Jun 27 2017, 14:18
- - Эдди   SPL не пользуюсь. DUL проверяю, как и пишут в дата...   Jun 27 2017, 19:25
|- - AHTOXA   Цитата(Эдди @ Jun 28 2017, 00:25) SPL не ...   Jun 27 2017, 20:19
|- - Эдди   Цитата(AHTOXA @ Jun 27 2017, 23:19) Ну кт...   Jun 28 2017, 05:32
- - sigmaN   Цитатавзлетело с первой попытки — потому как по да...   Jun 27 2017, 20:08
- - sigmaN   Цитатаразблокировка производится только один раз п...   Jun 27 2017, 20:34
|- - AHTOXA   Цитата(sigmaN @ Jun 28 2017, 01:34) Так н...   Jun 28 2017, 06:29
- - Эдди   Строчка 45 из того файла (почему-то неправильно сс...   Jun 28 2017, 08:23
|- - AHTOXA   А, точно. Проглядел.   Jun 28 2017, 09:23
- - sigmaN   Лочится ниже это да, но DUL всё равно не ожидается...   Jun 28 2017, 19:13
- - Эдди   Да я ж говорю, плохой пример привел (в "1-wir...   Jun 29 2017, 05:30
- - sigmaN   ЦитатаА while там нельзя Так тогда и на EOP while ...   Jun 29 2017, 09:22
|- - VladislavS   Цитата(sigmaN @ Jun 29 2017, 12:22) Так т...   Jul 30 2017, 07:42
- - sigmaN   Вы не дочитали исходники немного, есть процы с Rea...   Jul 30 2017, 10:28
- - VladislavS   Всё с точностью до наоборот. Проц без RWW останавл...   Jul 30 2017, 16:15
|- - jcxz   Цитата(sigmaN @ Jul 31 2017, 12:40) Кажет...   Jul 31 2017, 09:55
- - sigmaN   Да нет там особого зоопарка. Есть только RWW и не-...   Jul 31 2017, 12:57


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:55
Рейтинг@Mail.ru


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