Показать сообщение отдельно
Старый 27.05.2018, 22:20   #21
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 39
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
Arrow

возникла необходимость контролировать значения, которые прописаны в памяти процессора.
По этому поводу накатал программку, которая читает данные из памяти, декодирует и кидает в ком порт.
Порядок такой:
1 - залили скетч в блок питания ( или в голую ардуину, для теста)
2 - открыли ком порт, выставили скорость 115200
3 - читаем.
Если хотим изменить значения или полностью стереть память - меняем в начале циферку соответственно описанию.
4 - заливаем прошивку для блока питания, например m32.

Если что непонятно - спрашивайте. Есть желание записать видео, но пока нет времени.
Нажмите на изображение для увеличения
Название: Clipboard01.jpg
Просмотров: 699
Размер:	80.4 Кб
ID:	49785
PHP код:
const byte rejim_raboty_control_lub_zapis 0// определяем, что мы хотим делать этим скетчем. 
// 0 - только читаем. 
// 1 - пишем значения в еепром процессора. 
// 2 - обнуляем память процессора ( как если бы поставили новую ардуину)

//Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
// Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
//  Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И  
//   Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
   
//const byte brac_nastrojki_iz_EEPROM = 0;      // если вы хотите СОХРАНИТЬ свои настройки в энергонезависимую память(еепром), тогда ставим 1, 0 - берём значения из скетча, игнорируя память ( кроме калибровки), 2 - берем значения из памяти eeprom,(если память пустая, берем значения из скетча.) 
 
byte reset_HUB_on_power_on 1;      // передёргивать ли хаб при каждом включении зажигания, для решения проблемы с определением изикапа (STK1160) 1 - после ВКЛ АСС включить хаб, выключить на 0,5с и включить опять. 0 - просто включить хаб.  При 1 могут быть проблемы с определением флешки в хабе, отгда поставить 0.
 
byte power_off_HUB_on_starting 1;  // выключать ли питание на хаб при старте авто ( 1- да, выключать) (0 - не выключать)
 
byte power_off_OTG_on_starting 1;  // выключать ли массу на OTG при старте авто   ( 1- да, выключать) (0 - не выключать)
 
byte HALL_as_power_Switch 0;       // 0 - используем ДХ как обычно. 1 - вместо ДХ подключаем кнопку питания планшета. Если подключено как КНОПКА, то задержка перед нажатием "кнопки" после включения АСС это SLEEP_timer_pri_vkl_ACC, а после вЫключения  SLEEP_timer_pri_vykl_ACC. Удержание нажатия = vremia_uderjanija_najatoj_knopki_POWER. ДХ = Датчик Холла.  
 
unsigned long  vremia_uderjanija_najatoj_knopki_POWER 250//если HALL_as_power_Switch = 1, то время "зажатия" (нажимания) кнопки питания планшета устанавливаем тут. 500 = 0,5с. 

//НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________
// напряжения должны быть записаны ТОЛЬКО в XX.X формате, например 11.0
  
float Uperezariadki 15.5;              // напряжение, выше которого будет считаться, что идёт перезарядка аккумулятора авто.
  
float UrabotyREM 11.8;                 // напряжение, выше которого будет работать усилитель звука, если акб не садился.
  
float UnevykluczeniaREM 13.7;          // напряжение, когда машина считается заведённой. Тогда, если завели машину, ВКЛЮЧАЕМ REM, и постоянно обнуляем обратный отсчет вырубания РЕМ.
  
float Uakb_Kogda_ACC_vYkluczeno 11.9;  // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вЫключенном АСС
  
float Uakb_Kogda_ACC_vkluczeno 11.1;   // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вКлюченном АСС
  
float UaccONorOFF 10.1;                // напряжение порога сработки асс.  Т.е. если на пин блока питания "вход АСС" подать ниже UaccONorOFF (11,1), то зажигание будет считаться выключенным.
//КОНЕЦ НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________НАСТРОЙКИ Пороговых напряжений!!!!!!!!_________
  
/*счётчики времени*/
  //НАСТРОЙКИ ТАЙМИНГОВ!!!______НАСТРОЙКИ ТАЙМИНГОВ!!!______НАСТРОЙКИ ТАЙМИНГОВ!!!______НАСТРОЙКИ ТАЙМИНГОВ!!!______НАСТРОЙКИ ТАЙМИНГОВ!!!______НАСТРОЙКИ ТАЙМИНГОВ!!!      НАСТРОЙКИ ТАЙМИНГОВ!!!      НАСТРОЙКИ ТАЙМИНГОВ!!!      НАСТРОЙКИ ТАЙМИНГОВ!!!      НАСТРОЙКИ ТАЙМИНГОВ!!!
  
  
