Проверьте правильность записанного в регистр значения

Я новичок в языке c.

У меня есть функция, которая записывает определенное значение в регистр:

  if(something == someCondition )
{

Write_into_register( Msg->R_addres, Msg->value );
}

Это работает до сих пор.
У меня также есть функция чтения, которая просто читает значение, которое записывается в регистр:

uint read_value_from_register( R_addres addr ){}

Это тоже хорошо работает.

Теперь я хотел бы иметь что-то вроде этого:

  1. Каждый раз, когда значение записывается в регистр, проверяйте, действительно ли оно записано в регистр (с моей функцией чтения)
  2. Если значение не записано или оно не совпадает, попробуйте 3 раза, чтобы написать правильное значение
  3. Если 3-я попытка не удалась, выведите ошибку

Как представить этот алгоритм и совместить его с моими существующими функциями? Вы можете представить это просто как псевдокод?
Буду благодарен!

Попробовал что-то вроде этого:

int index;
Write_into_register(addres, value );
for (index=0;index<3;i++)
if (value== read_value_from_register(addres))
return 1;
else
return ERROR;

-2

Решение

Предполагая, что ваши данные для записи является целым числом.

int Write_verify( R_addres addr, int data)
{
Write_into_register(addr, data );
if (data == read_value_from_register(addr))
return 1;
else
return 0;
}

Эта функция запишет и проверит данные. Он вернет 1, если подтверждено, и 0, если не в порядке.

Если вы хотите записать данные три раза, вы должны изменить приведенный выше код следующим образом.

int Write_verify( R_addres addr, int data)
{
Write_into_register(addr, data );
for (int i=0; i<2; i++)
{
if (data == read_value_from_register(addr))
return 1;
else
Write_into_register(addr, data );
}

// Check for last value
if (data == read_value_from_register(addr))
return 1;
else
return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]