БК на інжектор своїми руками

Автор Володимир, 15 Червня 2010, 16:27:22

« попередня тема - наступна тема »

0 Користувачів і 1 Гість дивляться цю тему.

Сергей

Владимир, добрый день Вам и всем участникам этого форума! Снимаю шляпу перед Вами, за такой труд и за точто Вы единственный человек, который делится своими знаниями по этому протоколу! Я новичек сдесь, хотелось бы сделать для себя такое полезное устройство, но к сожалению имею опыт только с контроллерами AVR. Давно уже пытался подключиться к микасу, снимал логи программы kwp_d, долго мучился и забросил так как не получилось может на Ваш взгляд самого элементарного, это получить хоть какой то ответ от ЭБУ. Теперь когда случайно наткнувшись на Ваш сайт, перечитав все ветки этого форума, хочу попробовать еще раз. У меня есть пару вопросов к Вам, если Вам не трудно ответьте пожалуйста, буду очень Вам признателен. Как правильно делать инициализацию? У Вас на схеме кварц 20 MHz, как вам удалось получить без ошибок скорость 10400, или ее надо подбирать методом втыка в каких то небольших пределах отклоняясь от 10400? У меня программа в настройках USART при частоте 16-20 MHz и скорости 10400 сразу выдает 0,2% ошибок, может из за этого у меня ничего не получалось, выставляю на порт выхода USART \"0\" 25 мс., потом \"1\" 25 мс., затем включаю USART посылаю #81#10#F1#81#03 <- startCommunication, в ответ приходит только эхо с теми же байтами. Что делаю не так? Если не секрет то поделитесь пожалуйста! С уважением!

Саша

Цитата: Aleks_YaltaБК должен показать #01#62 -> $0162 -> 354 мм.рт.ст ,
а он показывает #01#62 -> $0162 -> 318 мм.рт.ст,
что тут может быть не понятного?

Та все уже давно понятно  :D .

зы. Про дружбу с математикой я не ошибся.

Саша

Цитата: S_007Как правильно делать инициализацию? У Вас на схеме кварц 20 MHz, как вам удалось получить без ошибок скорость 10400, или ее надо подбирать методом втыка в каких то небольших пределах отклоняясь от 10400? У меня программа в настройках USART при частоте 16-20 MHz и скорости 10400 сразу выдает 0,2% ошибок, может из за этого у меня ничего не получалось, выставляю на порт выхода USART \"0\" 25 мс., потом \"1\" 25 мс., затем включаю USART посылаю #81#10#F1#81#03 <- startCommunication, в ответ приходит только эхо с теми же байтами. Что делаю не так? Если не секрет то поделитесь пожалуйста! С уважением!

Что значит 16-20? Надо конкретную брать. И 0,2% это более чем нормально. Я для 8мгц ставил согласно расчетам 47. Для 16 будет 95.
Если у Вас инициализирован USART, то прямая запись на эти ноги не работает. Да и не надо туда единицы с нулями слать. Проинициализировали, и можете сразу смело слать пакеты. А эхо - это  так и должно быть, ведь K-Line работает в оба направления по одной линии. Сразу после эха должен прийти ответ.

Володимир

Цитата: S_007Владимир, добрый день Вам и всем участникам этого форума! Снимаю шляпу перед Вами, за такой труд и за точто Вы единственный человек, который делится своими знаниями по этому протоколу! Я новичек сдесь, хотелось бы сделать для себя такое полезное устройство, но к сожалению имею опыт только с контроллерами AVR. Давно уже пытался подключиться к микасу, снимал логи программы kwp_d, долго мучился и забросил так как не получилось может на Ваш взгляд самого элементарного, это получить хоть какой то ответ от ЭБУ. Теперь когда случайно наткнувшись на Ваш сайт, перечитав все ветки этого форума, хочу попробовать еще раз. У меня есть пару вопросов к Вам, если Вам не трудно ответьте пожалуйста, буду очень Вам признателен. Как правильно делать инициализацию? У Вас на схеме кварц 20 MHz, как вам удалось получить без ошибок скорость 10400, или ее надо подбирать методом втыка в каких то небольших пределах отклоняясь от 10400? У меня программа в настройках USART при частоте 16-20 MHz и скорости 10400 сразу выдает 0,2% ошибок, может из за этого у меня ничего не получалось, выставляю на порт выхода USART \"0\" 25 мс., потом \"1\" 25 мс., затем включаю USART посылаю #81#10#F1#81#03 <- startCommunication, в ответ приходит только эхо с теми же байтами. Что делаю не так? Если не секрет то поделитесь пожалуйста! С уважением!
Я USART, не використовую, так як навіть на стандартних швидкостях в порт видавались помилки, то я від нього відказався.
Мої бортжурнали: Славута; Ford Fusion

Сергей

Kino, спасибо огромное за ответ!