unsigned long timeUntilBATOff 345600000;                     // время до выключения питания на батарею планшета после выключения зажигания., считаем ОТ момента выключения зажигания. если прошло 48 часов, как выключили ACC // пауза  (3600000 - 60мин) (60000 - 1 мин)(10800000=3ч) (1800000=5ч)
  
unsigned long timeUntilALLOff 172800000 timeUntilBATOff;   // время до полного выключение блока,  после выключения зажигания (ACC)и уже после того, как выключится питание на батарею планшета    ) (2суток = 172800000)) (4суток = 345600000)
 
unsigned long timeBeforeRemOff 1800000;                            // 1800000=30мин. Время, оставшееся до отключения выхода REM после включения зажигания и незаводки машины. ( то есть сколько времени будет включён усилитель звука, если заглушить машину и просто слушать музыку,  при нормальном АКБ)

 
unsigned long timeAfterACC_starting 7000;                // не может быть меньше REM_timer_pri_vykl_ACC! //задержка перед началом процедуры выключения зажигания во время кручения стартером
 
unsigned long timeAfterACC_accOFF 2000;                  // не может быть меньше REM_timer_pri_vykl_ACC! //задержка перед началом процедуры выключения зажигания во время обычного выключения зажигания
 
unsigned long timeWhileAkbLow 40000;                     // 40000 время, через которое начнётся полное выключение блока когда напряжение на АКБ очень низкое.   /* если севший аккумулятор //через 40с вЫключаем питание на батарею планшета и вырубаем сам БП.*/
 
unsigned long pauseTimeHALL 140000;            // Для первого включения планшета. Раньше этого времени экран не будет тухнуть! Время паузы перед морганием-тушением экрана (для датчика холла)(равен времени загрузки планшета плюс секунд 10-20)= 2мин
 
unsigned long vremia_obnovlenia_displeya 250;  // Время, через которое будет обновляться информация на дисплей I2C  (время обновления I2C дисплея)

//тут настраиваем паузу при вКлючении зажигания ( АСС) и по истечении этого времени активируем/деактивируем  
//соответствующий пин блока питания (время независимо друг от друга)
 
unsigned long  PlanshBAT_timer_pri_vkl_ACC 1100;// пауза  после включения ACC перед включением питания на батарею планшета
 
unsigned long  FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC 1400;// пауза  после включения ACC перед включением +5V (POGO(USB) выхода для пина зарядки планшета (+5В пого или ЮСБ) 
 
unsigned long  OTG_timer_pri_vkl_ACC 50;// пауза  после включения ACC перед включением минуса на OTG ( 4й контакт ЮСБ разъема на планшете)  (включается определение ЮСБ перифирии планшетом.)
 
unsigned long  HUB_timer_pri_vkl_ACC 2100;// пауза  после включения ACC перед подачей питания на хаб. Значение должно быть больше либо равно FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC.
 
unsigned long  REGISTRATOR_timer_pri_vkl_ACC 2500;// пауза  после включения ACC перед включением  питания +12В на видеорегистратор
 
unsigned long  REM_timer_pri_vkl_ACC 2500;// пауза  после включения ACC перед включением  питания +12В на REM (включение усилителя звука)
 
unsigned long  SLEEP_timer_pri_vkl_ACC 3000// пауза  после включения ACC перед включением экрана планшета (масса на Датчик Холла)
 
unsigned long  I_dva_C_szina_ON_time 150;        //Время, через которое I2C шина включится после вКлючения зажигания - начнётся передача по шине I2C.

//тут настраиваем паузу при вЫключении зажигания ( АСС) и по истечении этого времени активируем/деактивируем 
//соответствующий пин блока питания (время независимо друг от друга)
 
unsigned long  OTG_timer_pri_vykl_ACC 2500// пауза  после вЫключения ACC перед вЫключением минуса на OTG ( 4й контакт ЮСБ разъема на планшете) (вЫключается определение ЮСБ перифирии планшетом.)
 
unsigned long  FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC 5000// пауза  после вЫключения ACC перед вЫключением +5V (POGO(USB) выхода для пина зарядки планшета (+5В пого или ЮСБ) 
 
