Добрый день уважаемые нужна ваша помощь, разбираюсь в протоколе для тойоты (Chaser 100 двиг 1G-FE beams) примирительно для платформы Arduino(avr). На данный момент интересует сама инициализация (fast init), почитал описание протокола для тойоты(очень и очень кратко на одном листе) от el66 и набросал скетч, который наглядно показывает, что я понял из прочитанного. Скорее всего я что-то перепутал или забыл, помогите пожалуйста.
PHP код:
byte iso_init()
{
byte b;
digitalWrite(K_OUT, HIGH); // Даём к-лайну 1 на 2 секунды
delay(2000);
// WakeUp сигнал
digitalWrite(K_OUT, LOW); // Опускаем к-лайн в 0 на 35 секунд
delay(35);
digitalWrite(K_OUT, HIGH); // Снова поднимаем до 1 на 15 секунд
delay(15);
Serial.begin(9600); // Устанавливаем скорость в 9600 бод
// Посылка запроса на установку связи, побайтово
iso_write_byte(0x81); // Тут вроде все ясно 0х80 + datalen
iso_write_byte(0x13); // Адрес ECU, очень надеюсь что он 0x13 у меня
iso_write_byte(0xF0); // Тут вообще засада ))) как узнать адрес мой ардуины?
iso_write_byte(0x81); // SID запроса на соединение
iso_write_byte(0x05); //Контрольная сумма
// Читаем что идет в ответ
iso_read_byte(&b); // Заголовок пропускаем потому как он нам не интересен
iso_read_byte(&b);
iso_read_byte(&b);
iso_read_byte(&b); // Сам ответ!! Очень ожидаем там увидеть 0xC1
if (b !=0xC1) {
return 1;
}
iso_read_byte(&b); // битовая
iso_read_byte(&b); // маска
iso_read_byte(&b); // Контрольная сумма.. пока тоже не интересно
delay(200); //ждем 200мс
// Посылаем запрос на возможность диагностического режима
iso_write_byte(0x82); //
iso_write_byte(0x13); // Заголовок как обычно
iso_write_byte(0xF0); //
iso_write_byte(0x10); //Запрос диагностики
iso_write_byte(0x00);
iso_write_byte(0x95); //Контрольная сумма
//И так же ждет положительного ответа ввиде 0х50
iso_read_byte(&b); // Заголовок пропускаем потому как он нам не интересен
iso_read_byte(&b);
iso_read_byte(&b);
iso_read_byte(&b);
if (b !=0x50) {
return 1;
}
iso_read_byte(&b);
delay(200); //и опять спим 200мс
return 0;
}