Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация очереди FIFO для записи в ЕЕПРОМ Xmega
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Kovrov
Ребят
в голове кручу идею создать буфер для записи страниц еепрома
в ХМЕГА.
Думаю классическим способом:
вектор очереди головы, вектор очереди хвоста- сравнение головы с хвостом..
Вопрос: по какому признаку определить опустошение или переполнение буфера?
теоретически: если хвост догонят голову переполнение, если наоборот опустошение
но как практически реализовать?
alexeyv
так и реализовывай, при перед/после инкремента указателей проверяй на больше/меньше/равно
Код
int write_buf(int data)
{
  *ptr_wr++ = data;      
  if(ptr_wr >= ptr_end)  ptr_wr = ptr_start;
  if(ptr_wr == ptr_rd)  return 0;    // ожидается переполнение!!!
  else   return 1;  // норм
}

или
Код
int read_buf(int *data)
{
  if(ptr_rd == ptr_wr)  return 0;    // пусто!!!
  *data = *ptr_rd++;
  if(ptr_rd >= ptr_end)  ptr_rd = ptr_start;
  return 1;  // норм
}
megajohn
я бы заменил
if(ptr_wr >= ptr_end) ptr_wr = ptr_start;

на
assert( ptr_wr <= ptr_end );
if(ptr_wr == ptr_end) ptr_wr = ptr_start;
alexeyv
Использование assert - на любителя
megajohn
Цитата(alexeyv @ Dec 3 2014, 07:41) *
Использование assert - на любителя


а здесь фишка не в самом assert а в предупреждении что что-то ездит по памяти и портит
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.