Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите распознать кусок кода.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 25, 2024 13:41:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите распознать кусок кода.
СообщениеДобавлено: Ср фев 28, 2018 12:46:48 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
Коты ситуация такая.
Год назад мне один товарищ подогнал схемку автопрогрева двигателя на меге8, но он сразу предупредил, прога есть, написана, но в железе не проверялась. Накидал я ее в протеусе, вроде работает. Собрал схемку работает, но заметил несколько косяков. Написал автору он ответил что будет время загляну, и тишина. Думаю что ждать, залез сам порылся кое что подправил, но один остался, не такой он важный но остался. Так как С знаю на троечку столкнулся с одной настройкой, таймера/счётчика.
Вот этот кусок кода.
TCNT1H=0xE795 >> 8;
TCNT1L=0xE795 & 0xff;
В общем то понятно, за что эти настройки отвечают, но не могу понять что обозначают эти цифры E795
Ребята подскажите!

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


Последний раз редактировалось Акма Ср фев 28, 2018 20:10:24, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Ср фев 28, 2018 13:02:03 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
эта запись равна TCNT1=0xE795;

Добавлено after 1 minute 47 seconds:
просто сначала автор выделил из числа старший байт и записал его в старший разряд счетчика, а затем младший
ПС: хоть бы число задефайнил, чтоб менять его в одном месте.

Добавлено after 1 minute 40 seconds:
а эта цифра - просто начальная точка счёта этого счетчика, чем она больше, тем раньше случится определяемое счетчиком событие

Добавлено after 1 minute 7 seconds:
подробней написать не могу - отсюда не видно :)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Ср фев 28, 2018 20:05:39 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
Добавлено after 1 minute 7 seconds:
подробней написать не могу - отсюда не видно :)[/uquote]
Спасибо!
Что для этого нужно? я имею в виду чтоб узнать поподробнее.

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Ср фев 28, 2018 22:35:51 
Нашел транзистор. Понюхал.

Зарегистрирован: Пн апр 25, 2016 15:43:23
Сообщений: 197
Откуда: Россия , Воронеж
Рейтинг сообщения: 0
Цитата:
Спасибо!
Что для этого нужно? я имею в виду чтоб узнать поподробнее.


Тебе уже ответили для установки начального значения таймера 1.

Хотя в at7 можно сразу записать так
TCNT1=0xE795;
или так TCNT1=59285; Но в любом случае , 16 битный таймер в мгновение ока обнулится т.к. досчитать до 65к даже причастоте в пару КГц , не долго.
Кстатетак же можно и считывать значение int32_t tic=TCNT1; - присвоит переменной tic текущее значение таймера.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Ср фев 28, 2018 22:52:22 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ravor писал(а):
int32_t tic=TCNT1;
Неудачный пример.
1. Неатомарно для 8-ми битников.
2. Слишком жирно 32 бита выделять для 16-ти битного значения.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Чт мар 01, 2018 04:10:15 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Что для этого нужно? я имею в виду чтоб узнать поподробнее.
по этому куску больше не сказать, надо больше кусок... или весь код, и очень желательно с описанием того, что он делает неправильно.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Чт мар 01, 2018 12:49:31 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3318901#p3318901"...просто сначала автор...[/uquote]
действовал согласно даташиту, т.е. сначала записал старший байт, а потом младший. И невдомёк ему было, что компилятор сам разберётся что когда писать. Перфекционист, однако. Автор, не компилятор. Последний при рождении уже перфекционист.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Чт мар 01, 2018 13:11:45 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
да, согласно даташиту, но, не вынеся константу, заботливо разложил грабли для невнимательных... трудно было сделать #define , осмысленное название и комментарий?

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Чт мар 01, 2018 16:43:59 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
... трудно было сделать...?

