Не запускается скетч после ночи без перепрошивки.

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Всем доброго дня.

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



// Версия от 20.04.20.
// Работают мотор и сервы, свет, поворотники, допсигнал. 
// Добавлена TB6612FNG
// Версия 03.00


#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>      
#include <U8g2lib.h>

//const 
uint64_t pipeIn = 0xE8E8F0F001LL;     //Remember that this code is the same as in the transmitter
RF24 radio(A0, A1);  //CSN and CE pins

int recieved_data[11];         // массив принятых данных

// The sizeof this struct should not exceed 32 bytes
 
// #define DEBUG // Если не закомментированно, то, Serial.print() актевен! Только для отладки!!
// #define DEBUG2 // Если не закомментированно, то, Serial.print() актевен! Только для отладки!!
// #define DEBUG3
// #define PROCTIME   // закомментировать после отладки
// #define SERVOCHECK

int consumption = 5;              // расходы, максимальная скорость
int thortle;                      // уровень газа
int steering;                     // положение руля
int oldSpeed;                     // предыдущее значение скорости
int tailLight;                    // задние габариты
int motorSpeed;                   // текущая скорость
int oldMotorSpeed;                // переменная предыдущей скорости
int maxSpeed;                     // максимальная скорость
int angleSteering = 0;            // переменная для хранения угла поворота сервы

boolean leftTurn = false;         // левый поворотник
boolean rightTurn = false;        // правый поворотник
boolean headLight = false;        // Фары
boolean specialLight = false;     // спецсигнал
boolean brakeLight = false;       // стопсигнал
boolean statusTurn = false;       // флажок поворотников

boolean lostCommand = false;      // флажок потери сигнала
boolean motorStoped = true;       // флажок остановленного мотора

// #define PIN_MOTOR_11 A7           // Пин 1 мотора 1
// #define PIN_MOTOR_12 A6           // Пин 2 мотора 1
#define PIN_MOTOR_1_SPEED 3       // пин ШИМ мотра 1
// #define PIN_MOTOR_21 A5           // пин 1 мотора 2
// #define PIN_MOTOR_22 A4           // пин 2 мотора 2
#define PIN_MOTOR_2_SPEED 5       // пин ШИМ мотора 2
#define PIN_STEERING 10           // пин сервы
#define PIN_HEAD_LIGHT A2         // пин фар
#define PIN_LEFT_TURN 2           // пин левого поворотника
#define PIN_RIGHT_TURN 4          // пин правого поворотника
#define PIN_TAIL_LIGHT 6          // пин задних огней
#define PIN_SPECIAL_LIGHT 1       // пин спецсигнала
//#define PIN_VOLT A3               // пин вольтметра
#define INTERVAL  800UL           // частота моргания поворотников

Servo frontWheel;                 // Сервопривод руля
Servo motor;                      // Контроллер скорости мотора


void reset_the_Data() 
{
  // 'safe' values to use when NO radio input is detected
  recieved_data[0] = 127;
  recieved_data[1] = 127;
  recieved_data[2] = 127;
  recieved_data[3] = 0;         //Throttle (channel 1) to 0
  recieved_data[4] = 0;
  recieved_data[5] = 1;
  recieved_data[6] = 1;
  recieved_data[7] = 1;
  recieved_data[8] = 1;
  recieved_data[9] = 1;
  recieved_data[10] = 1;

// Обнуляем значения на потребителях

//    set_Turn();
//    set_Motor();
//    set_Steering();

 set_Commands();
 
    leftTurn = true;                      // Включаем аварийку
    rightTurn = true;                     //
    lostCommand = true;
}

/**************************************************/

