Спасибо прочитал понял то что в ASCII коде цифра 1 посылается кодом 49, коды от 0 до 9 легко можно пересчитать а вот от 10 до 100 там уже сложновато так как цифра 10 посылается в коде 4948.Может есть готовые библиотеки для авр студио
А если внимательно почитать, то там написано, что цифры передаются как '0'+число, т.е принимаем один байтик, отнимаем код цифры '0' (48) и получаем первый символ нашего числа в числовом виде Затем принимаем следующий символ пока не закончатся или придет символ не из диапазона '0'-'9'. При получении каждого следующего символа умножаем наше принятое число на 10 и прибавляем к нему полученное. Пример ардуинскими функциями, но смотрите именно на реализацию, подставите потом свои available и read. Код (C++): int SerialParseInt() { int chislo=0; while (Serial.available()) { byte c= Serial.read(); if ((c>='0') && (c<='9')) { chislo = chislo * 10 + (c - '0'); } else return chislo; } return chislo; }
По вашему примеру получается if ((c>='0') && (c<='9')) будет работать с 0 - 9 а если больше значение придет скажем сразу придет '1' и '1' (49)(49) обработка как будет ли работать
Обработается сначала первая единичка, затем вайл находит что есть еще что-то, считываем вторую единичку, умножаем первую на 10, получаем 10 и прибавляем вторую единичку, получаем 11. И так пока следующий принятый символ не описывает цифру ( вне диапазона '0'-'9' ) или приемный буфер пустой.
Yerabdi Придти '1' и '1' (49)(49) "сразу" никак не может, так как мы принимаем символы ПО ОДНОМУ. ИМХО, с вашим уровнем зря вы сразу полезли в авр-студию - "вам бы сначала мама выговаривать" - поучится мигать диодиком в ардуине. серьезно.
Спорно. Я вот в ардуино сунулся как раз после нормальных оболочек. КМК, здесь не оболочка главное, а умение правильно задавать вопрос в гугле и находить приемлемое решение. Ну а с практикой придут дополнительные знания.
Не подскажете топливная карта бывает во всех случаях один или при ускорении по другой карте расчитовается
А это ноу-хау каждого производителя Никто не рассказывает где и что у него сделано. А что вам мешает сделать еще одну карту добавок по ускорению?
думаю пока до этого я еще не дошел, у меня пока не получается рассчитать массив например если значение датчика разрежение 20 должен быть '0' столбец если 25 '1' столбец если 30 '2' столбец до 100. Тогда думаю при уменьшении и увелечении нагрузки более плавная время впрыска будет.
Как-то я не понял проблемы. Дано - датчик выдает сигнал в диапазоне 100 - 900 отсчетов АЦП (пример, естественно - реальные показатели надо самому промерить). Задача - построить карту по этому датчику. 1. Выбираем квантование, то есть на сколько диапазонов разбиваем полную шкалу. Если линейность датчика высокая, то разбиваем на небольшое количество участков, скажем 8. Если линейность плохая, то количество участков увеличиваем (пока хватает ресурсов для запоминания карты и ее обработки). Скажем, 32 (желательно брать степень двойки - проще делить). 2. Если квантуем по 8, то заводим массив в 8 значений, если по 32 - то соответственно в 32 значения. 3. Находим минимальное значение с датчика. В условиях оно 100. 4. Шаг квантизации = (Максимум-Минимум)/квантование. 5. Значит для нахождения элемента карты от полученного значения АЦП отнимаем минимальное и остаток делим на шаг квантизации. Например, получили 220. Минималка 100. Шаг квантизации (900-100)/8=100. Получаем номер элемента карты как (220-100)/100 = 1.2 = 1 (дробь отбрасывается при целочисленном делении). Выходит, что нам нужен элемент с индексом 1, т.е. второй по списку.
Спасибо что откликнулись, про такой расчет вообще не знал. Не подскажете как можно узнать идет ускорение или медленный разгон, каким образом можно определить?
Спасибо вам большое за ваши советы в массиве указал карту топлива(квантирую по 5). Работает без всяких провалов и дерганий, теперь хочу по usart изменять данные в массиве от показания лямбда зонда
Есть еще один вариант отладки ЭБУ. Делаете несколько наборов своих карт и по внешним переключателям выбираете рабочий набор. Типа как раньше было модно спорт прошивка и эконом, или газовая и бензиновая. А вы понаделайте себе хоть 8 наборов и выбирайте рабочий тремя переключателями. Потом по ощущениям определитесь какой набор лучше едет и уже только его оставите в прошивке. Метод научного тыка. Проще, чем на лету менять карту.
Массив данных карт лучше всего хранить в еепроме или во флэш , у меня сейчас хранится в месте кодом в флэш памяти
во флеше - не сможете изменить и запомнить, только выбрать из нескольких вариантов в епроме - ограниченное место, но можно изменять на ходу выбирайте