Каждый дрочит как он хочет.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Чт мар 01, 2018 18:53:59 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
Алгоритм прожки. От себя! Приехал, заглушил двигло, включаешь девайс, тянешь ручник, прога в ожидании понижения температуры, на сколько выставишь от 0 до -20.
После включения, устройство переходит в режим постоянного измерения температуры.
При снижении температуры двигателя ниже установленной (-20 ... 0 град.), устройство включает зажигание и
производит запуск двигателя. Стартер включается на время не более 5 сек. С момента запуска стартера, контроллер
анализирует состояние выводов "Генератор" и "Тахометр". Если по входу "Генератор" напряжение станет больше 9 В
или число оборотов по входу "Тахометр" возрастет более 500 об/мин. контроллер отключает стартер.
После запуска двигателя, контроллер продолжает измерять температуру, напряжение генератора, частоту вращения и
состояние вывода "Выкл. СТОП-СИГНАЛА". По достижении температуры равной 70-ти градусам, устройство глушит двигатель.
Если во время работы двигателя нажать на педаль тормоза, то управление перейдет на водителя, поэтому до нажатия
на педаль необходимо вставить ключ зажигания и повернуть его, иначе двигатель заглохнет, т.к. разомкнется ключ на
транзисторе VT7. Индикация режима прогрева двигателя осуществляется с помощью поворотников автомобиля, которые
загораются на 1 сек. с периодом в 5 сек.

Если двигатель не завелся или заглох, контроллер через 10 сек. повторяет попытку запуска. После 5 неудачных попыток,
запуск двигателя прекращается до момента как двигатель будет запущен вручную, или будет произведено вкл./выкл.
устройства.

Автор пишет: Если двигатель не завелся или заглох, контроллер через 10 сек. повторяет попытку запуска. После 5 неудачных попыток,
запуск двигателя прекращается до момента как двигатель будет запущен вручную, или будет произведено вкл./выкл.

Все работает!! но вот это мне не нравится.
Если двигатель завелся проработал какое то время и нечаянно ЗАГЛОХ. Прога все равно сигналит поворотами и зажигание остается включенным. Так как двигатель не работает а электропитание остается включенным, в последствии приходишь к своему коню а акум мертвый или не дай бог что еще хуже. Я считаю что девайс после того как двигло заглохло, должен уйти в спячку, пока его не перезапустят ON/OF
Ребята вот сам код. Схема прикреплена в низу.
Спойлер
Код:
#include <mega8.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60  // опорный источник AVCC

#define POVOROT PORTB.0
#define STARTER PORTB.1
#define ZAJIGANIE PORTB.2
#define TAHOMETR PIND.3 // прерывание INT1
#define TORMOZ PINC.2
#define V_GEN 0 // напряжение генератора, порт АЦП
#define L_TEMP 1 // порог температуры, порт АЦП
#define STOP_ PINC.4 // вход кнопки стояночного тормоза
#define DIST_ST PINC.5 // отрицательный вход дистанционного запуска
#define SENS_OFF PORTB.4 // выход отклучения датчика удара

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x15 ;PORTC
   .equ __w1_bit=3
#endasm
#include <1wire.h>

// DS18B20 Temperature Sensor functions
#include <ds18b20.h>

bit timer_1s = 0;
bit timer_100ms = 0;
bit pusk = 0; // идет запуск двигателя
bit ind_on = 0; // включение индикации
//bit enable = 1; // разрешение работы
bit old_dist_st = 1; // предидущее состояние входа дист. запуска

unsigned int gen_volt = 0; // напряжение генератора с АЦП в милливольтах
float temp_level = 0; // уровень температуры включения в градусах -20 ... 0
float temperature = 100; // температура, считанная с датчика
unsigned char starter_timer = 0; // кратно 100 мс
unsigned char ind_count = 0;
unsigned int tahometr_count = 0; // счетчик оборотов
unsigned int tahometr_speed = 0;
unsigned char starter_count = 0; // количество попыток завестись
unsigned char timer_10s = 0;
unsigned char delay_timer = 0;

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)   // Прерывание каждые 100 миллисекунд
{
static unsigned char t1=0;
// Reinitialize Timer1 value
TCNT1H=0xE795 >> 8;
TCNT1L=0xE795 & 0xff;
// Place your code here
timer_100ms = 1;

if (starter_timer)
  {
  starter_timer--;
  STARTER = 1;
  }
else
  {
  if (STARTER) // если был запущен
    {
    STARTER = 0;
    if (starter_count)
      {
      starter_count--;
      timer_10s = 11;
      }
    else // после 5 попыток выключаем все
      {
      ZAJIGANIE = 0;
      STARTER = 0;
      POVOROT = 0;
      }
    }
  }

if (delay_timer) delay_timer--; // счетчик задержки
if (delay_timer == 1)
 {
 delay_timer = 0;
 SENS_OFF = 0; // включаем датчик
 }

if (++t1 > 9) // раз в секунду
 {
 t1 = 0;
 timer_1s = 1;
 tahometr_speed = tahometr_count;
 tahometr_count = 0; 
 }
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
tahometr_count++; // считаем импульсы
}

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

