Softwareserial ловит стартбит по прерыванию. Видимо какая то из библиотек их запрещает на время и часть ответа ЕБУ летит мимо цели. Аппаратный serial работает немного иначе и может с ним не будет такого косяка.
Глянул код по диагонали:
MaksVV я правильно вижу - что на каждый байт от ЕБУ проворачивается основной луп ??? Часы обновляются раз в три секунды ???
Может так будет правильнее:
...
receivePCM (); // приём сообщений от PCM
if (header != 4) {
Menu ();
if (curmillis - prevWatch > 3000) { Watch (); prevWatch = curmillis;}
if (curmillis - prevDvoet > 500) { if (!Dvoet) {myGLCD.print(":", 290, 5);} else {myGLCD.print(" ", 285, 0);} prevDvoet = curmillis; Dvoet=!Dvoet;}
}
}// end loop
...
И процесс приёма пакета не будет отвлекаться в критический момент ?
нет между приёмом каждого байта от эбу стоит таймер в 1 мс. Т.е. часть циклов луп в холостую пролетает не читая буфер, а то паразитные ноли появляются. Не спорю на харде может и лучше будет. Я не знаю почему тут софт сериал, помоему раньше на харде висело.
Командир там понимаешь есть два обмена к-лайн. ВВторой мы ещё тут не добавли (со щитком приборов). По меню то не нада летать, а вот второй к-лайн нада читать чтоб без ошибок.
Если ниче не получится придётся вернуть к старой схеме. Я просто хотел правильный алгоритм отработать. Я ж не предполагал, что вся периферия ппц как тормозит скетч
во блин задачка. 2 облом разберать всю панель. 1 на крайняк будет лучшим вариантомю. хотелось бы твою новую систему, может 3? на моем из за шрифта мигает а так норм работает
ща доработаю шриф и сниму видео и кину на ютуб, потом кину сюда. Макс тебе в очередной раз огромное сапсибо. ТЫ ГЕНИЙ я два года уже об этом говорю. Командир тебе тоже огромное спасибо за подсказку. ждите видео
MaksVV машина Subaru c электронной педалью акселератора.
железо уже сделано: 32U4 общается с ЭБУ, с GPS, выводит на OLED по I2C, отслеживает нажатия SKRHABE10, отслеживает уровень от родной педали, отслеживает сигналы от датчика скорости, выставляет уровень замещающий родную педаль через ЦАП по I2C. Сброс по тормозу, сцеплению, нейтрали - аппартный.
Всё это работает. Изучаю алгоритмы поддержания скорости ориентируясь на сигналы с датчика скорости.
не прописываею шрифт только размер прописываю myGLCD.setTextSize(2); не мигает но шрифт меньше чем нужен и шире.
любой адафрутовский шриф myGLCD.setFont(&FreeSerifItalic12pt7b); блин мигает.....
особенность библиотеки. При использовании встроенных шрифтов у каждого символа есть фон, который затирает прежнюю надпись. А у Адафрутовских шрифтов фона нет. если их выводить непосредственно - новые символы будут накладываться на старые. Поэтому при выводе такого шрифта сначала выполняется заливка старого текста цветом фона, а потом выводится новый - вот это и видно как "мигание".
бороться - либо борать более быстрый МК. либо кардинально переписывать библиотеку.
тоесть Командир найти в библе адафруита стандартный шрифт и перерисовать его на свой? вопрос где он лежит в font лежат шрифты но там нет стандарт или чета похожее......... я бы поигрался бы и перерисовл , я же художник:) , порылся бы как это сделать...... на сколько я понимаю так как он работает через конветрер <UTFTGLUE.h> то он использует стандартный шрифт UTFT библы? правильно?
ты имеешь в виду твой пост 1594?
viki13viki Да. Исправьте размер и пересоберите тот же самый скетч, что сыплет таймаутами. Залейте и посмотрите как будет работать.
по умолчанию уже стоит #define _SS_MAX_RX_BUFF 100 // RX buffer size
Поиск тут корявый - да нашел пост об этом http://arduino.ru/forum/proekty/bortovoi-kompyuter-dlya-opel-zafira?page=10#comment-294279
Softwareserial ловит стартбит по прерыванию. Видимо какая то из библиотек их запрещает на время и часть ответа ЕБУ летит мимо цели. Аппаратный serial работает немного иначе и может с ним не будет такого косяка.
Глянул код по диагонали:
MaksVV я правильно вижу - что на каждый байт от ЕБУ проворачивается основной луп ??? Часы обновляются раз в три секунды ???
Может так будет правильнее:
И процесс приёма пакета не будет отвлекаться в критический момент ?
нет между приёмом каждого байта от эбу стоит таймер в 1 мс. Т.е. часть циклов луп в холостую пролетает не читая буфер, а то паразитные ноли появляются. Не спорю на харде может и лучше будет. Я не знаю почему тут софт сериал, помоему раньше на харде висело.
по моему Макс изначально я как нашел первые скетчи когда только начинал, там был сериал, так он до конца и остался. на сколько я помню
байты от ЭБУ летят с задержкой между ними по 1мс. Таков уж протокол. Поэтому сообщение в 80мс меньше чем за 200мс не принять по идее
1536 нормально отображает? не мигает? В нем нет цикла тача. Видимо тач все и тормозит. Добавь туда тач и проверь стало ли глючить
Если идёт тело пакета (самый критический момент) зачем бегать по меню, часам и двоеточиям ???
ИМХО с моими двумя строчками из 1604 думаю всё взлетит. Хотел выделить эти две строки жирным, но не вышло - они внутри тега strong получились
Командир там понимаешь есть два обмена к-лайн. ВВторой мы ещё тут не добавли (со щитком приборов). По меню то не нада летать, а вот второй к-лайн нада читать чтоб без ошибок.
Если ниче не получится придётся вернуть к старой схеме. Я просто хотел правильный алгоритм отработать. Я ж не предполагал, что вся периферия ппц как тормозит скетч
Если идёт тело пакета (самый критический момент) зачем бегать по меню, часам и двоеточиям ???
ИМХО с моими двумя строчками из 1604 думаю всё взлетит.
не, там надо цикл Menu() в это время отменять, но тогда тач хрен дотыкаешься
да 1536 мелкий шрифт, не мигает норм отображает. не тач не причем закоменчен шрифт, он и тормозил 99 проциков. а и френд закоменчен
не там надо цикл Menu() в это время отменять, но тогда тач хрен дотыкаешься
80 мс и хрен дотыкаешься ???
дак в 1536 не вставлен цикл тача, работает там тач чтоли?
тебе говорят между байтами ещё 1 мс от блока задержки . итого примерно 160...200мс тач не робит
Но это 5 раз в секунду по любому
в 1536 Menu убит
нет, не так. Алгоритм такой по кругу
Запрос. Ответ от эбу (160мс...200мс). Задержка между посылками 80мс(тут тач робит), запрос, Ответ от эбу (160мс...200мс)
вот и выяснили тормозило две вещи шрифт и тач. Так что ....
я ещё 1579 писал
Вам надо определить что максимально критично - верные данные или тач.
С аппаратным сериалом можно вечно сидеть в таче и по прерыванию забирать данные от ЕБУ.
С программным надо все равно приоритет для данных отдавать.
да друзья разкоментил в 1536 меню Menu (); и изображение на экране пропало..........
viki13viki сделайте как я писал в 1604 и посмотрите как будет тач себя вести ?
MaksVV зачем задержка между байтами если Вы проверяете available ?
уже пробовал ошибка компиляц
expected primary-expression before '<' token
там все <strong> надо убрать это я хотел ЖИРНЫМ выделить, а оно в код попало
должно быть
if (header != 4) {
и закрывающая
}
viki13viki, как твой рабочий скетч без шрифта , нормально робит?
Есть четыре варианта.
1. Немного улучшить твой рабочий скетч оставив его также на delay, но только по лучше не 195.
2. Попробовать по новой схеме но на хард сериале.
3. Добивать или искать другую библу тача и шрифта чтобы она так сильно не тормозила луп.
4. добавить ещё одну ардуино. которая будет тачить и экранить
во блин задачка. 2 облом разберать всю панель. 1 на крайняк будет лучшим вариантомю. хотелось бы твою новую систему, может 3? на моем из за шрифта мигает а так норм работает
да, но без неё не работало, точно помню. Надо ещё раз заморочиться по тестировать. Давно дело было.
на моем если убрать шриф то и тач работает и не мигает. ща скажу точно проверю.
да на моем все работает включая тач и ошибки только шрифт маленький а так все пучком
viki13viki разобрались с компиляцией 1604 ?
тогда вариант 1 будет норм
viki13viki разобрались с компиляцией 1604 ?
дак выяснили что тормозят не те функции, надо таким макаром menu() банить , а вижу исправил
не с компиляцией не разробрался
)
да Макс наверное модифицировать по возможности мой это лучший вариант.
вот мой рабочий
Меню отключается только в момент приёма тела пакета
Тач может обрести некую задумчивость ...
Командир ты серьезно? это сработало..... Блин все четко работает....
Тач сильно тормозит ?
Хоть бы одним газом увидеть - как оно выглядит :-)
работает мгновенно. Макс возьми себе это на заметку на будущее. пригодится
вот скетч
остался шрифт :) ща разберусь
что выглядит?
Мне бы фото / видео ...
Я сижу и чиню "черную коробку" ! с чужим кодом
MaksVV Вы не богаты алгоритмами поддержания скорости круиз-контроля ?
ща доработаю шриф и сниму видео и кину на ютуб, потом кину сюда. Макс тебе в очередной раз огромное сапсибо. ТЫ ГЕНИЙ я два года уже об этом говорю. Командир тебе тоже огромное спасибо за подсказку. ждите видео
отлично что костыль заработал. я думал тач будет реально тормозить. скинь лог для прикола.
по оффтоплю . не богат по круизу. а машина то какая и что сделатьь надо?
лог
не прописываею шрифт только размер прописываю myGLCD.setTextSize(2); не мигает но шрифт меньше чем нужен и шире.
любой адафрутовский шриф myGLCD.setFont(&FreeSerifItalic12pt7b); блин мигает.....
MaksVV машина Subaru c электронной педалью акселератора.
железо уже сделано: 32U4 общается с ЭБУ, с GPS, выводит на OLED по I2C, отслеживает нажатия SKRHABE10, отслеживает уровень от родной педали, отслеживает сигналы от датчика скорости, выставляет уровень замещающий родную педаль через ЦАП по I2C. Сброс по тормозу, сцеплению, нейтрали - аппартный.
Всё это работает. Изучаю алгоритмы поддержания скорости ориентируясь на сигналы с датчика скорости.
viki13viki дисплей прямого отображения что ли ? Нельзя ли формировать картинку в буфере и целиком за раз обновлять ?
извени я не програмист, я художник и музыкант:(
не прописываею шрифт только размер прописываю myGLCD.setTextSize(2); не мигает но шрифт меньше чем нужен и шире.
любой адафрутовский шриф myGLCD.setFont(&FreeSerifItalic12pt7b); блин мигает.....
особенность библиотеки. При использовании встроенных шрифтов у каждого символа есть фон, который затирает прежнюю надпись. А у Адафрутовских шрифтов фона нет. если их выводить непосредственно - новые символы будут накладываться на старые. Поэтому при выводе такого шрифта сначала выполняется заливка старого текста цветом фона, а потом выводится новый - вот это и видно как "мигание".
бороться - либо борать более быстрый МК. либо кардинально переписывать библиотеку.
Придётся видимо порисовать и заменить родной шрифт в библиотеке на нужный без привлечения сторонних источников ...
тоесть Командир найти в библе адафруита стандартный шрифт и перерисовать его на свой? вопрос где он лежит в font лежат шрифты но там нет стандарт или чета похожее......... я бы поигрался бы и перерисовл , я же художник:) , порылся бы как это сделать...... на сколько я понимаю так как он работает через конветрер <UTFTGLUE.h> то он использует стандартный шрифт UTFT библы? правильно?