void setup()
{

  // пины для драйвера мотора
//  pinMode(PIN_MOTOR_11, OUTPUT);       // мотор, выход 1
//  pinMode(PIN_MOTOR_12, OUTPUT);       // мотор, выход 2
  pinMode(PIN_MOTOR_1_SPEED, OUTPUT);  // ШИМ мотора
  pinMode(PIN_STEERING, OUTPUT);       // рулевая
  pinMode(PIN_HEAD_LIGHT, OUTPUT);     // фары
  pinMode(PIN_LEFT_TURN, OUTPUT);      // левый поворотник
  pinMode(PIN_RIGHT_TURN, OUTPUT);     // правый поворотник
  pinMode(PIN_TAIL_LIGHT, OUTPUT);     // задние огни
  pinMode(PIN_SPECIAL_LIGHT, OUTPUT);  // спецсигнал



  frontWheel.attach(PIN_STEERING);         // прикрутили рулевую серву к пину рулевого управления
  motor.attach(PIN_MOTOR_1_SPEED);         // прикрутили контроллер скорости
  Serial.begin(9600);

//We reset the received values
//  reset_the_Data();

  //Once again, begin and radio configuration
  radio.begin();
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);  
  radio.openReadingPipe(1,pipeIn);
  
  //We start the radio comunication
  radio.startListening();

}

/**************************************************/

unsigned long lastRecvTime = 0;

////////////////////////////////////////////
void receive_the_data() // получение команды
{
  while ( radio.available() ) {
  radio.read( &recieved_data, sizeof(recieved_data));
  lastRecvTime = millis(); //Here we receive the data
  }
}

/**************************************************/

void loop()
{

//#ifdef PROCTIME              // Проверяем, сколько времени занимает выполнение функции
//  long processTime = millis();
//#endif 
  
  //Получаем коммаду по радио
  receive_the_data();
  // Печатаем, что получили
  print_Data();
  // Присваиваем полученное переменным
  set_Commands(); 
//////////This small if will reset the data if signal is lost for 1 sec.
/////////////////////////////////////////////////////////////////////////
  unsigned long now = millis();
  if ( now - lastRecvTime > 1000 ) {
    // signal lost?
    reset_the_Data();
    //Go up and change the initial values if you want depending on
    //your aplications. Put 0 for throttle in case of drones so it won't
    //fly away
    } 
  
#ifdef PROCTIME
  Serial.print("Execution time: \t\t\t");
  Serial.print(millis() - processTime);
  Serial.println(" ms\n");
#endif


}//Loop end

// Функция управления мотором. Так же здесь идёт управление зависящим от скорости оборудованием.


void set_Motor(){

int curSpeed;          // текущая скорость
//    oldMotorSpeed = 0;
    
 #define THORTLE_MIN  0
 #define THORTLE_MID  127
 #define THORTLE_MAX  255

// скорость
 #define SPEED_MIN  0
 #define SPEED_MID  90
 #define SPEED_MAX  180
 #define GAPE  5


if (lostCommand == true) {thortle = THORTLE_MID;}  // если потерян сигнал, стоп

   curSpeed = (map(thortle, THORTLE_MIN, THORTLE_MAX, 0, 180));
   motor.write(curSpeed);

   motorSpeed = 90 - curSpeed;
   motorSpeed =  abs(motorSpeed);
   
#ifdef DEBUG2
    Serial.print ("Speed= ");
    Serial.print (motorSpeed);
#endif

     if (motorSpeed <= GAPE )  // Стоп
  {
    brakeLight = true;                                           // включаем стопсигнал
    setLights();
    oldMotorSpeed=motorSpeed;

#ifdef DEBUG2
    Serial.println(" Stop  ");
#endif    
  }

     if (motorSpeed < oldMotorSpeed )  // Стоп
  {
    brakeLight = true;                                           // включаем стопсигнал
    setLights();
    oldMotorSpeed=motorSpeed;

#ifdef DEBUG2
    Serial.println(" Brake  ");
#endif    
  }

       if (motorSpeed > oldMotorSpeed )  // Стоп
  {
    brakeLight = false;                                           // выключаем стопсигнал
    setLights();
    oldMotorSpeed=motorSpeed;

#ifdef DEBUG2
    Serial.println(" Thortle  ");
#endif    
  }
   

/*  
    {motorSpeed= map (thortle, THORTLE_MIN,THORTLE_MID, 255, 80);             // устанавливаем максимальную скорость
    if ( oldMotorSpeed - 5 > motorSpeed) { brakeLight = true;}   // проверяем скорости. если старая скорость больше, то включаем стопсигнал
    else
    { brakeLight = false;} // гасим стопсигнал
    setLights();
    oldMotorSpeed=motorSpeed;
#ifdef DEBUG2
    Serial.print ("Forward  ");
    Serial.println (motorSpeed);
#endif

 }

  if (thortle >= THORTLE_MID - GAPE && thortle <= THORTLE_MID+GAPE)                          // Стоп
  {
    oldMotorSpeed = 0;
    brakeLight = true;                                           // включаем стопсигнал
    setLights();
    motorStoped = true;
    oldMotorSpeed=motorSpeed;

#ifdef DEBUG2
    Serial.println("Stop  ");
#endif
    
 }
 
  if (thortle > THORTLE_MID + GAPE)                                              // Крутим моторчик назад
  {motorSpeed= map (thortle, THORTLE_MID,THORTLE_MAX, 80, 255);
    if ( oldMotorSpeed - 5 > motorSpeed) { brakeLight = true;} // проверяем скорости. если старая скорость больше, то включаем стопсигнал
    else
    { brakeLight = false;}       // гасим Стопсигнал
    setLights();

  }
*/
#ifdef SERVOCHECK
    Serial.print("thortle");
    Serial.print(" ");
    Serial.print(motorSpeed);
    Serial.print(" ");

 #endif

}