void Start_engine(void)
{
if ((STOP_ == 0) && (pusk == 0)) // стояночный тормоз взведен
 {
 if (gen_volt < 9000) // если двигатель не запущен
  {
  pusk = 1; // начинаем процесс
  ZAJIGANIE = 1; // включаем зажигание
  starter_timer = 50; // 5 секунд на работу стартера
  starter_count = 4;
  SENS_OFF = 1; // выключаем датчик удара
  }
 }
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x17;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: T0 pin Falling Edge
TCCR0=0x06;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 62,500 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0xE7;
TCNT1L=0x95;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Falling Edge
GICR|=0x80;
MCUCR=0x08;
GIFR=0x80;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 62,500 kHz
// ADC Voltage Reference: AREF pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;

// 1 Wire Bus initialization
w1_init();

// инициализация датчика DS18B20
//ds18b20_init( 0, -50, 120, DS18B20_9BIT_RES);

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      if (timer_100ms)
        {
        timer_100ms = 0;

        gen_volt = read_adc(V_GEN)*58; // в милливольтах
        if (pusk) // двигатель завенден или в процессе запуска
          {
           if (((gen_volt > 9000) || (tahometr_speed > 33)) && starter_timer) // напряжение на генераторе больше 9 В пока крутим стартер
            {                       // примерно 500 об./мин.
            #asm("cli")
            starter_timer = 0; // отключаем стартер
            STARTER = 0;
            #asm("sei")
            ind_on = 1;
            }
          }
       
        if ((DIST_ST == 0) && old_dist_st) // вход перешел в нулевое значение
         {
         Start_engine();
         }
        old_dist_st = DIST_ST;
        }

      if (timer_1s) // раз в секунду
        {
        timer_1s = 0;
        temp_level = -20 + (read_adc(L_TEMP)*0.07843); // в градусы   //20 гр. - 0.07843, 35 гр. - 0.13725
        temperature = ds18b20_temperature(0); // считываем температуру с датчика
       
        if (temperature < temp_level) // начало процесса запуска
          {
          Start_engine();
          }

        if (TORMOZ || (temperature > 60)) // нажата педаль тормоза или температура выше заданной, выключаем все
          {
          ZAJIGANIE = 0;
          POVOROT = 0;
          #asm("cli")
          starter_timer = 0; // отключаем стартер
          STARTER = 0;
          #asm("sei")
          ind_on = 0;
          pusk = 0;
          timer_10s = 0;
          delay_timer = 50; // через 5 сек включаем датчик удара
          }

        if (ind_on) // индикация работы
          {
          if (++ind_count > 4)
            {
            ind_count = 0;
            POVOROT = 1;
            }
          else POVOROT = 0;
          }

        if (timer_10s) timer_10s--;   // десять секунд перед повторным запуском
        if (timer_10s == 1) starter_timer = 50;
        }
      };
}


Вложения:
Комментарий к файлу: Схема.
схема.png [83.46 KiB]
Скачиваний: 371

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


Последний раз редактировалось Акма Пт мар 02, 2018 07:21:51, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 06:28:14 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
1) спрячь код в теги {spoiler}{code} ...твой код... {/code}{/spoiler} (только скобки квадратные) так и портянки не будет и код сайтом гарантированно не попортит
2) по коду - замени условие (строка 266):
Код:
if (TORMOZ || (temperature > 60)) // нажата педаль тормоза или температура выше заданной, выключаем все
на:
Код:
if ((TORMOZ || (temperature > 60))||((ind_on)&&(gen_volt < 12000))) // нажата педаль тормоза или температура выше заданной,  или при запущенном моторе упало напряжение - выключаем все
ну, может, напряжение только поправить придётся.

Добавлено after 3 minutes 35 seconds:
3) вот этого изврата можно было и не делать
TCNT1H=0xE795 >> 8;
TCNT1L=0xE795 & 0xff;

если правильно настроить таймер (по режиму СТС). (это пока оставь, но если сам будешь кодить - делай правильно)

