Страница 2 из 2

Добавлено: Пн окт 11, 2010 10:48 pm
Володимир
chipsoft писал(а):
Володимир писал(а):Но алгоритм работы правильный или нет?
Если бы он был правильным, то все работалдо бы. Очень похоже, что проблема с WakeUp-ом. Осцилограф в Вашем случае все прояснит.
Осцилографа к сожалению нет.

Добавлено: Вт окт 12, 2010 7:20 am
Володимир
Ну раз осцилографа нет попробую такой алгоритм:

1. посылка лог еденицы в линию
2. пауза 25 мс
3. посылка лог ноля в линию

далее паузу перед командой StartCommunication попробую циклически менять, может там получается задержка перед посылкой первого байта и команда WakeUp выходит за пределы 50мс.

По идее блок полюбому должен в ответ обратно переслать зеркало посылки, значит должно быть видно проснулся он или нет.

Добавлено: Вт окт 12, 2010 8:28 am
chipsoft
Вы чем паузу делаете? И уверены ли Вы, что она именно составляет 25 мс?

Вот примерно так должно работать:

uart = new UART();
uart->Open("\\\\.\\COM11",10400,8,ONESTOPBIT,NOPARITY);
uart->SetTimeOuts(200,200,200,200,200);
uart->WakeUpECU();
uart->CreateSBuffer("\x81\x10\xf1\x81\x03",5);
uart->WriteBytes();
uart->TimerWait(200);
uart->ReadBytes(xx);

void UART::WakeUpECU(unsigned int Delay)
{
Purge(PURGE_RXCLEAR | PURGE_TXCLEAR);
BreakON();
TimerWait(Delay); // 25 mc
BreakOFF();
TimerWait(Delay); // 25 mc
Purge(PURGE_RXCLEAR | PURGE_TXCLEAR);
}

Добавлено: Вт окт 12, 2010 9:36 am
Володимир
chipsoft писал(а):Вы чем паузу делаете? И уверены ли Вы, что она именно составляет 25 мс?
В PicBasicPro есть команда Pause, которая делает задержку в милисекундах.
chipsoft писал(а):Вот примерно так должно работать:

uart = new UART();
uart->Open("\\\\.\\COM11",10400,8,ONESTOPBIT,NOPARITY);
uart->SetTimeOuts(200,200,200,200,200);
uart->WakeUpECU();
uart->CreateSBuffer("\x81\x10\xf1\x81\x03",5);
uart->WriteBytes();
uart->TimerWait(200);
uart->ReadBytes(xx);

void UART::WakeUpECU(unsigned int Delay)
{
Purge(PURGE_RXCLEAR | PURGE_TXCLEAR);
BreakON();
TimerWait(Delay); // 25 mc
BreakOFF();
TimerWait(Delay); // 25 mc
Purge(PURGE_RXCLEAR | PURGE_TXCLEAR);
}
На каком языке это написано?

Добавлено: Вт окт 12, 2010 10:29 am
Володимир
chipsoft писал(а):Вы чем паузу делаете? И уверены ли Вы, что она именно составляет 25 мс?
Чтобы быть есче более точным попробую делать паузу в микросекундах.
PAUSE US 25000 25 милисекунд должно получится.

Добавлено: Вт окт 12, 2010 2:45 pm
chipsoft
Володимир писал(а):
chipsoft писал(а):Вы чем паузу делаете? И уверены ли Вы, что она именно составляет 25 мс?
Чтобы быть есче более точным попробую делать паузу в микросекундах.
PAUSE US 25000 25 милисекунд должно получится.
Где именно Вы делаете эту паузу? Если в Виндовс, функциями языка программирования, то пауза в таком случае может отличаться от заданной на +- 70%. Для некоторых ЭБУ это критично.

Добавлено: Вт окт 12, 2010 3:44 pm
Володимир
chipsoft писал(а):Где именно Вы делаете эту паузу? Если в Виндовс, функциями языка программирования, то пауза в таком случае может отличаться от заданной на +- 70%. Для некоторых ЭБУ это критично.
Это не в виндовс, пишу прошивку для микроконтролера PIC16F876A на языке PicBasicPro, если верить авторам литературы точность паузы зависит от точности работы тактового генератора, учитывая что у меня генератор на 16 мГц то ошибка должна быть не очен большой.

Добавлено: Вт окт 12, 2010 9:37 pm
Володимир
Как говорил кот Матроскин "Ура, заработало", алгортм работы у меня получился такой:

PORTC.6=1 //лог еденица на вих к-лайн
pause 300 //пауза 300 мс, время Tidle
PORTC.6=0 //лог ноль на вих к-лайн
pauseus 25000 //пауза 25000 мкс, время TiniL
PORTC.6=1 //лог еденица на вих к-лайн
pauseus 24000 //пауза 24000 мкс
serout2 PORTC.6, speed, [$81,$10,$F1,$81,$03] //посылка в микас команды StartCommunication
serin2 PORTC.7, speed, 700, startCom2, [otv[0],otv[1],otv[2],otv[3],otv[4],otv[5],otv[6]] //чтение ответа

Причиной неконекта неверное была слишком большая пауза перед посылкой команды StartCommunication. Что интересно, микас не дает в ответ зеркала команды тестера, при снятии логов с порта они наверное читаются с адаптера при передачи.

Кто хочет посмотреть на проект БК заходите на сайт http://www.bk-ukraine.narod.ru/ Первая рабочая прошивка появится к концу недели, она уже на сегодня показывает дату и время, а также показывает мгновенныq расход топлива, путевой\часовой в зависимости стоит автомобиль или едет положение дросселя и режим работы двигателя.

Спасибо всем откликнувшимся за помощь.

Добавлено: Чт ноя 04, 2010 10:37 pm
Володимир
Подскажите, если програмой АКМ делать калибровку дросселя, то калибровку делает сам микас или это АКМ записывает в микас минимальное и максимальное напряжение на ДПДЗ?