void set_Motor_1(){

int SPEED_STEP = 20;   // шаг прироста скорости
int maxSpeed;          // максимальная скорость
#define THORTLE_MAX 250
#define THORTLE_MID 127
#define THORTLE_MIN 0
#define GAPE 10
    maxSpeed = 255; //150 + (SPEED_STEP * (consumption)); // расчет максимальной скорости в зависимости от "расходов"
    

// проверяем значение потенциометра

  if (lostCommand == true) {thortle = THORTLE_MID; }           // Если потерян сигнал, стоп

  if (thortle < THORTLE_MID - GAPE)                                             // Крутим моторчик вперед

  {motorSpeed= map (thortle, THORTLE_MIN,THORTLE_MID, maxSpeed, 80);             // устанавливаем максимальную скорость
//    digitalWrite (PIN_MOTOR_11, LOW);                             // подаем напругу
//    digitalWrite (PIN_MOTOR_12, HIGH);                            // на нужные пины
//      if (motorStoped == true) {analogWrite (PIN_MOTOR_1_SPEED, 150); // если мотор стоял, даем пинок напругой
 //        delay(50);                                             // ждем чуток
//         motorStoped = false;                                    // меняем флажок, что мотор крутится
//      }
//    motor.write (motorSpeed);                   // задаем скорость
//   analogWrite (PIN_MOTOR_1_SPEED, motorSpeed);                   // задаем скорость
    if ( oldMotorSpeed - 5 > motorSpeed) { brakeLight = true;}   // проверяем скорости. если старая скорость больше, то включаем стопсигнал
    else
    { brakeLight = false;} // гасим стопсигнал
    setLights();
    oldMotorSpeed=motorSpeed;
#ifdef DEBUG2
    Serial.print ("Forward  ");
    Serial.println (motorSpeed);
#endif

 }

  if (thortle >= THORTLE_MID - GAPE && thortle <= THORTLE_MID+GAPE)                          // Стоп
  {
//   digitalWrite (PIN_MOTOR_11, LOW);
//   digitalWrite (PIN_MOTOR_12, LOW);
    oldMotorSpeed = 0;
    brakeLight = true;                                           // включаем стопсигнал
    setLights();
    motorStoped = true;
    oldMotorSpeed=motorSpeed;

#ifdef DEBUG2
    Serial.println("Stop  ");
#endif
    
 }
 
  if (thortle > THORTLE_MID + GAPE)                                              // Крутим моторчик назад
  {motorSpeed= map (thortle, THORTLE_MID,THORTLE_MAX, 80, maxSpeed);
//    digitalWrite (PIN_MOTOR_11, HIGH);
//    digitalWrite (PIN_MOTOR_12, LOW);
//         if (motorStoped == true) {analogWrite (PIN_MOTOR_1_SPEED, 150); // если мотор стоял, даем пинок напругой
//         delay(500);                                             // ждем чуток
//         motorStoped = false;                                    // меняем флажок, что мотор крутится
//      }
//    analogWrite (PIN_MOTOR_1_SPEED, motorSpeed); 
    motor.write (motorSpeed);                   // задаем скорость
    if ( oldMotorSpeed - 5 > motorSpeed) { brakeLight = true;} // проверяем скорости. если старая скорость больше, то включаем стопсигнал
    else
    { brakeLight = false;}       // гасим Стопсигнал
    setLights();
#ifdef DEBUG2
    Serial.print ("Rear  ");
    Serial.println (motorSpeed);
#endif
    oldMotorSpeed=motorSpeed;
 }
}
// Функция управления сервой руля. Здесь так же можно выставить ограничения на углы поворота