Добавлено after 27 minutes 57 seconds:
возможно в строку 243 (до закрывающей скобки) придется добавить
Код:
gen_volt=60000;
чтобы до обновления показаний вольтметра мотор не заглушило

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 07:54:07 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Ivanoff-iv писал(а):
3) вот этого изврата можно было и не делать
TCNT1H=0xE795 >> 8;
TCNT1L=0xE795 & 0xff;
если правильно настроить таймер (по режиму СТС). (это пока оставь, но если сам будешь кодить - делай правильно)

Если бы мог писать на Цэ, написал бы так :)
Код:
   #define Fo 8000000   ;тактовая частота 8МГц

   TCNT1=-Fo/64/10      ;100ms досчетом до переполнения
   OCR1A=Fo/64/10-1   ;100ms в режиме CTC
Режим CTC хорош тем, что OCR1A загружается один раз, а TCNT1 при досчете по переполнения в прерывании нужно каждый раз загружать. Экономия.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 08:47:50 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
[/code]
Код:
if ((TORMOZ || (temperature > 60))||((ind_on)&&(gen_volt < 12000))) // нажата педаль тормоза или температура выше заданной,  или при запущенном моторе упало напряжение - выключаем все
ну, может, напряжение только поправить придётся.


Добавлено after 27 minutes 57 seconds:
возможно в строку 243 (до закрывающей скобки) придется добавить
Код:
gen_volt=60000;
чтобы до обновления показаний вольтметра мотор не заглушило

Спасибо!
Внес я первую с верху поправку. Доходит до процесса запуска, включается стартер-запуск пошел, через секунду глушит двигатель.
Вторую поправку не вносил. Строки сдвинулись, у меня под строкой 240-#asm("cli"), 241-starter_timer = 0;, 242-STARTER = 0;, соответственно 243- #asm("sei")

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 08:55:18 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Акма писал(а):
243- #asm("sei")
ну, вот туда и ставь, а эта строчка (и все последующие) уедет вниз на
одну
я ещё исправил в условии напряжение: поставил 12000 (это типа 12в) - возможно с ним поиграться придётся - чтобы и при работающем моторе не глушило (если глушит - надо убавлять) и при остановке глушило как можно раньше (если не глушит - добавляй)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 09:24:49 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3320371#p3320371"][/code]
Код:
if ((TORMOZ || (temperature > 60))||((ind_on)&&(gen_volt < 12000))) // нажата педаль тормоза или температура выше заданной,  или при запущенном моторе упало напряжение - выключаем все
ну, может, напряжение только поправить придётся.

Что я сразу заметил, 12вольт многовато! при включении стартера, бывают просадки до 10вольт.
Подправил я с 12вольт, на 11вольт и заработало!!! я думаю всетаки поставить 9.5вольта.
И на счет вот этой поправки! gen_volt=60000; скопируйте строку куда подставить этот код.
Понятно! пока я верстал топик, вы уже ответили на мой вопрос.
Спасибо все работает!

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 10:17:35 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
попробуй теперь принудительно машину заглушить - проверь отрабатывает ли отключение
ведь 12 вольт в этом условии я написал для разделения работающего/неработающего двиг-ля при выключенном стартере (а там напруги повыше)

Добавлено after 38 minutes 17 seconds:
ещё поправил условие:
Код:
if ((TORMOZ || (temperature > 60))||((ind_on)&&((gen_volt < 12000)||(tahometr_speed == 0)))) // нажата педаль тормоза или температура выше заданной,  или при запущенном моторе упало напряжение или обороты - выключаем все

чтобы и по оборотам следило.
но сначала напряжение отстрой.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Пт мар 02, 2018 20:12:49 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
попробуй теперь принудительно машину заглушить - проверь отрабатывает ли отключение
ведь 12 вольт в этом условии я написал для разделения работающего/неработающего двиг-ля при выключенном стартере (а там напруги повыше)

Вроде глушит! Но это в процессе тестирования все повылазиет.
Внес поправочку.
(tahometr_speed == 0)
Сейчас попробую.

Добавлено after 23 minutes 4 seconds:
Все работает!!!
Заходит в цикл при низком напряжении и после принудительно заглушенного двигателя.
Я думал прожка с этой поправкой (tahometr_speed == 0) будет заходить в цикл в процессе работы.
Днем потеплело! Ладно будем ждать вечера, когда температура на улице опустится ниже нуля.

