Page 3 of 11
Re: Протокол обмена данными
Posted: 24 Jan 2016, 22:43
by darxfame
alvikagal wrote:Полученные данные ГД и ВЗ:
Code: Select all
uint8_t choke_pos;
uint8_t gasdose_pos;
Что с ними нужно сделать? Умножить на шаг 0,5, чтобы получить проценты?
А можно мне примеры перекинуть? мне с этим тоже разбираться. Ну и отмечусь)
Re: Протокол обмена данными
Posted: 25 Jan 2016, 00:20
by STC
Что с ними нужно сделать? Умножить на шаг 0,5, чтобы получить проценты?
Да.
Re: Протокол обмена данными
Posted: 25 Jan 2016, 00:56
by alvikagal
Скажи, ты программно в менеджере ограничиваешь температуру до -37 или это данные так передаёт. Не могу с температурой разобраться, как вывести на экран отрицательное число.
Делаю так:
Code: Select all
lcd_com(0xC7);
if (temperat<0)
{
lcd_dat('-');
data_=temperat*(-1);
}
Re: Протокол обмена данными
Posted: 25 Jan 2016, 01:01
by STC
Нет, не ограничиваю.
Переменная temperat у тебя в программе какого типа? int или unsigned int
Re: Протокол обмена данными
Posted: 25 Jan 2016, 01:04
by alvikagal
int16_t temperat
Re: Протокол обмена данными
Posted: 25 Jan 2016, 01:08
by alvikagal
Разобрался.
Code: Select all
uint16_t temperat_;
int16_t temperat;
temperat_ = SENSOR_DAT[6]; // coolant temperature
temperat_ = (temperat_<<8) + SENSOR_DAT[7];
temperat=(int16_t)temperat_;
temperat=temperat*2.5;
Re: Протокол обмена данными
Posted: 25 Jan 2016, 02:32
by STC
А зачем на 2.5 умножается? Там нужно делить на 4.0, а не умножать на 2.5
Значение в пакете данных, приходящее от SECU-3 это значение умноженное на 4 (дискретность 0.25 градуса).
Re: Протокол обмена данными
Posted: 25 Jan 2016, 19:14
by alvikagal
Ага, спасибо, теперь понял свою ошибку. Буду умножать на 0.25, в целях экономия места программе. Деление больше места и времени занимает.
Уже вывел данные пакета на LCD20*04, пока влазит в atmega8, но наверно придётся переходить на atmega328, чтобы мой гомнокод влез с желаемыми функциями.
Спасибо, Алексей за помощь.
Re: Протокол обмена данными
Posted: 25 Jan 2016, 20:37
by STC
Да, лучше перейти на 328, так как числа с плавающей запятой сжирают много ресурсов, но когда мало опыта в программировании, то лучше так, чем извращаться как я с целыми числами. Тем более, что цена 328 не сильно отличается от 8.
Главное, не используй операции с палавающей запятой в прерываниях.
Re: Протокол обмена данными
Posted: 01 Feb 2016, 14:18
by Samtorr
alvikagal wrote: Буду умножать на 0.25, в целях экономия места программе.
В целях экономии места лучше сделать так:
Хотя, умный компилятор и сам так сделает