Извените пожалуйста за назойливость, но я всеравно не понял...
Цитата: KinoПроинициализировали, и можете сразу смело слать пакеты
А как проинициализировать? Если б Вы расказали по пунктам! Пусть у меня кварц 16 мгц куда нужно ставить число 95? Может Вы имели ввиду инициализацию регистров настройки USART? А разве инициализацию ЭБУ не надо делать?

Володимир

Цитата: S_007А разве инициализацию ЭБУ не надо делать?
Потрібно, в документі \"Keyword Protocol 2000 Спецификация канала связи с диагностическим оборудованием - Уровень обмена данными\", на сторінці 6, є діаграма з механізмом швидкої ініціалізації ЕБК.
Мої бортжурнали: Славута; Ford Fusion

Сергей

Владимир! Спасибо и Вам за ответ! Ну скажите, если делать програмный юзарт, я так понимаю это делается в виде сдвигового регистра? Нужно ли при этом добиваться скорости передачи 10400 или тупо передавать биты в порт на скорости процессора?

Володимир

Цитата: S_007Владимир! Спасибо и Вам за ответ! Ну скажите, если делать програмный юзарт, я так понимаю это делается в виде сдвигового регистра? Нужно ли при этом добиваться скорости передачи 10400 или тупо передавать биты в порт на скорости процессора?
Я пишу програми на ProtonBasic, в ньому достатньо відносно частоти кварца по формулі визначити величину параметра speed для потрібної швидкості, а далі все просто.

SerOut PORTC.6, speed, [$82,$10,$F1,$21,$01,$a5]
Мої бортжурнали: Славута; Ford Fusion

Саша

Цитата: S_007Kino, спасибо огромное за ответ!

Извените пожалуйста за назойливость, но я всеравно не понял...
А как проинициализировать? Если б Вы расказали по пунктам! Пусть у меня кварц 16 мгц куда нужно ставить число 95? Может Вы имели ввиду инициализацию регистров настройки USART? А разве инициализацию ЭБУ не надо делать?

Именно их я и имел ввиду. ЭБУ по умолчанию работает на 10400/8/N/1 (смотря какой). Если надо скорость менять, то это можно.
Программно лепить уапп на AVR с уже им имеющимся - не вмжу смысла (программный будет не лучше, т.к. все завязано от частоты). Все коректно работает. Если и будет сбой, то связь можно переустановить.
Вы сначала скажите какой чип у Вас...

Володимир

Цитата: KinoПрограммно лепить уапп на AVR с уже им имеющимся - не вмжу смысла
На АВР може програмний і нормально працює, а на ПІК в мене нехотів, і на кількох форумах я також зустрічав інформацію що на пік на апаратному дуже багато помилок. Програмний в мене працює чітко, ще ніразу збоїв не було.
Мої бортжурнали: Славута; Ford Fusion

Сергей

Kino, спасибо! Для теста сейчас пишу программу под mege8, а после, если все заработает, мне хватит и tiny2313, так как планирую полученные данные, те которые будет получать контроллер от эбу передавать в com порт мобильного телефона siemens сx70, а в нем под управлением ява приложения будет все выводиться на экран в удобном графическом виде, т.е контроллер у меня будет чисто посредником между эбу и телефоном, поэтому пойдет самый слабый контроллер.  Как настроить usart я то знаю и как работать с ним. Если Вы говорите что 0,2% ошибок это нормально,  меня это обрадовало и вполне устроит если нужно после потери связи т. е. ошибки еще раз передернуть инициализацию. Вы сказали что не надо перед посылкой никакие нули и единицы на линию выставлять, а Владимир сказал что согласно протоколу надо, вот тут я совсем запутался. Может Вы глянете по этой ссылке http://bascomavr.3bb.ru/viewtopic.php?id=330, если я все сделаю как там описано, будет правильно?

Володимир

Цитата: S_007а Владимир сказал что согласно протоколу надо, вот тут я совсем запутался.
Можеш попробувати посилати не нулі, а спочатку на швидкості якщо мені незраджує пам\"ять, 300 бод послати $F0, а потім зразу перелючатися на швидкість 10400 і посилати команду початку з\"єднання.
Мої бортжурнали: Славута; Ford Fusion

Саша

Я имелл ввиду что нельзя програмно устанавливать на выходах контроллера единицы и нули, после инициализации уапп. Шлите туда все что хотите, только уже через регистр UDR.

Саша

Цитата: S_007контроллер у меня будет чисто посредником между эбу и телефоном

Тогда по-любому один из них надо делать программно, т.к. у тини2313 один аппаратный уапп.

Сергей

Владимир и Kino не подберу слов благодарности за Ваши ответы! Теперь я понял, что много лет назад я пробовал имено так, как написал Владимир,  #F0#81#10#F1#81#03 и точно так переключал скорость, вот только не могу понять почему у меня ничего не получилось... Kino, судя по Вашим описаниям, Вы наверно хорошо разбираетесь в AVR, и Вы может делали подобный девайс на этих контроллерах, скажите, как делали Вы?