void set_Steering(){

#define WHEEL_MIN  0
#define WHEEL_MID  127
#define WHEEL_MAX  255

// угол поворота руля
#define ANGLE_MIN  60
#define ANGLE_MID  90
#define ANGLE_MAX  120
#define GAPE  5

  // нейстраль 406
  // максимум право 63
  // максимум лево 672

if (lostCommand == true) {steering = WHEEL_MID;}  // если потерян сигнал, руль прямо

// if(steering < WHEEL_MID - GAPE) {
   frontWheel.write(map(steering, WHEEL_MIN, WHEEL_MAX, ANGLE_MIN, ANGLE_MAX));
//      }

#ifdef SERVOCHECK
    Serial.print(steering);
    Serial.print(" ");
    Serial.println(map(steering, WHEEL_MIN, WHEEL_MAX, ANGLE_MIN, ANGLE_MAX));

#endif

}

void setLights() {
  
// проверяем состояние фар,

if (headLight == true) {
  analogWrite(PIN_HEAD_LIGHT, 255); // включаем фары
  analogWrite(PIN_TAIL_LIGHT, 60); // включаем задние габариты
//#ifdef DEBUG
//    Serial.print("Head Light ON  ");
//#endif      
  
   }
   else {
  analogWrite(PIN_HEAD_LIGHT, 0); // включаем фары
  analogWrite(PIN_TAIL_LIGHT, 0); // включаем задние габариты

#ifdef DEBUG3
    Serial.println("Head Light is OFF  ");
#endif   
  
  }
         
// прверяем состояние стоп огней

if (brakeLight == true) {
    analogWrite(PIN_TAIL_LIGHT, 255); // включаем стоп-огни

//#ifdef DEBUG2
//    Serial.print("Brake Light ON  ");
//#endif          

   }

// Проверяем состояние спецсигнала
if (specialLight == true) {
  analogWrite(PIN_SPECIAL_LIGHT, 255); // включаем спецсигнал
   }
   else {
      analogWrite(PIN_SPECIAL_LIGHT, 0); // тушим спецсигнал
   }

//////
 
#ifdef DEBUG3
    Serial.println("Special Light is ON  ");
#endif   

  }

void set_Turn()       // функция моргания поворотниками.
                     // пусть работает постоянно
{
  static unsigned long previousMillis = 0;        // храним время последнего переключения светодиода
    //проверяем не прошел ли нужный интервал, если прошел то
  if(millis() - previousMillis > INTERVAL) {
    // сохраняем время последнего переключения
    previousMillis = millis();  
    // меняем состояние выхода светодиода на противоположное текущему. 
    // если горит - тушим, не горит - зажигаем.
    statusTurn=!statusTurn;
//#ifdef DEBUG
//    Serial.println(statusTurn);
//#endif      
    

  }
  
    // проверяем, нужно ли включать поворотники, если нужно, то включаем  
    if (leftTurn == true) {digitalWrite(PIN_LEFT_TURN,statusTurn);

//#ifdef DEBUG
//    Serial.print("Left turn ON  ");
//#endif      

    } 
    else {digitalWrite(PIN_LEFT_TURN,LOW);
//#ifdef DEBUG
//    Serial.print  ("Left turn OFF");
//#endif      
    

        }
    if (rightTurn == true) {digitalWrite(PIN_RIGHT_TURN,statusTurn);
//#ifdef DEBUG
//    Serial.print("Right turn ON  ");
//#endif      

    }
    else {digitalWrite(PIN_RIGHT_TURN,LOW);
//#ifdef DEBUG
//    Serial.println("Right turn OFF  ");    
//#endif      

    } 
}

