Показать сообщение отдельно
Старый 21.06.2011, 14:53   #2773
avante
Новый Пользователь
 
Регистрация: 21.06.2011
Возраст: 39
Регион: 77, 97, 99, 177
Машина: Chaser GX100 BEAMS vvti
Сообщений: 1
avante is on a distinguished road
По умолчанию

Добрый день уважаемые нужна ваша помощь, разбираюсь в протоколе для тойоты (Chaser 100 двиг 1G-FE beams) примирительно для платформы Arduino(avr). На данный момент интересует сама инициализация (fast init), почитал описание протокола для тойоты(очень и очень кратко на одном листе) от el66 и набросал скетч, который наглядно показывает, что я понял из прочитанного. Скорее всего я что-то перепутал или забыл, помогите пожалуйста.
PHP код:
byte iso_init()
{
  
byte b;

  
digitalWrite(K_OUTHIGH);      // Даём к-лайну 1 на 2 секунды
  
delay(2000);

  
// WakeUp сигнал
  
digitalWrite(K_OUTLOW);       // Опускаем к-лайн в 0 на 35 секунд
  
delay(35);
  
digitalWrite(K_OUTHIGH);       //  Снова поднимаем до 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 (!=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 (
!=0x50) {                            
                return 
1;
                }
  
iso_read_byte(&b); 
  
delay(200);                     //и опять спим 200мс

    
return 0;

avante вне форума   Ответить с цитированием