unsigned long  HUB_timer_pri_vykl_ACC 5000// пауза после вЫключения ACC перед убиранием питания с хаба. Значение должно быть меньше либо равно FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC.
 
unsigned long  SLEEP_timer_pri_vykl_ACC 0// пауза  после вЫключения ACC перед вЫключением экрана планшета (масса на Датчик Холла)
 
unsigned long  REM_timer_pri_vykl_ACC 1000;// не может быть больше timeAfterACC_accOFF и timeAfterACC_starting!  Пауза  после вЫключения ACC перед вЫключением  питания +12В на REM (вЫключение усилителя звука), тут 1000 это на сколько раньше выключать выход REM перед остальными выключениями
 
unsigned long  lcd_noBacklight_timer_pri_vykl_ACC 17000// 7000 пауза после вЫключения ACC перед убиранием подсветки I2C LSD дисплея (1602)
 
unsigned long  I_dva_C_szina_OFF_time lcd_noBacklight_timer_pri_vykl_ACC 3000;      //Время, которое I2C шина работает после вЫключения зажигания, потом  - закончится передача по шине I2C.
 
unsigned long  rezerv2 =0;
unsigned long  rezerv3 =0;
unsigned long  rezerv4 =0;
float          rezerv5 =0;
float          rezerv6 =0;
float          rezerv7 =01.01;
 
//конец настроек таймингов.__________________________________________________________________________________________


//К О Н Е Ц      Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
// К О Н Е Ц      Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
//  К О Н Е Ц      Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И  
//   К О Н Е Ц      Н А С Т Р О Й К И      П О Л Ь З О В А Т Е Л Я      П О Д      С В О И      П О Т Р Е Б Н О С Т И 
#include <EEPROM.h>                 // Импортируем библиотеку  
byte kalibrovkaACC =  EEPROM.read(0);  // значение для калибровки для делителя АСС
byte kalibrovkaAKB =  EEPROM.read(1); // значение для калибровки для делителя АКБ


const int nachalnyj_address_dannyh_polzovatelja_v_eeprom 2;                    // Переменная для хранения начального адреса еепром

struct myStruct_Znachenija_peremennyh_i_timingov {                   // Создаем пользовательскую структуру
 
byte reset_HUB_on_power_on;      // передёргивать ли хаб при каждом включении зажигания, для решения проблемы с определением изикапа (STK1160) 1 - после ВКЛ АСС включить хаб, выключить на 0,5с и включить опять. 0 - просто включить хаб.
 
byte power_off_HUB_on_starting ;  // выключать ли питание на хаб при старте авто ( 1- да, выключать)
 
byte power_off_OTG_on_starting;   // выключать ли массу на OTG при старте авто   ( 1- да, выключать)
 
byte HALL_as_power_Switch ;       // 0 - используем ДХ как обычно. 1 - вместо ДХ подключаем кнопку питания планшета. Если подключено как КНОПКА, то задержка перед нажатием "кнопки" после включения АСС это SLEEP_timer_pri_vkl_ACC, а после вЫключения  SLEEP_timer_pri_vykl_ACC. Удержание нажатия = 0,5с. 
  
float Uperezariadki ;              // напряжение, выше которого будет считаться, что идёт перезарядка аккумулятора авто.
  
float UrabotyREM ;                 // напряжение, выше которого будет работать усилитель звука, если акб не садился.
  
float UnevykluczeniaREM ;          // напряжение, когда машина считается заведённой. Тогда, если завели машину, ВКЛЮЧАЕМ REM, и постоянно обнуляем обратный отсчет вырубания РЕМ.
  
float Uakb_Kogda_ACC_vYkluczeno ;  // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вЫключенном АСС
  
float Uakb_Kogda_ACC_vkluczeno ;   // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вКлюченном АСС
  
float UaccONorOFF ;                // напряжение порога сработки асс.  Т.е. если на пин блока питания "вход АСС" подать ниже UaccONorOFF (11,1), то зажигание будет считаться выключенным.
  
unsigned long timeUntilBATOff;                                // 4 байта
  
unsigned long timeUntilALLOff;                                // 4 байта
  
unsigned long timeBeforeRemOff;                               // 4 байта
 
unsigned long timeAfterACC_starting;                                // 4 байта
 
unsigned long timeAfterACC_accOFF ;                                // 4 байта
 
unsigned long timeWhileAkbLow ;                                     // 4 байта
 
unsigned long pauseTimeHALL ;                                       // 4 байта
 
unsigned long vremia_obnovlenia_displeya ;                          // 4 байта
 
unsigned long  PlanshBAT_timer_pri_vkl_ACC;                               // 4 байта
 
unsigned long  FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC;    // 4 байта
 
unsigned long  OTG_timer_pri_vkl_ACC;                                         // 4 байта
 
unsigned long  HUB_timer_pri_vkl_ACC;                                        // 4 байта
 
unsigned long  REGISTRATOR_timer_pri_vkl_ACC;                            // 4 байта
 
unsigned long  REM_timer_pri_vkl_ACC;                                        // 4 байта
 
unsigned long  SLEEP_timer_pri_vkl_ACC;                                    // 4 байта
 
unsigned long  I_dva_C_szina_ON_time;                                        // 4 байта
unsigned long  OTG_timer_pri_vykl_ACC ;                                        // 4 байта
unsigned long  FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC ;// 4 байта
unsigned long  HUB_timer_pri_vykl_ACC;                                        // 4 байта
unsigned long  SLEEP_timer_pri_vykl_ACC;                        // 4 байта
unsigned long  REM_timer_pri_vykl_ACC ;                         // 4 байта
unsigned long  lcd_noBacklight_timer_pri_vykl_ACC ;             // 4 байта
unsigned long  I_dva_C_szina_OFF_time ;                         // 4 байта
unsigned long  vremia_uderjanija_najatoj_knopki_POWER 
unsigned long  rezerv2 ;
unsigned long  rezerv3 ;
unsigned long  rezerv4 ;
float          rezerv5 ;
float          rezerv6 ;
float          rezerv7 ;
};

