Бортовой компьютер на инжектор

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 23 ноя 2012, 12:26

Не знаю почему, но в данный момент конструкция работает как надо, что это было хз.
Мистика... :)
Sprintf ?
Так у меня уже массив char mas[16];
такой же как я сделаю для LCD char LcdBuffer[16];

подозреваю были глюки :shock:
Дальше интереснее:
С точки зрения оптимизации телодвижений как лучше поступить в данном случае ?
Есть ответы устройства, которые принимаю по USART
Выглядят вот так:
OK
>
NO DATA
>
6A0102F4000000
>

из последнего нужно выкусить вот это "02F4", преобразовать в десятичное и потом поделить, умножить и др.
брать из массива по очереди значения 5-6-7-8 или можно как-то попроще?
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение elmot » 23 ноя 2012, 12:37

sscanf, например
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 23 ноя 2012, 17:13

elmot писал(а):sscanf, например

Можно примерчик ? Чесслово моск сломал.
Что-то правдоподобное получается если использовать
sprintf, printf. Но нюансы как всегда не уловил...

Сделал массив на 4 символа, char massiv_4 [4]; в него перенес нужные данные.
printf("massiv_4 %s\r\n",massiv_4); при вот таком выводе получается нужная строка, но мне нужно десятичное число для последующей обработки
printf("massiv_4 %u\r\n",massiv_4); вот так не получается...точнее получается число, но не то что ожидается:)
Например: в массиве 5-6-7-8
вот в этом случае %s в терминале 5678
а если так %u в терминале 1319
Всяческие попытки преобразовать сначала в строку а потом в число типа sprintf (LcdBuffer,"%s",massiv_4);
безуспешны, получается что угодно, только не 22136.
Я конечно понимаю, что "МК это просто ©" но чтобы настолько :lol:
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение elmot » 23 ноя 2012, 17:44

Советую все-таки книжку по С(С++ - не трогать!) почитать, а не по МК, особенно раздел про символы, строки и типы данных.

Sun-dey писал(а):
elmot писал(а):sscanf, например

Можно примерчик ? Чесслово моск сломал.
Что-то правдоподобное получается если использовать
sprintf, printf. Но нюансы как всегда не уловил...

В любой книжке по С есть примеры, переписать что-то оттуда сюда делу не поможет.
Sun-dey писал(а):Сделал массив на 4 символа, char massiv_4 [4]; в него перенес нужные данные.
printf("massiv_4 %s\r\n",massiv_4); при вот таком выводе получается нужная строка, но мне нужно десятичное число для последующей обработки

Честный вывод строки, все правильно.
Sun-dey писал(а):printf("massiv_4 %u\r\n",massiv_4); вот так не получается...точнее получается число, но не то что ожидается:)
Например: в массиве 5-6-7-8
вот в этом случае %s в терминале 5678
а если так %u в терминале 1319

В printf во втором аргументе уходит АДРЕС строки. %u - и printf трактует этот адрес как целое число. Волею Аллаха строка лежит по адресу 1319.

Sun-dey писал(а):Всяческие попытки преобразовать сначала в строку а потом в число типа sprintf (LcdBuffer,"%s",massiv_4);
безуспешны, получается что угодно, только не 22136.
Я конечно понимаю, что "МК это просто ©" но чтобы настолько :lol:

sprintf ни при каких условиях не превращает строку в число. Это ВЫВОД форматированной строки в строковый буффер. Разбирают строки функции scanf(из стандартного ввода),fscanf(из файла),sscanf(из памяти).

Кстати, о птичках. Ни при каких условиях не следует использовать sprintf. Он не следит за границей выходного буфера, велик шанс за эту границу вылезти и заполнить мусором рядом лежащие значения. snprintf - следит за границей, вот его и мучайте.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 22 мар 2015, 19:16

эволюция есть у проэкта?
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 22 мар 2015, 19:41

Да, я же в программировании прокачался немного за это время :D . Научил мерять длительность впрыска, напряжение, свет включать-выключать, менюшку вменяемую сделал. В планах был автозапуск, но до него дело не дошло. Собрал на макетке и всё, нормальную печатку сделать пока негде. Так и не смог победить глюки при отключении релюшки. Вот что получилось https://www.youtube.com/watch?v=3J6Jne3XX7o
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 25 мар 2015, 20:56

а прошивку того, что на видео можно поиметь?
P.S. сейчас сделал с той прошивкой, что в этой теме
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 26 мар 2015, 00:14

Это уже совсем другая поделка. Схемы разные, мега уже 32. Если интересно- могу дать прошивку.
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 26 мар 2015, 10:01

Конечно интересно! Жду прошивку и схемку.
А пока пару вопросов по тому, что в этой теме.
1. По умолчанию параметр Forsunka стоит 830. Тут нужно выставлять производительность одной форсунки, или всех вместе взятых?
2. По умолчанию параметр Speed стоит 5000. Мне нужно (по предварительным подсчётам) 3000. Две тысячи листать кнопками оооооочень долго. Хотел поменять этот параметр в прошивке. Но компилировать не получилось :(
Строка 34. Ошибка, пишет , что "declaration syntax errors"
interrupt [TIM0_OVF] void timer0_ovf_isr(void){Speed_For_light=0;time++;if (time>10) {time=0;ADCSRA|=0xCB;};};
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 26 мар 2015, 15:01

AndreiPol писал(а):Конечно интересно! Жду прошивку и схемку.
А пока пару вопросов по тому, что в этой теме.
1. По умолчанию параметр Forsunka стоит 830. Тут нужно выставлять производительность одной форсунки, или всех вместе взятых?
2. По умолчанию параметр Speed стоит 5000. Мне нужно (по предварительным подсчётам) 3000. Две тысячи листать кнопками оооооочень долго. Хотел поменять этот параметр в прошивке. Но компилировать не получилось :(
Строка 34. Ошибка, пишет , что "declaration syntax errors"
interrupt [TIM0_OVF] void timer0_ovf_isr(void){Speed_For_light=0;time++;if (time>10) {time=0;ADCSRA|=0xCB;};};


Что такое 830 точно не помню уже, вроде бы время в мкс, за которое вливается 1мл.
5000 - количество импульсов с датчика скорости на 1 км.
Ошибка при компиляции- не та версия компилятора.
В новой версии я ушёл от 830, теперь задаётся именно производительность в мл/мин.
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 26 мар 2015, 15:31

По умолчанию параметр Forsunka стоит 830. Тут нужно выставлять производительность одной форсунки, или всех вместе взятых?
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 26 мар 2015, 16:08

99 % что всех :)
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 27 мар 2015, 19:18

такс, с ошибкой разобрался. в конце точка с запятой лишняя. А что насчёт последней прошивки со схемой?
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 27 мар 2015, 21:59

Вот текущая версия, если что спрашивай :)
Вложения
mondeo.0.2 - текущая версия в машине.zip
(336.31 КиБ) Скачиваний: 0
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение AndreiPol » 28 мар 2015, 09:01

ок!
каково назначение кнопок ГАБ, АСС и той. что + на вход форсунки подаёт?
AndreiPol
 
Сообщения: 13
Зарегистрирован: 18 мар 2015, 12:24

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

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