Излишно е да искаш старт на диагностиката. И без това ЕКУ-то ще я откаже.Направо започвай да рекуестваш диагностични данни. 0x21 0xXX.Описание има и в ПДФ-а и в .def файловете на UniDiag.Имай в предвид, чe K линията е инвертирана в iso.hОтносно кода ти.Гледам, че конфигурираш USART-a... Тази библиотека не го използва. Използва бит-банг усарт.Ако искаш си преправи iso.h така, че да работи с usat-a.Имай в предвид:1. Кварца ти трябва да е на честота кратна на 10400 (което е почти невъзможно)2. Трябва да помислиш как ще направип INIT таймингите през USART-а.3. Пращай fast init докато получиш правилен отговор. Обикновенно се връзва от първия път, но след старт на мотора ще ти откаже няколко пъти.4. CS не са оборотите, а чек сумата, която съм сметнал от съобщението. Трябва да съвпада с тази от съобщението.5. Формата на рекуеста малко е грешен:написал си : {0x81, 0x0A, 0xF1, 0x10, 0x81}в този случай е 0х82 - защото пращаш два байта данни.0x82, 0x0A, 0xF1, 0x21, 0x30, CSТрябва да получиш0x84, 0xF1, 0x0A, 0x61, 0x30, 0xXX, 0xXX, CS4 означава 4 байта данни. 0х61 е правилен отговор на 0х21.0х30 е отговора на въпроса 0х30следват два байта с оборотите.Прочети хубаво първата страница на темата.След инициализация може да пропуснеш предаването на адресите 0xf1 0x0a (0x10).ако не ги изпращаш тогава съощенията изглеждат така:RQ: 0x02, 0x21, 0x30, CSRSP: 0x04, 0x61, 0x30, 0xXX, 0xXX, CSЖелателно е да имаш осцилоскоп (ако ще и през звуковата карта) или логически анализатор.Таймингите са много критични.Вързал си LCD С хардуера до къде си ?
Реклама
Collapse
Съобщение
Collapse
No announcement yet.
Fiat Live Data Reader [Bosch EDC15 ECU протокол ?]
Collapse
X
-
Като за начало ти предлагам да процедираш така:Направи си хардуера. После си напиши програма, която само да слуша какво минава по К линията.Не изпращай нищо. Единственото, което правиш е каквото прочетеш да го дисплейваш на LCD-то или го пусни към лаптопа прес uart-a (ако е останал свободен).Пускаш UniDiag-a или FES-а и подслушваш.Така ще си си сигурен, че четеш правилно от К линията.04/2000 Fiat Brava 1.9 JTD 105+
Коментар
-
Първи опит - неуспешен. Имам 2 предположения:1. Проблем с хардуера2. Проблем с таймингитеСледвам тази схема за K-Line:Транзисторите, които ползвам са: Един BC556B и 3 BC548B. Резисторите са като в схемата.Този Activity Led премигва за кратко всеки път като захраня платката и си седи угаснал след това :D.Ползвам кристал и съм сетнал фюзовете за 16MHz. F_CPU ми е 16000000UL. Мисля, че кода е ок.Код:int main(void){ lcd_init(); lcd_clrscr(); wdt_disable(); // make sure the watchdog is not running UBRRH = UART_BAUDRATE>>8; // set baud rate UBRRL = UART_BAUDRATE; UCSRB =((1<<RXCIE)|(1<<RXEN)|(1<<TXEN)); // enable Rx & Tx, enable Rx interrupt UCSRC =((1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)); // config USART; 8N1 serial_msg_pntr = (signed char *)&serial_msg_buf[0]; // init serial msg pointer iso_glob.uart_n_baud = N_10400; // set baud rate to 10,4kBaud iso_hardware_init(); // init ISO hardware iso_uart_init(); // init ISO software UART ident(); // send identification to terminal serial_putc(’>’); // send initial command prompt sei(); // enable interrupts int iSuccess = 0; int n=0; while(iSuccess == 0 && n < 100) { lcd_clrscr(); if(iso_fast_init() == ISO_RETURN_CODE_OK) { lcd_puts("ECU Connection:"); lcd_goto(40); lcd_puts("Successful!"); iSuccess = 1; } else { lcd_puts("ECU Connection:"); lcd_goto(40); lcd_puts("Error!"); } _delay_ms(100); n++; } _delay_ms(500); if(iSuccess == 1) { //unsigned char diagmode[5] = {0x81, 0x0A, 0xF1, 0x10, 0x81}; sei(); unsigned char return_code; //return_code = iso_send_msg(diagmode, sizeof(diagmode)); unsigned char time_count = 0; unsigned char msg_buff[260]; timeout_multiplier = 0x19; int db, cs, res, i; /*if(return_code == ISO_RETURN_CODE_OK) { do { iso_recv_msg(msg_buff); ++time_count; db = msg_buff[0] & FMT_MSG_LENGTH; cs = 0; for(i = 0; i < db + 1; i++) { cs += msg_buff[i]; } if ((msg_buff[db + 1]==cs) && (msg_buff[0]!=0)) { res = 1; } else { res = 0; } } while((time_count < timeout_multiplier) && (res == 0)); }*/ unsigned char rpm_request[5] = {0x82, 0x0A, 0xF1, 0x21, 0x30}; int rpm1=0, rpm2=0; char text[16], rpm_str1[5], rpm_str2[5]; while(1) { return_code = iso_send_msg(rpm_request, sizeof(rpm_request)); time_count = 0; db=0; cs=0; res=0; if(return_code == ISO_RETURN_CODE_OK) { do { iso_recv_msg(msg_buff); ++time_count; db = msg_buff[0] & FMT_MSG_LENGTH; cs = 0; for(i = 0; i < db + 1; i++) { cs += msg_buff[i]; } if ((msg_buff[db + 1]==cs) && (msg_buff[0]!=0)) { res = 1; } else { res = 0; } } while((time_count < timeout_multiplier) && (res == 0)); if(msg_buff[3] == 0x61) { rpm1 = msg_buff[5]; // RDBLI_2000, 0x21, 0x30, "Engine speed", 1, "Engine speed", 1, "#scaling unsigned 2 X*1 RPM"; rpm2 = msg_buff[6]; lcd_clrscr(); strcpy(text, "RPM: "); itoa(rpm1, rpm_str1, 10); itoa(rpm2, rpm_str2, 10); strcat(text, rpm_str1); strcat(text, " "); strcat(text, rpm_str2); lcd_puts(text); _delay_ms(150); } } } } return 0;}
Коментар
-
Виж в по-горния ми пост няколкото забележки.Използваш УСАРТ-а на контролера, а iso.h не работи с него!Схемата ти е права, не инвертираща. Тогава разкарай тези редове:Код:#define ISO_K_LINE_OUT_NEG // define K line output level inverted by hardware#define ISO_L_LINE_OUT_NEG // define L line output level inverted by hardware#define ISO_K_LINE_IN_NEG // define K line input level inverted by hardware
04/2000 Fiat Brava 1.9 JTD 105+
Коментар
-
Когато коментирам:Код://#define ISO_K_LINE_OUT_NEG // define K line output level inverted by hardware//#define ISO_L_LINE_OUT_NEG // define L line output level inverted by hardware//#define ISO_K_LINE_IN_NEG // define K line input level inverted by hardware
Коментар
-
Здравейте,Преди два дни един колега ми даде едно устройство за поправка. Нещо вързал кабелите наопаки...Ремонтирах го и го пуснах за тест. Колегата не е ресетвал трип А от 01/02/2014. Навъртял е 5531 km, 497 lt, 432 h. Много готино се почувствах Ето и клип: https://www.youtube.com/watch?v=tS3FNF9UVUQ04/2000 Fiat Brava 1.9 JTD 105+
Коментар
-
vgeorgiev написа:Здравейте,Преди два дни един колега ми даде едно устройство за поправка. Нещо вързал кабелите наопаки...Ремонтирах го и го пуснах за тест. Колегата не е ресетвал трип А от 01/02/2014. Навъртял е 5531 km, 497 lt, 432 h. Много готино се почувствахOVB X18XE1 седан+ГИ
Коментар
Реклама
Collapse
Коментар