Про программирование HIP9011

Про байтики и логику ЭБУ
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

russian wrote:Кажется мы прожолжаем друг друга не понимать.

Верно ли, что в какой-то формуле участвует желаемое выходное напряжение чего-то?
нет никакого желаемого напряжения - есть напряжение какое получилось на выходе и его надо измерить АЦП точно и в нужный момент - и есть только ОДНА попытка!
Maxi wrote:К тому же с каких пор на входе процессора вдруг оказался компаратор на 2.2 вольта?
2.2 вольта - это 2/3 от моих 3.3 вольт.
Как я понимаю, всё меньше трети от 3.3 - это ноль, всё, что больше двух третей - это единица?
что?!
это не нормируемые параметры... есть только границы и пределы которые определяют состояния но моменты переходов не определяются и в зависимости от фаз луны и миллиона разных факторов различные напряжения на входных пинах процессора могут восприниматся как различные состояния - что есть основа ЦИФРОВОЙ электроники. поэтому вся цифровая электроника строится на подаче ЗАПРЕДЕЛЬНЫХ для не нужных состояний = ПРЕДЕЛЬНЫХ для нужных состояний напряжений! Но это все не имеет смысла - потому что интегратор и фильтры построены на переключаемых конденсаторах это аналоговая микросхема и постоянная времени интегрирования для того же интегратора величина достаточно условная поскольку технологически сложно сделать матрицу конденсаторов с высокой точностью (это все видно при адаптивных механизмах). Поэтому единственный способ это численное измерение напряжения выхода и программная обработка - все никаких "логических" решений и быть не может.

Кроме того существует так называемый ноль интегратора - когда полезный сигнал на входе =0 интегратор все равно на выходе дает некоторое напряжение около полувольта . это напряжение надо измерять в нерабочем состоянии двигателя и ВЫЧИТАТЬ из каждого следующего измерения. оно так же может меняться от погоды фаз луны, температуры, и конкретной микросхемы.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

http://ru-patent.info/20/75-79/2078323.html

вот сам алгоритм обработки
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

что-то у меня не выходит.

Плата франкензо, там был косяк - CS был притянут наверх, и не выведен на stm32. В таком виде HIP не отвечал.

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

код из https://svn.code.sf.net/p/rusefi/code/trunk/firmware/hw_layer/HIP9011.cpp постоянно в цикле делает

Code: Select all

// 0b01000000
#define SET_PRESCALER_CMD 0x40
// 0b11100000
#define SET_CHANNEL_CMD 0xE0
// 0b00000000
#define SET_BAND_PASS_CMD 0x0

// 0b10000000
#define SET_GAIN_CMD 0x80

// 0b01110001
#define SET_ADVANCED_MODE 0x71

	// '0' for 4MHz
	tx_buff[0] = SET_PRESCALER_CMD + 0 + 2;

	// '0' for channel #1
	tx_buff[2] = SET_CHANNEL_CMD + 0;

	// band index depends on cylinder bore
	tx_buff[4] = SET_BAND_PASS_CMD + bandIndex;

	// todo
	tx_buff[8] = SET_GAIN_CMD + 41;

	tx_buff[10] = SET_ADVANCED_MODE;
	tx_buff[11] = SET_ADVANCED_MODE;

	while (true) {
		chThdSleepMilliseconds(10);
		spiStartExchange(driver, 16, tx_buff, rx_buff);
        }


SPI:
Image

что я делаю не так?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Отдохнул от этой муторной темы и теперь готов продолжить.

Математика и все магические константы живут в https://sourceforge.net/p/rusefi/code/HEAD/tree/trunk/firmware/controllers/sensors/hip9011_lookup.cpp
Тест математики живёт в https://sourceforge.net/p/rusefi/code/HEAD/tree/trunk/unit_tests/test_sensors.cpp
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Кажется написал весь код - завтра припаяют провод и буду смотреть на аналоговый выходной сигнал

https://sourceforge.net/p/rusefi/code/HEAD/tree/trunk/firmware/hw_layer/HIP9011.cpp
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

1) IsIntegrating в каком месте true? не вижу вообще.

2)

Code: Select all

	if (!needToSendSpiCommand) {
		/**
		 * SPI communication is only allowed while not integrading, so we initiate the exchange
		 * once we are done integrating
		 */
		isIntegrating = false;
		turnPinHigh(HIP9011_INT_HOLD);
	}
Если ты начинаешь интегрирование - одно БЕЗУСЛОВНО ДОЛЖНО НАЧАТЬСЯ!
иначе ты на выходе получишь ерунду.


3) почему обмен по SPI идет в событиях времени - если он должен происходить в событиях УГЛА ПОВОРОТА!
У тебя по углу поворота должны последовательно проходить:
поз 1. Старт интегрирования.
Поз 2. стоп интегрирования.
поз 3. чтение состояния интегратора.
поз 4. обновление регистров по SPI для обновишихся условий по состояни двигателя.
и далее поз 1 для следующего цилинра...

никаких задач по времени ВООБЩЕ НЕ ДОЛЖНО БЫТЬ!
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

#1 & #2
ты вычитал баг, спасибо! Должно конечно же быть

Code: Select all