Добавлено after 7 hours 46 minutes 14 seconds:
Вот и понеслось!! после простоя, при запуске начало заходить в цикл, выключаем все. !!
При идеальном аккумуляторе, а это без нагрузок, должен держать 12.5, но при запуске может просесть до 9-10 вольт. А при работающем двигателе, если с генератором все в норме, то вылет может достичь до 14.2волта. !!! как привязаться к этим цифрам, 9-14.2вольта???? разница грубо в 5.2 вольта.
Чтоб не сильно ломать голову с вольтами, думаю лучше сделать привязку к тахометру, есть импульсы-работаем, нет импульсов уходим в цикл, выключаем все.

Добавлено after 1 hour 31 minute 6 seconds:
Более детально вник в процесс. Получается так. На аккуме 12.5вольта. Термометр дает команду на запуск, стартует стартер, идет просадка до 10.3, заводится двигатель, выключается стартер. Вроде все в норме! но не все. Если двигатель по какой то причине заглох. Примерно через 5-8 сек. включается зажигание и идет в цикл (если двигатель не запустился),через 5 -10 сек, включается зажигание, стартер, и. дальше по кругу. Полагаю здесь вина термометра, который после того как двигатель заглох, тоже должен уйти в спячку, а он продолжает давать команды на запуск!!!

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Сб мар 03, 2018 04:41:32 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6620
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
тогда надо добавить переменную (защелку), которая будет взводиться при заглыхании двигателя и не даст ему больше самозаводиться.
я уже тоже об этом подумал, (что после остановки система возвращается в исходное состояние) но решил эксперимента дождаться, а то и тормозом мотор не заглушить (в исходной схеме)(только отпустишь - и заводится по новой)
о том как её устанавливать и сбрасывать я подумаю в понедельник, пока некогда.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Сб мар 03, 2018 06:17:27 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Сб фев 13, 2016 10:18:25
Сообщений: 87
Откуда: D.P.R. Мясо комбинат.
Рейтинг сообщения: 0
Сутра со свежими мыслями проследил весь алгоритм.
1)Термометр дает команду на запуск, стартер пуск, двигатель не завелся, заходит в цикл, (если двигатель не завелся)
производит 5 попыток запуска, двигатель не завелся! прожка останавливается! здесь норма.
2)Термометр дает команду на запуск, стартер пуск, заводится двигатель, стартер стоп, греем двигатель, температура>60, двигатель молотит! прожка не видит термометр, именно по высокой температуре, а раньше видел!!!!!!!!!!!!!!!!!!!!!!
3)Термометр дает команду на запуск, стартер пуск, заводится двигатель, стартер стоп, греем двигатель, если двигатель по какой то причине заглох, зажигание выкл. прожка идет в цикл (если двигатель не запустился), через 1 сек, включает зажигание, стартер, если двигатель не заводится, через 5 сек. стартер стоп, через 10 сек, повторная попытка запуска, делает 5 попыток запуска, если двигатель не завелся полный СТОП! здесь норма.

Осталась непонятка с термометром, почему не глушит двигатель при температуре>60. уже паяльник подносил, молчит гад!! боюсь перегреть датчик.
И вот этот бы кусок подправит, №3 (зажигание выкл. прожка идет в цикл (если двигатель не запустился), через 1 сек, включает зажигание,) вместо 1 сек, delay_ms(5000); ато как то все быстро происходит!

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите распознать кусок кода.
СообщениеДобавлено: Сб мар 03, 2018 07:18:06 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 12
Зарегистрирован: Пт мар 27, 2015 16:59:55
Сообщений: 135
Откуда: г. Радужный ХМАО
Рейтинг сообщения: 0
Чтот у вас много попыток на запуск. Да и длительность прокрутки стартером великовата. Достаточно установить для первой попытки 1 секунду. Последующие с увеличением на 0.2-0.5 сек. Позаливает и свечи и коллектора и возможен большой пых (был прецендент у одного эксперементатора, но там алгоритм по таймеру был). 4 попытки будет достаточно. У вас как то реализован интервал между включением зажигания и попыткой запуска двигателя? Если нет, то желательно бы, хотябы две три секунды.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y