// Данная функия нужна исключительно для проверки работы приёмника во время наладки. 
void print_Data()
{
#ifdef DEBUG
  Serial.print ("J1 X ");
  Serial.print (recieved_data[0]);
  Serial.print (" J1 Y "); 
  Serial.print (recieved_data[1]);
  Serial.print (" J2 X ");
  Serial.print (recieved_data[2]);
  Serial.print (" J2 Y ");
  Serial.print (recieved_data[3]);
  Serial.print (" pot ");
  Serial.print (recieved_data[4]);
  Serial.print (" Sw_11 ");
  Serial.print (recieved_data[5]);
  Serial.print (" Sw_12 ");
  Serial.print (recieved_data[6]);
  Serial.print (" Sw_21 ");
  Serial.print (recieved_data[7]);
  Serial.print (" Sw_22 ");
  Serial.print (recieved_data[8]);
  Serial.print (" Sw_31 ");
  Serial.print (recieved_data[9]);
  Serial.print (" Sw_32 ");
  Serial.println (recieved_data[10]);
#endif
}

void set_Commands() {

// Отработка полученных данных 
  consumption = 5;            // расходы       
  specialLight = recieved_data[10];    // спецсигнал
  headLight = recieved_data[9];       // фары
    setLights();                      // отрабатываем состояние фар

  rightTurn = recieved_data[6];      // правый поворотник
  leftTurn = recieved_data[5];       // Левый поворотник
    set_Turn();                      // Отрабатываем состояние поворотников
  
  steering = recieved_data[0];       // записываем положение руля
    set_Steering();                  // отрабатываем состояние руля
  
  thortle = recieved_data[1];        // Записываем газ
    set_Motor();                     // отрабатываем состояние газа
}

 

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

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

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Вопрос понят, отвечаю.

sadman41 пишет:
Именно за ночь вытекает из ардуины скетч? Или в какое-то конкретное время - например, в полночь?

За ночь - понятие условное. С учетом удаленно-самоизолированного графика работы, допиливание скетча и передача оборудования для тест-драйва подрастающему поколению происходит в вечернее время суток. Как следствие, около часа на тест и на полку, спать. Конкретное время вытекания скетча из ардуины установить не удалось. Весьма предположительно, что это происходит между 03:40 и 04:40. Может не без участия кошки.

sadman41 пишет:
Другие скетчи так же себя ведут? А если под замок запирать?

Скетчи в других (рукоблуд)поделках ведут себя менее революционно. И тихонечко ждут своей очереди для использования.

Гриша
Offline
Зарегистрирован: 27.04.2014

врядли скетч виноват, весь смотреть смысла нет - время убивать. если отключить питание "полностью" минут на 10 есть проблемы?

меняйте камень, и сколько % занимает скетч? ну для очистки совести перепрошейте загрузчик. И да, бывало, что скетч слетал без объявления причин, даже 2 раза. 

inspiritus
Offline
Зарегистрирован: 17.12.2012

И чо было то ?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Гриша пишет:

И да, бывало, что скетч слетал без объявления причин, даже 2 раза. 

Парурас)))

Гриша, чот я нипонял: сначала пишешь шо не скечч, патом пишешь шо скечч да ещё парурас))) И как это понять???

А для кантролю целостности скечча сваяй простеццкую процедурку суммирования флеша начиная с конца (RWW-1) и до вектора reset (вся область флеша без бута) и выводи её хоть в сериал, хоть куда ещё. Ну или можешь сравнивать её с заранее посчитанным результатом. Этот фокус так-же очень хорош от "умникоф" , которые меняют чото в *.hex

Лично у меня прошивки ещё ниразу не "сыпались" )))

Гриша
Offline
Зарегистрирован: 27.04.2014

-NMi- пишет:

Лично у меня прошивки ещё ниразу не "сыпались" )))

DS18B20 + tm1637  и все ... после года непрерывной работы отказались реагировать - не мудрствуя лукаво накатил прошивку... До этого поменял кондер на БП (не запустились, вот он точно был дохлый) уже как год пашет после ремонта. Другим разом потерял на Atmega8 но там деталек поболее, после проверки напряжений на контрольных точках, залил тестовый, все работает. Залил рабочий все заработало. Оба случая после отключения Э/Э чего не должно быть. Чем разбираться и  сравнивать - проще было по тесту прогнать... ИМХО 