int RAW_address_eeprom 0;                          // Переменная для хранения адреса для вывода сырых значений еепром
byte RAW_value_eeprom;                               // Переменная для хранения значения для вывода сырых значений еепром


void setup() {
  
Serial.begin(115200);
 
// Serial.flush();
 
while (Serial.available())
    
Serial.read();
delay(50);

myStruct_Znachenija_peremennyh_i_timingov znachenija_polzovatelia[] = // Создаем массив объектов пользовательской структуры из значений, прописанных в скетче в настройках пользователя
{//myStruct_Znachenija_peremennyh_i_timingov znachenija_polzovatelia           
 
{// Создаем массив объектов
  
reset_HUB_on_power_on ,      // передёргивать ли хаб при каждом включении зажигания, для решения проблемы с определением изикапа (STK1160) 1 - после ВКЛ АСС включить хаб, выключить на 0,5с и включить опять. 0 - просто включить хаб.
  
power_off_HUB_on_starting ,  // выключать ли питание на хаб при старте авто ( 1- да, выключать)
  
power_off_OTG_on_starting ,  // выключать ли массу на OTG при старте авто   ( 1- да, выключать)
  
HALL_as_power_Switch ,       // 0 - используем ДХ как обычно. 1 - вместо ДХ подключаем кнопку питания планшета. Если подключено как КНОПКА, то задержка перед нажатием "кнопки" после включения АСС это SLEEP_timer_pri_vkl_ACC, а после вЫключения  SLEEP_timer_pri_vykl_ACC. Удержание нажатия = 0,5с. 
   
Uperezariadki,              // напряжение, выше которого будет считаться, что идёт перезарядка аккумулятора авто.
   
UrabotyREM,                 // напряжение, выше которого будет работать усилитель звука, если акб не садился.
   
UnevykluczeniaREM,          // напряжение, когда машина считается заведённой. Тогда, если завели машину, ВКЛЮЧАЕМ REM, и постоянно обнуляем обратный отсчет вырубания РЕМ.
   
Uakb_Kogda_ACC_vYkluczeno,  // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вЫключенном АСС
   
Uakb_Kogda_ACC_vkluczeno ,  // напряжение, ниже которого АКБ авто будет считаться разряженным (севшим) при вКлюченном АСС
   
UaccONorOFF,                // напряжение порога сработки асс.  Т.е. если на пин блока питания "вход АСС" подать ниже UaccONorOFF (11,1), то зажигание будет считаться выключенным.
   
timeUntilBATOff,                     // время до выключения питания на батарею планшета после выключения зажигания., считаем ОТ момента выключения зажигания. если прошло 48 часов, как выключили ACC // пауза  (3600000 - 60мин) (60000 - 1 мин)(10800000=3ч) (1800000=5ч)
   
timeUntilALLOff ,                    // время до полного выключение блока,  после выключения зажигания (ACC)и уже после того, как выключится питание на батарею планшета    ) (2суток = 172800000)) (4суток = 345600000)
  
timeBeforeRemOff ,                    // 1800000=30мин. Время, оставшееся до отключения выхода REM после включения зажигания и незаводки машины. ( то есть сколько времени будет включён усилитель звука, если заглушить машину и просто слушать музыку,  при нормальном АКБ)
  
timeAfterACC_starting ,               // не может быть меньше REM_timer_pri_vykl_ACC! //задержка перед началом процедуры выключения зажигания во время кручения стартером
  
timeAfterACC_accOFF ,                 // не может быть меньше REM_timer_pri_vykl_ACC! //задержка перед началом процедуры выключения зажигания во время обычного выключения зажигания
  
timeWhileAkbLow,                      // 40000 время, через которое начнётся полное выключение блока когда напряжение на АКБ очень низкое.   /* если севший аккумулятор //через 40с вЫключаем питание на батарею планшета и вырубаем сам БП.*/
  
pauseTimeHALL ,                       // Для первого включения планшета. Раньше этого времени экран не будет тухнуть! Время паузы перед морганием-тушением экрана (для датчика холла)(равен времени загрузки планшета плюс секунд 10-20)= 2мин
  
vremia_obnovlenia_displeya,           // Время, через которое будет обновляться информация на дисплей I2C  (время обновления I2C дисплея)
   
PlanshBAT_timer_pri_vkl_ACC  ,       // пауза  после включения ACC перед включением питания на батарею планшета
   
FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC// пауза  после включения ACC перед включением +5V (POGO(USB) выхода для пина зарядки планшета (+5В пого или ЮСБ) 
   
OTG_timer_pri_vkl_ACC ,              // пауза  после включения ACC перед включением минуса на OTG ( 4й контакт ЮСБ разъема на планшете)  (включается определение ЮСБ перифирии планшетом.)
   
HUB_timer_pri_vkl_ACC ,              // пауза  после включения ACC перед подачей питания на хаб. Значение должно быть больше либо равно FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC.
   
REGISTRATOR_timer_pri_vkl_ACC,       // пауза  после включения ACC перед включением  питания +12В на видеорегистратор
   
REM_timer_pri_vkl_ACC ,              // пауза  после включения ACC перед включением  питания +12В на REM (включение усилителя звука)
   
SLEEP_timer_pri_vkl_ACC,             // пауза  после включения ACC перед включением экрана планшета (масса на Датчик Холла)
   
I_dva_C_szina_ON_time ,              //Время, через которое I2C шина включится после вКлючения зажигания - начнётся передача по шине I2C.
   
OTG_timer_pri_vykl_ACC ,             // пауза  после вЫключения ACC перед вЫключением минуса на OTG ( 4й контакт ЮСБ разъема на планшете) (вЫключается определение ЮСБ перифирии планшетом.)
   
FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC // пауза  после вЫключения ACC перед вЫключением +5V (POGO(USB) выхода для пина зарядки планшета (+5В пого или ЮСБ) 
   
HUB_timer_pri_vykl_ACC ,             // пауза после вЫключения ACC перед убиранием питания с хаба. Значение должно быть меньше либо равно FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC.
   
SLEEP_timer_pri_vykl_ACC ,           // пауза  после вЫключения ACC перед вЫключением экрана планшета (масса на Датчик Холла)
   
REM_timer_pri_vykl_ACC ,             // не может быть больше timeAfterACC_accOFF и timeAfterACC_starting!  Пауза  после вЫключения ACC перед вЫключением  питания +12В на REM (вЫключение усилителя звука), тут 1000 это на сколько раньше выключать выход REM перед остальными выключениями
   
lcd_noBacklight_timer_pri_vykl_ACC,  // 7000 пауза после вЫключения ACC перед убиранием подсветки I2C LSD дисплея (1602)
   
I_dva_C_szina_OFF_time,              //Время, которое I2C шина работает после вЫключения зажигания, потом  - закончится передача по шине I2C.
   
vremia_uderjanija_najatoj_knopki_POWER,
   
rezerv2,
   
rezerv3,
   
rezerv4,
   
rezerv5,
   
rezerv6,
   
rezerv7
 
}// конец Создаем массив объектов
};//myStruct_Znachenija_peremennyh_i_timingov znachenija_polzovatelia

  
if (rejim_raboty_control_lub_zapis == 2)// 2 - обнуляем память процессора ( как если бы поставили новую ардуину)
  
{// 2 - обнуляем память процессора 
       
RAW_address_eeprom =0;
       while (
RAW_address_eeprom EEPROM.length()) {     // Перебираем адреса, до тех пор, пока не перебирем все
    
EEPROM.update(RAW_address_eeprom255);         // 
    //Serial.println("RAW_address_eeprom: "+String(RAW_address_eeprom)+", RAW_value_eeprom: "+String(RAW_value_eeprom));  // Выводим полученное значение в монитор
    
RAW_address_eeprom++;                            // Наращиваем адрес
  
}
  
delay(50);
 
Serial.println (" ");
 
Serial.println (" rejim_raboty_control_lub_zapis == 2"); 
 
Serial.println (" oczistili EEPROM processora"); 
 
Serial.println (" teperb proczitaem czto zapisano v pamiaci"); 
 
Serial.println (" ");
 
delay(50);
  }
// 2 - обнуляем память процессора 
      

 // Записываем все данные в EEPROM. 
 
if (rejim_raboty_control_lub_zapis == 1)// 1 - пишем значения в еепром процессора. 
 
{// 1 - пишем значения в еепром процессора. 
   
EEPROM.update(0,kalibrovkaACC);
   
EEPROM.update(1,kalibrovkaAKB);
   
EEPROM.put(nachalnyj_address_dannyh_polzovatelja_v_eepromznachenija_polzovatelia[0]);    // ПИШЕМ данные в EEPROM из созданной переменной
 
 
delay(50);
 
Serial.println (" ");
 
Serial.println (" rejim_raboty_control_lub_zapis == 1"); 
 
Serial.println (" propisali znaczenia iz sketcha v EEPROM processora"); 
 
Serial.println (" teperb proczitaem czto zapisano v pamiaci"); 
 
Serial.println (" ");
 
delay(50);
 }
// 1 - пишем значения в еепром процессора. 


 
 
  // Теперь данные можно считать
  
myStruct_Znachenija_peremennyh_i_timingov Schitano// В переменную Schitano будем считывать данные из EEPROM
 // for (int i = 0; i < 1; i++) {
 
delay(50);
 
EEPROM.get(nachalnyj_address_dannyh_polzovatelja_v_eepromSchitano);      // Считываем данные из EEPROM в созданную переменную
 
delay(50);
 
// выводим в ком порт значения калибровокделителей асс и акб
Serial.flush();
while (
Serial.available())
    
Serial.read();
 
Serial.println (" ");
  
Serial.println (" "); Serial.println (" "); Serial.println (" ");
  
Serial.print (" kalibrovkaACC = ");  
  
Serial.println  (kalibrovkaACC);
  
Serial.print (" kalibrovkaAKB = ");  
  
Serial.println  (kalibrovkaAKB); 
//  выводим в ком порт значения пользователя, которые прописаны в еепром
  
Serial.print (" reset_HUB_on_power_on = "); 
  
Serial.println  (Schitano.reset_HUB_on_power_on);
  
Serial.print (" power_off_HUB_on_starting = ");
   
Serial.println (Schitano.power_off_HUB_on_starting);
   
Serial.print (" power_off_OTG_on_starting = ");
   
Serial.println (Schitano.power_off_OTG_on_starting);
   
Serial.print (" HALL_as_power_Switch = ");
   
Serial.println (Schitano.HALL_as_power_Switch);
   
Serial.print ("Uperezariadki = ");
   
Serial.println (Schitano.Uperezariadki);
   
Serial.print ("UrabotyREM = ");
   
Serial.println (Schitano.UrabotyREM);
   
Serial.print ("UnevykluczeniaREM = ");
   
Serial.println (Schitano.UnevykluczeniaREM);
   
Serial.print ("Uakb_Kogda_ACC_vYkluczeno = ");
   
Serial.println (Schitano.Uakb_Kogda_ACC_vYkluczeno);
   
Serial.print ("Uakb_Kogda_ACC_vkluczeno = ");
   
Serial.println (Schitano.Uakb_Kogda_ACC_vkluczeno);
   
Serial.print ("UaccONorOFF = ");
   
Serial.println (Schitano.UaccONorOFF);
   
Serial.print ("timeUntilBATOff = ");
   
Serial.println (Schitano.timeUntilBATOff);
   
Serial.print ("timeUntilALLOff = ");
   
Serial.println (Schitano.timeUntilALLOff);
   
Serial.print ("timeBeforeRemOff = ");
   
Serial.println (Schitano.timeBeforeRemOff);
   
Serial.print ("timeAfterACC_starting = ");
   
Serial.println (Schitano.timeAfterACC_starting);
   
Serial.print ("timeAfterACC_accOFF = ");
   
Serial.println (Schitano.timeAfterACC_accOFF);
   
Serial.print ("timeWhileAkbLow = ");
   
Serial.println (Schitano.timeWhileAkbLow);
   
Serial.print ("pauseTimeHALL = ");
   
Serial.println (Schitano.pauseTimeHALL);
   
Serial.print ("vremia_obnovlenia_displeya = ");
   
Serial.println (Schitano.vremia_obnovlenia_displeya);
   
Serial.print ("PlanshBAT_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.PlanshBAT_timer_pri_vkl_ACC);
   
Serial.print ("FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vkl_ACC);
   
Serial.print ("OTG_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.OTG_timer_pri_vkl_ACC);
   
Serial.print ("HUB_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.HUB_timer_pri_vkl_ACC);
   
Serial.print ("REGISTRATOR_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.REGISTRATOR_timer_pri_vkl_ACC);
   
Serial.print ("REM_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.REM_timer_pri_vkl_ACC);
   
Serial.print ("SLEEP_timer_pri_vkl_ACC = ");
   
Serial.println (Schitano.SLEEP_timer_pri_vkl_ACC);
   
Serial.print ("I_dva_C_szina_ON_time = ");
   
Serial.println (Schitano.I_dva_C_szina_ON_time);
   
Serial.print ("OTG_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.OTG_timer_pri_vykl_ACC);
   
Serial.print ("FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.FIVE_Volt_OUT_na_POGO_or_USB_timer_pri_vykl_ACC);
   
Serial.print ("HUB_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.HUB_timer_pri_vykl_ACC);
   
Serial.print ("SLEEP_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.SLEEP_timer_pri_vykl_ACC);
   
Serial.print ("REM_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.REM_timer_pri_vykl_ACC);
   
Serial.print ("lcd_noBacklight_timer_pri_vykl_ACC = ");
   
Serial.println (Schitano.lcd_noBacklight_timer_pri_vykl_ACC);
   
Serial.print ("I_dva_C_szina_OFF_time = ");
   
Serial.println (Schitano.I_dva_C_szina_OFF_time);
   
Serial.print ("vremia_uderjanija_najatoj_knopki_POWER = ");
   
Serial.println (Schitano.vremia_uderjanija_najatoj_knopki_POWER);   
   
Serial.print ("rezerv2 = ");
   
Serial.println (Schitano.rezerv2);
   
Serial.print ("rezerv3 = ");
   
Serial.println (Schitano.rezerv3);   
   
Serial.print ("rezerv4 = ");
   
Serial.println (Schitano.rezerv4);    
   
Serial.print ("rezerv5 = ");
   
Serial.println (Schitano.rezerv5);   
   
Serial.print ("rezerv6 = ");
   
Serial.println (Schitano.rezerv6);
   
Serial.print ("rezerv7 = ");
   
Serial.println (Schitano.rezerv7); 
 
    
delay (3000); // задержка
// теперь выводим сырые данные еепром 
      
Serial.println (" ");
           
Serial.println (" ");
   
Serial.println ("teper' wywodim syryje dannyje eeprom");
        
Serial.println (" ");
        
RAW_address_eeprom 0;
 while (
RAW_address_eeprom EEPROM.length()) {     // Перебираем адреса, до тех пор, пока не перебирем все
    
RAW_value_eeprom EEPROM.read(RAW_address_eeprom);         // Считываем значение байта
    
Serial.println("RAW_address_eeprom: "+String(RAW_address_eeprom)+", RAW_value_eeprom: "+String(RAW_value_eeprom));  // Выводим полученное значение в монитор
    
RAW_address_eeprom++;                            // Наращиваем адрес
  
}
   
Serial.println (" ");
   
Serial.println (" ");
   
Serial.println (" ");
   while (
Serial.available())
    
Serial.read();
   
}


void loop() {}
//vers 1.0 270518_2009 
oleg707 вне форума   Ответить с цитированием