static void startIntegration(void) {
	if (!needToSendSpiCommand) {
		/**
		 * SPI communication is only allowed while not integrating, so we postpone the exchange
		 * until we are done integrating
		 */
		isIntegrating = [b]true[/b];
		turnPinHigh(HIP9011_INT_HOLD);
	}
}
исправил и чутка улучшил комментарий тут и вообще.

Медленный обмен по SPI я не хочу делать в обработчике углов - в обработчике углов я делаю только быстрое включение-выключение пина. Обмен по SPI происходит относительно редко - только при резкой смене оборотов или при смене настройки усиления, так что пока он да, будет завязан на время. Если будет потом не лень заморочиться - это можно переделать на стейт машину и ассинхронный SPI.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

[video][/video]
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Про программирование HIP9011

Post by puff »

тут гуру сообщали, что тонкая регулировка хх осуществляется именно дд. или идея оставить это просто в роли показометра?
ну и тут точно нужен тюториал по настройке. сдается мне, без осциллографа делать нечего...
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

russian wrote: Медленный обмен по SPI я не хочу делать в обработчике углов - в обработчике углов я делаю только быстрое включение-выключение пина. Обмен по SPI происходит относительно редко - только при резкой смене оборотов или при смене настройки усиления, так что пока он да, будет завязан на время. Если будет потом не лень заморочиться - это можно переделать на стейт машину и ассинхронный SPI.
Проблема в том что ты так и не понял - что НЕ ВАЖНО ЧТО ТЫ ХОЧЕШЬ! Важно что нужно делать.
Ты не можешь работать с HIP9011 асинхронно по SPI хотя бы потому что:
1) может быть подключено ДВА датчика детонации связанные с РАЗНЫМИ цилиндрами и таким образом перед каждым интегрированием необходимо выбрать канал.
2) нормальные реализации алгоритма предполагают так же и разные цилиндро зависимые значения для аттеньюатора-интегратора. Таким образом они тоже должны быть предварительно запрограммированы перед каждым новым интегрированием.

Все это требует асинхронной работы с двумя сущностями - SPI и АЦП.
Делается это через захват ресурсов или приоритеты. но делать то средствами РТОС не предназначенной для системы управления (где опять же специально так не написана работа с SPI и АЦП) накладно.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Maxi wrote: 1) может быть подключено ДВА датчика детонации связанные с РАЗНЫМИ цилиндрами и таким образом перед каждым интегрированием необходимо выбрать канал.
2) нормальные реализации алгоритма предполагают так же и разные цилиндро зависимые значения для аттеньюатора-интегратора. Таким образом они тоже должны быть предварительно запрограммированы перед каждым новым интегрированием.
Да, ты 100% прав. Когда будет добавляться второй канал, нужно будет преодолеть лень и перевести SPI на асинхронный вариант.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

про аттеньюатор решил пропустить?!
тогда можешь не мучится - ничего у тебя не будет работать!
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Maxi wrote:про аттеньюатор решил пропустить?!
тогда можешь не мучится - ничего у тебя не будет работать!
...

Сделал лучше: https://sourceforge.net/p/rusefi/code/HEAD/tree/trunk/firmware/hw_layer/HIP9011.cpp
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Добавил собсвенно считывание аналогово результата.

HIP использует тот же "быстрый" 10КГц АЦП, который до этого использовался только для ДАД. После завершение интегрирования мы пропускаем один АЦП цикл и считаем результатом работы HIP результат второго АЦ преобразования. Конечный автомат в HIP9011.h
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Image
Image

Прогресс есть - но результата пока нет. Что-то где-то не так :(
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Про программирование HIP9011

Post by puff »

я правильно понимаю, ion sensing - это типа альтернатива датчику детонации? (попалось тут несколько доков)
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Про программирование HIP9011

Post by Maxi »

puff wrote:я правильно понимаю, ion sensing - это типа альтернатива датчику детонации? (попалось тут несколько доков)
это более сложный и геморройный метод.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

[video][/video]

[video][/video]

Что-то где-то сильно не так.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Про программирование HIP9011

Post by puff »

забыл. а я уже спрашивал? доверять поставщику можно?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

puff wrote:доверять поставщику можно?
tpic? с digikey так что всё ок
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Про программирование HIP9011

Post by puff »

или hip? (я что-то уже потерялся)
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Про программирование HIP9011

Post by AndreyB »

Записал датчик детонации на ноутбук: один файл это сигнал прямо с датчика, другой файл - сигнал на ножке #19 hip/tpic чипа. http://rusefi.com/images/knock_sensor.zip

На машине у меня постоянно высокий уровень выходного сигнала, а на столе с проигрыванием записанного файла - явно видно начало интеграции и итог интеграции совсем не 5 вольт. Чем-то запись отличается от оригинала всё-таки.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Abricos
contributor
contributor
Posts: 849
Joined: Mon Aug 18, 2014 12:32 am
Location: Carteret, NJ 07008

Re: Про программирование HIP9011

Post by Abricos »

Может быть и за того что звуковой файл в каком то формате ...
аудиоформаты без сжатия, такие как WAV, AIFF
аудиоформаты со сжатием без потерь (APE, FLAC)
аудиоформаты, с применением сжатия с потерями (mp3, ogg)
Зачастую разрядность квантования и частоту дискретизации указывают для различных звуковых устройств записи и воспроизведения как формат представления цифрового звука (24 бита/192 кГц; 16 бит/48 кГц).
Post Reply