Скил кодера МК слабо прокачен... 

-NMi-
Offline
Зарегистрирован: 20.08.2018

чотам кодить-то?  )))

            clr r9
            clr r10
            clr r11
            clr r12
            clr r13
            clr r30
Crc_10:
            lpm r0,z+
            add r10,r0
            adc r11,r9
            adc r12,r9
            adc r13,r9
            cpi r31,&h38
            brlo crc_10

            sts {Cpu_crc32},r10
            sts {Cpu_crc32+1},r11
            sts {Cpu_crc32+2},r12
            sts {Cpu_crc32+3},r13

 

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Думаю, что проблема в другом.

Это скетч управления машинкой. А для ее управления нужен пульт. Пульт питается от 4х АА. Батареи новые. При замере сборка выдает 7 вольт. При включении питания пульта напряжение падает до 4 вольт. Ток 0.25А... Другая ардуина без nrf берет 0.2А.

Теперь вопрос. Как победить просадку питания?

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

vdm пишет:

При включении питания пульта напряжение падает до 4 вольт. Ток 0.25А... Другая ардуина без nrf берет 0.2А.

похоже в схеме напортачили, выкладывайте схему, что за ардуина у вас такая, что потребляет 0.2А. Стандартная Нано или Уно должна потреблять в 3-4 раза меньше

ВН
Offline
Зарегистрирован: 25.02.2016

-NMi- пишет:
Лично у меня прошивки ещё ниразу не "сыпались" )))

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

Т.е. малая вероятность это не нулевая вероятность, а пути ТЗЧ неисповедимы. 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Пипец - а прошить с утра и вечером проверить? Троллинг?

Green
Offline
Зарегистрирован: 01.10.2015
vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

b707 пишет:

похоже в схеме напортачили, выкладывайте схему, что за ардуина у вас такая, что потребляет 0.2А. Стандартная Нано или Уно должна потреблять в 3-4 раза меньше

Да какая схема? Пустая ардуина, без ничего. Правда амперметр DT838...

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

mykaida пишет:

Пипец - а прошить с утра и вечером проверить? Троллинг?

Наоборот. Но не ссуть...

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Коллеги, а вы смотрели Фиксиков? У них есть прекрасная песня про Батарейку.

Есть пульт, которым управляется афтомобиль. У пульта за зиму сели батарейки (АА). Я открываю крышку пульта и меняю 4 батарейки. Переделываю прошивку машины, прошиваю ее, и она работает. Вечером отдаю детЯм, они гоняют, ставят на ночь на полку. Проходит ночь, утром удаленная школа, у меня работа, к вечеру достаем машину опять. А она - не але. Пульт включается экранчик светицца. Да и батарейки я недавно менял. Значит проблема в машине. Перепрошиваю машину, она опять немного ездит... А в один прекрасный момент - пульт не заводицца. Мерю мультиметром, батареи 1.4В, но при включении питания пульта напряжение дико садится до 3-4 вольт. Соответвтенно, ардуина на стартует, nrf молчит... 
 

Думаю, что АА - архаизм, и пора менять на 18650, разбираю пульт, а там блок батарей на 8 штук! 4 я заменил, а 4 - прошлогодние...

Заменил все. Работаит!!! Сегодня ночью оставлю на ночь. Утром проверю. Но что-то мне подсказывает, что колдунства больше не будет и все будет работать нормально.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Вот и славно. Чудес не бывает, а х*ня случается.

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

Странно это все. Прям уфология. 328й МК до 3V работает по даташиту. Да и от глюков при падении напряжения его какой-то правильно выставленный фьюз brown-out защищает.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

sadman41 пишет:
Прям уфология. 328й МК до 3V работает по даташиту.

Никакой уфологии. Это наверно на Vin такое напряжение, вот и не работает... 

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

inspiritus пишет:

Вот и славно. Чудес не бывает, а х*ня случается.

Золотые слова, Бронеслав Бенедиктович!

Нужно запомнить эту простую, но мудрую фразу.

В общем, утром включаю! и О чудо! Все работает. 

Спасибо за поддержку и форумскую мудрость!