Запись в EEPROM

mr.remlux
Offline
Зарегистрирован: 06.10.2020

Здравствуйте всем!

У меня вопрос...

Переменная int8_t это однобайтная переменная. Верно (-127....128)?

В ячейку памяти EEPROM я могу записать один байт.

Почему когда я записываю в память отрицательное число типа int8_t, то при считывании с EEPROM памяти я получаю не корректное значение?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

как записываете, как считываете?

b707
Offline
Зарегистрирован: 26.05.2017

mr.remlux пишет:

Почему когда я записываю в память отрицательное число типа int8_t, то при считывании с EEPROM памяти я получаю не корректное значение?

кто ж вас знает.

Код показывайте

rkit
Offline
Зарегистрирован: 23.11.2016

потому что читаешь не как int8_t, очевидно

mr.remlux
Offline
Зарегистрирован: 06.10.2020

Ну например:

#include <EEPROM.h>
int8_t val=-1;
void setup() {
 
 Serial.begin(9600);
  EEPROM.write(1, val);
  Serial.print(EEPROM.read(1));
}
 
void loop() {}
 
При считывании получаю 255
b707
Offline
Зарегистрирован: 26.05.2017

mr.remlux пишет:

Ну например:

одолжение нам сделал?

 

По сути вопроса - о приведении типов слыхал что-нить?

Посмотри в библиотеке ЕЕПРОМ, какой тип возвращаемого значения у EEPROM.read()

mr.remlux
Offline
Зарегистрирован: 06.10.2020

Даже и не думал одолжений делать...

Спасибо. Посмотрел в библиотеке. Возвращаемое значение byte, т.е. uint8_t... Я об этом не знал.

Значит так надо:

Serial.print(int8_t(EEPROM.read(1)));?

b707
Offline
Зарегистрирован: 26.05.2017

mr.remlux пишет:

Значит так надо:

Serial.print(int8_t(EEPROM.read(1)));?

а оно так компилируется?

я как-то больше привык к такой записи:

Serial.print((int8_t)EEPROM.read(1));

mr.remlux
Offline
Зарегистрирован: 06.10.2020

у меня скомпилировалось)

И теперь   -1

b707
Offline
Зарегистрирован: 26.05.2017

mr.remlux пишет:

у меня скомпилировалось)

И теперь   -1

отлично :)

mr.remlux
Offline
Зарегистрирован: 06.10.2020

Большое спасибо всем за помощь!!!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

mr.remlux пишет:

Почему когда я записываю в память отрицательное число типа int8_t, то при считывании с EEPROM памяти я получаю не корректное значение?

Потому что либо неправильно записываете, либо неправильно читаете, либо и то, и другое вместе.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А ещё универсальный ответ: Потому что гладиолус! )))

mr.remlux
Offline
Зарегистрирован: 06.10.2020

А Вы свои неуместные предположения высказываете потому что общаетесь посредством интернета,а не с глазу на глаз?)))

Или потому, что самый умный здесь?

 

mr.remlux
Offline
Зарегистрирован: 06.10.2020

 

Потому что либо неправильно записываете, либо неправильно читаете, либо и то, и другое вместе.

[/quote]

Здравствуйте. Выше найденное решение является верным или ещё есть варианты?

sadman41
Offline
Зарегистрирован: 19.10.2016

Ответ "Да" на оба вопроса.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

mr.remlux пишет:

Здравствуйте. Выше найденное решение является верным или ещё есть варианты?

Не знаю. Там код вставлен неправильно и я его просто не читал (как и большинство народа).

Хотите получать ответы, а не глум - 1) всегда прикладывайте код, чтобы было что обсуждать, а не как в первом посте; 2) вставляйте его как положено - с номерами строк, иначе обсуждать его невозможно.

Не будете это соблюдать, над Вам будут глумиться, а Вы - обижаться. Вы для этого сюда пришли?

mr.remlux
Offline
Зарегистрирован: 06.10.2020

Спасибо за зовет.

Я на форуме совсем недавно.

Да я совсем не обиделся.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

mr.remlux пишет:

А Вы свои неуместные предположения высказываете потому что общаетесь посредством интернета,а не с глазу на глаз?)))

Или потому, что самый умный здесь?

 

Если вопрос ко мне - то я никаких предположений не высказывал.
Учиться нужно, учеников нужно пинать. Иначе они даже шнурки завязывать не научаться. На этом форуме именно так, это ещё со времён советов. Тогда и образование ценилось. Сейчас покупается. Есть интересный канал на ютубе (сама идея, а не канал в целом), где молодым людям (не в плане пола) задают вопросы школьной программы прямо на улице. И так стыдно за эту молодёжь - они же только закончили школу и не знают, а я закончил дохреналетназад и знаю (((