чтение еепром памяти

iopq
Offline
Зарегистрирован: 05.07.2016

подскажите пожалуйста. существует у меня такая проблема. я в сетапе зачитываю еепром в массив для дальнейшей работы. но пока до него дойдет очередь его первая часть "протухает" (заменяется произвольными значениями). что можно сделать. привожу код -

#include <avr/eeprom.h>

byte eepr[18];

void setup() {
  eeprom_read_block(&eepr, (uint8_t*)0,  sizeof(eepr));
}

может чего не правильно делаю?

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

&eepr

Указатель на указатель

iopq
Offline
Зарегистрирован: 05.07.2016

вы имеете ввиду сделать так -

eeprom_read_block(eepr, (uint8_t*)0,  sizeof(eepr));

?

ничего не меняется

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

С таким знанием языка ошибка где-то еще.

iopq
Offline
Зарегистрирован: 05.07.2016

ясно. спасибо за помощь

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

rkit пишет:

&eepr

Указатель на указатель

второй параметр еще круче

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

iopq пишет:

ясно. спасибо за помощь

а что тут еще скажешь...  Что у вас в первом параметре? - ерунда. Что во втором? - чушь! В одной короткой строчке две совершенно боедовые ошибки. С таким знанием языка в остальном коде наверняка еще мильярд ошибок

iopq
Offline
Зарегистрирован: 05.07.2016

ощущение что не на форум пришел а на работу устраиваться. никого вроде тут не заставляют. есть желание подскажите как правильно. нет так нет. то что у меня знания -10 это я и сам знаю

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

беру слова обратно, второй парметр нормальный.

Тогда rkit прав - если после исправления первого парметра проблема не пропадает - значит где-то в другой части программы распахиваете память.

iopq
Offline
Зарегистрирован: 05.07.2016

нашел похожее действие тут на форуме  -

unsigned long Cold;

void setup()
{
eeprom_read_block(&Cold, 20, 4);

так же человек читает и никто ему не сказал что он даун

iopq
Offline
Зарегистрирован: 05.07.2016

b707 пишет:

где-то в другой части программы распахиваете память.

так я об этом и сказал изначально. как от этого избавиться? 

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

iopq пишет:

нашел похожее действие тут на форуме  -

unsigned long Cold;

void setup()
{
eeprom_read_block(&Cold, 20, 4);

так же человек читает и никто ему не сказал что он даун

а вы разницы со своей строчкой вообще не замечаете?

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

iopq пишет:

так я об этом и сказал изначально. как от этого избавиться? 

найти где происходит неверный доступ к памяти и устранить ошибку.

Если вы хотите, чтобы вам кто-то помог в этом - как минимум надо привести весь код целиком, а не одну единственную строчку.

iopq
Offline
Зарегистрирован: 05.07.2016

да вы меня с этим кодом пошлете куда подальше. там пока дойдешь до этой еепром надо десятком пакетов с устройством обменяться

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

iopq пишет:

да вы меня с этим кодом пошлете куда подальше. там пока дойдешь до этой еепром надо десятком пакетов с устройством обменяться

ну тогда остается искать самому. По первому вопросу ввм ответили.

Тут так - если вы выложите код, вполне возможно, что его никто смотреть не будет. Нонебольшой шанс есть.  А если не выложите - смотреть не будут точно.

iopq
Offline
Зарегистрирован: 05.07.2016

решил проблему чтением из еепрома непосредственно на последней стадии когда нужны эти данные. правда пришлось задержку поставить иначе не читались

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

Понятно, значит завтра опять сюда придёте, т.к. теперь Вы распахиваете что-то другое, только не заметили этого пока.

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

iopq пишет:

решил проблему чтением из еепрома непосредственно на последней стадии когда нужны эти данные. правда пришлось задержку поставить иначе не читались


это не "решил", это забил на проблему

iopq
Offline
Зарегистрирован: 05.07.2016

а что в этом плохого? 

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

iopq пишет:

а что в этом плохого? 

Я Вам уже объяснил в посте #16

Izvekoff
Offline
Зарегистрирован: 02.03.2020

ЕвгенийП пишет:

iopq пишет:

а что в этом плохого? 

Я Вам уже объяснил в посте #16

а может там какой-то процесс вызываемый через прерывание пишет в память?

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

Izvekoff пишет:

а может там какой-то процесс вызываемый через прерывание пишет в память?

1. Вы перепутали с юниксом или виндовсом - здесь нет никаких процессов, кроме тех, которые Вы запустили сами.

2. Какая разница кто именно срёт в память? Если происходит распашка памяти, а ТС не выяснил где она, а только "стал читать непосредственно перед выводом", значит она распашет что-то другое и это рано или поздно вылезет.