|
Виж темите без отговор | Виж активните теми
Дата и час: Нед Юли 26, 2026 11:25 pm
Комуникационен интерфейс на Audi 80 B4 1.9TDi ?
| Автор |
Съобщение |
|
gdh
Ранг: Минаващ
Регистриран на: Нед Окт 15, 2006 8:01 pm Мнения: 46
|
Моя пристигна миналата седмица, но още не ми е останало време да го пробвам. Засега работя само през симулатора. Библиотеката за дисплея я взех от нет-а и преработих някои неща по нея. Засега вадя текст с няколко шрифта но не намирам добри шрифтове по-малки от 5х7. На дневен ред е чертането на правоъгълници и кутиики
Тъй като дисплеите от този тип са със два чип-а 2х 64х64 може би затова в библиотеката имаш ограничение. Предполагам че трябва да има някаква функция chipselect(left/right) или нещо от рода.
Странното при мен е че не успявам да чета информация от дисплея. Не знам дали в симулацията е проблема или в библиотеката ми. Пиши при теб дали става. Проблема е че когато искам да нарисувам pixel не мога да прочета кои пиксели са вече "запалени" на съответния page (byte). Резултата е че се показва точката но тези които са се виждали досега се изтриват.
 Тъй като си избрах нов пик с повече рам/ром реших проблема като си заделих 1024 байта буфер за лцд-то. Така всички операции стават локално на контролера и в определен момент целия буфер се прехвърля на дисплея. По този начин освен всичко останало не е необходимо да се следи в коя част на дисплея съм и кой чип трябва да е избран. Избирането на чипа става при самото прехвърляне на буфера.
Следвашия път ще сложа някой скрииншот от протеус.
Мен все по-сериозно ме тревожи проблема къде ще седи този дисплей  Големичък е за да пасне на DIN слот-а пък нещо не ми харесва да висят кутиики със кабели из купето 
|
| Пон Мар 24, 2008 11:58 am |
|
 |
|
gdh
Ранг: Минаващ
Регистриран на: Нед Окт 15, 2006 8:01 pm Мнения: 46
|
Ето един скрииншот. Това в горната част е картинка заредена от ром-а а в долната част са начертани с функции.
Картинката я взех от един пример за dsPic от сайта на microchip. Мисля обаче да направя една функция дето да чете стандартни bmp файлове или поне да ги конвертира до С масив.
|
| Чет Мар 27, 2008 4:39 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Аз съм на същия етап  . Засега опитвам да управлявам дисплея само на Proteus, но в най-скоро време мисля да го пробвам и на живо. Библиотеката съм взел от компилатора на С (PIC C Compiler CCS) и по-точно ползвам HDM64GS12.c и graphics.c. Ще постна и една картинка  . От опит вече установих, че това функцията си го прави автоматично, т.е. когато изчертавам пиксел с координати 0,0 например имам CS1=1,CS2=0, а когато е 64,0 - CS1=0,CS2=1, но това библиотеката го прави автоматично и не се налага аз да превключвам ръчно чипа. Това наистина е голям проблем, защото и аз не очаквах да е толкова голям  . Мисля да му направя една пластмасова кутийка и да се сложи отгоре на таблото. Малко грозно ще е ама засега не ми хрумва друго. Браво! Поздравления, аз съм по-зле  Не мога да изобразявам картинки
Аз също намерих няколко картинки (монохромни) с 128х64 пиксела, но нещо не мога да се ориентирам още как да ги рисувам на дисплея. Намерих в нета програма (Bitmap2LCD.exe) която прави от такова *.bmp с разделителна 128х64 пиксела хедър файл *.h който представлява масив от стойности, даващи информация за картинката, но все още си нямам идея как да ползвам този хедър файл и как да показвам картинки на дисплея  . Нещо не знам защо и примери в нета не намирам много??? Ако можеш да дадеш малко жокери, ще съм ти благодарен  . Ето една картинка ориентировъчно до къде съм стигнал. То не е много (да не кажа нищо) и всичко съм чертал с функциите който са наготово дадени в библиотеките които ползвам (по-горе). Аз също успях да намеря няколко хедър фаилове на готови шрифтове, но никъде не успях да намеря функция или библиотека за четене на .bmp фаилове.[/code]
Последна промяна daniel_stefanov на Пон Мар 31, 2008 10:52 am, променена общо 1 път
|
| Пет Мар 28, 2008 2:49 pm |
|
 |
|
gdh
Ранг: Минаващ
Регистриран на: Нед Окт 15, 2006 8:01 pm Мнения: 46
|
Аз успях да намеря една програма която конвертира картинки към С масив. Има функция за писане на текст със произволен инсталиран на компа шрифт и с произволна големина. Най-хубавото е че е безплатна. Малко е дървена, но върши безценна работа. Казва се FastLCD:
http://www.fastavr.com/fastlcd.zip
За текст въвеждаш ascii символите които ти трябват:
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^
_`abcdefghijklmnopqrstuvwxyz{|}~
И хоп, имаш си нов шрифт
Изходния формат е масив със width*height/8 байта. Картинка 32х32 ще бъде представена с масив от 128 байта като ще имаш
a[ 0], a[ 1], a[ 2] ... a[31]
a[32], .... a[63]
...
a[96] ... a[127]
Или ако ти е по-лесно може да го разглеждаш като двумерен масив a[page][width]
За Лцд-та е описано доста добре тук:
http://www.geocities.com/dinceraydin/lcd/gfxintro.htm
http://www.geocities.com/dinceraydin/lcd/gfxhowto.htm
Поздрави
|
| Пет Мар 28, 2008 6:06 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
хммм че трябва ли ти специална програма за да генерираш картинка, защо просто не позлвате .bmp в B/W ?
|
| Пет Мар 28, 2008 7:06 pm |
|
 |
|
gdh
Ранг: Минаващ
Регистриран на: Нед Окт 15, 2006 8:01 pm Мнения: 46
|
bmp пази информацията за пикселите в друг ред. Не става просто с copy/paste. Може разбира се преобразуването да се прави от микроконтролера но ще е излишна загуба на ресурси да се прави при всяко визуализиране.
Говоря само за лцд с драйвер ks0108. за други не съм сигурен.
|
| Пет Апр 04, 2008 12:29 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
 |  |  |  | Цитат: Аз успях да намеря една програма която конвертира картинки към С масив. Има функция за писане на текст със произволен инсталиран на компа шрифт и с произволна големина. Най-хубавото е че е безплатна. Малко е дървена, но върши безценна работа. Казва се FastLCD: http://www.fastavr.com/fastlcd.zip За текст въвеждаш ascii символите които ти трябват: !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _`abcdefghijklmnopqrstuvwxyz{|}~ И хоп, имаш си нов шрифт |  |  |  |  |
Благодаря за програмката, аз също я бях намерил някъде в нета, но не се бях сетил че мога да си направя шрифт като използвам за всеки символ bmp картинка  . Но въпросът ми по скоро беше как вече направеният масив да го чета и изобразявам (ако е картинка) в/у дисплея. И ако има готова функция да прави това ще е добре, защото честно казано нямам много време да пиша засега  . Благодаря за линковете, ще намеря малко време да се запозная по добре (може би тук е отговора на моя въпрос).
ToHu, точно това правя. От готова картинка .bmp (било то цветна или монохромна) я правя b/w и след това с тази програмка представям катринката която вече е b/w в 128х64 точки (колкото ми е дисплея) в масив, който вече незнам какво да правя  . Удобно ли е да дадеш малко повече инфо? Благодаря!
Иначе ето малко снимки до къде съм стигнал с дисплея и борд компа като цяло.
Имам също един малък проблем с дисплея, който не знам как да го реша елегантно. Тъй като принципа на изобразяване при тези дисплеи е че от число правя преобразуване в стринг и след това показвам на екрана стринга при изтриване на старата стойност и показване на новата се получава едно премигване което при една стойност на екрана не се забелязва, но при всички тези и особенно на големия текст се забелязва и е доста дразнещо. Изтриването на старата стойност правя така:
var_air_temp = 0.1*values[7]*values[8]-10*values[7];
sprintf(air_temp_Text, "%f", (float)var_air_temp);
air_temp_Text[4] = '\0';
glcd_rect(0, 3, 22, 10, YES, OFF);
glcd_text57(0, 3, air_temp_Text, 1, ON);
Имам един идея която не съм сигурен че е удачна и тя е да изчертавам данните само ако има промяна, а не постоянно. Но ще го пробвам опитно и ще кажа какво е станало.
Следващото нещо са бутоните и евентуално менюта, за които не съм сигурен че ще правя защото като цяло ще разсейват човека който кара. Идеята е с натискане на бутон да променя само текста в средата (големия шрифт), а другите 4ри (в четирите краища) да са си постоянни (тези които са на дисплея в момента са примерни!!!).
Как според Вас е по-добре да се обработват бутоните??? С прекъсване да кажем през 1-2мс дали е добър вариант. Опасявам се че ако направя времето по голямо ще се наложи да натискам по 2-3 пъти за да променя меренето в средата на дисплея. Давайте идеи! Поздрави![/code]
|
| Пет Апр 04, 2008 12:53 pm |
|
 |
|
gdh
Ранг: Минаващ
Регистриран на: Нед Окт 15, 2006 8:01 pm Мнения: 46
|
Може би, понеже компилатора който ползваш върши повечето черна работа не ти се е налагало да стигаш до страничната организация на паметта в дисплея. Най-добре прочети двата линка дето съм сложил горе.
Един байт от масива съответства на 8 пиксела в един page от паметта на дисплея. Ако прехвърлиш 128 байта всъщност визуализираш картинка 128x8. след това слизаш един page надолу и печаташ следващите 128 байта и така правиш за всички 8 pages (64 pixels)
 Трябва да се има предвид като минеш 64-тия байт да смениш CS така че да продължиш по дясната половина от дисплея.
Без примери ми е трудно да го обясня пък и те хората са го описали доста добре.
Иначе ме кефи колко бързо лепиш хардуера  Аз съм повече по писането и мисля да направя 90% на симулатора и чак тогава да запоявам.
Супер изглежда дисплея.
Мислил ли си нещо за ММС? Идеята ми е да събирам статистика за няколко параметъра - примерно MAF, MAP, моментен разход. Така и така ще ги показвам.
Също така гледах ето тези http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=230235263965 джаджи и се чудя дали мога да им намеря приложение за нещо 
|
| Вто Апр 08, 2008 3:52 pm |
|
 |
|
stanleyhacker
Ранг: Новодошъл
Регистриран на: Чет Дек 02, 2004 7:22 pm Мнения: 140
|
Колега, как точно събуди ЕКУ-то. Аз моя скапан фиат с Бош ЕКУ пробвах какво ли не - 0х01, 0х10, 0х33, 0х15 на 5 бода, ама никакъв ефект. И по Л линията и по К линията, мълчи, като партизанин.
|
| Чет Апр 10, 2008 3:06 pm |
|
 |
|
decho
Ранг: Минаващ
Регистриран на: Пет Авг 19, 2005 6:40 pm Мнения: 9
|
Здравейте!
Оптвам се да подкарам комуникацията с ECU на Seat Ibiza 2000г. Успешно прочитам първите няколко блока, но след това ECU-то неочаквано спира да отговаря. Записах "разговора" uC <--> ECU в EEPROM-а, но не мога да разбера защо се получава така. Някой има ли идея защо се получава така?
|
| Чет Авг 14, 2008 10:22 am |
|
 |
|
forest_gump
Ранг: Професионалист
Регистриран на: Сря Окт 13, 2004 11:24 pm Мнения: 500 Местоположение: Стара Загора
|
можеш ли да кажеш какъв com port sniffer си ползвал
|
| Съб Авг 16, 2008 5:56 pm |
|
 |
|
decho
Ранг: Минаващ
Регистриран на: Пет Авг 19, 2005 6:40 pm Мнения: 9
|
Не съм ползвал снифер. Записах данните в EEPROM-а на PIC-а и после ги копирах от програматора в WORD и ги обработих на ръка.
Явно не спазвам някое време-закъснение. Имам по 10ms преди да пратя всеки байт и ~80ms преди съобщение, когато uC e master. Някой може ли да ми каже какви трябва да бъдат времената за KW1281? 
|
| Пон Авг 18, 2008 1:11 pm |
|
 |
|
forest_gump
Ранг: Професионалист
Регистриран на: Сря Окт 13, 2004 11:24 pm Мнения: 500 Местоположение: Стара Загора
|
Едно се бях запалил да правя четец със пик за ЕКУ на VW по KWP1281, записах със вторият ком порт на компютър на който вървеше обмена между VagCom и ECU-то , хардуера се прави много лесно за паралелното четене на обмена, доколкото си спомням нямаше строго дефинирани времена за отговор на слейва и мастера, зора беше веднъж да се запали обмена между двете, според моите анализи можеше да се забави отговора от мастера или слейва до 0.3 сек дори, и пак комуникацията не дропваше. Според мен по скоро не спазваш някое правило за правилен отговор или хардуерно пречиш на EKU то да си прочете ехото от предадената информация към mcu-то ти. Аз ползвах едно много старо ЕКУ на BOSCH от 1992г, процесора в него беше 8051 на 11.59Мхц , управлението на подаването на гориво към двигателя беше вързано към външно прекъсване от датчика на хол със най-голям приоритет и когато ЕКУ-то комуникираше със VagCom-a при обороти на 2500 комуникацията спираше по вина на ЕКУ-то , то просто нямаше ресурси да обслужва KWP1281 но като паднат оборотите комуникацията се възстановяваше!
Аз постигнах само събуждане и прочитане на серийният номер и версията на софта на ЕКУ, ползвах Atmel 89C2051, тогава писах на асемблер и всичко ставаше много бавно, бях направил софтуерен сериен порт само за предаване на прочетените данни а със хардуерният правих комуникацията кум ЕКУ.
Опитах се да намеря инфо за кодовете с които трябва да активирам подаването на информацията и подадресите за данните но намерих само някакви бегли загатки по разни стандарти но нищо конкретно за KWP1281. За събуждане изпозвах софтуерно клатене на трансмит пина на серийният порт като имитирам 5 битова дума за събуждане на ЕКУ-то за да започне комуникация със дадено устройство, било то ЕКУ, АБС, възглавници и т.н. докато не отговори с 55 или нещо подобно беше за да се синхронизира скороста на обмен на която може да предава ЕКУ-то. Накрая от отчаяние прочетох епрома на ЕКУ-то и започнах да го деасемблирам, оказа се че там са само масиви с данни за таблиците за предварението широчината на импулса и т.н. и други непонятни неща за двигателя истинската програма беше във вътрешната 4кБ памет на 8051.
После времето ми за развой се трансформира в гледане на деца и така нещата утекоха, имах желание да поработя и да го направя със pic18f2550 като данните да ги хвърля по USB и на LCD нещо като борд комп. но уви само със мерака си останах. Наскоро попаднах на това http://infoboardbg.com/ и много се изкефих даже им писах за моята кола да ли имат направена такава джаджа да си купя но досега нямам отговор незнайно защо!
|
| Съб Авг 23, 2008 12:47 pm |
|
 |
|
decho
Ранг: Минаващ
Регистриран на: Пет Авг 19, 2005 6:40 pm Мнения: 9
|
Проблема със забиването е отстранен. Имаше една грешка при приемането на блок от ЕКУ-то, когато няма данни  . След като я отстраних и комуникацията тръгна, но беше нестабилна и прекъсваше през различни интервали. Предполагам заради грешки при приемането или предаването. Прерових нета, но не открих нищо конкретно какво се прави, когато има грешно приети данни.
Ето какво установих опитно:
При приемане на данни (ECU e master), ако сумата на изпратения байт + ехото, което се връща към ЕКУ-то е различна от 0xFF, или времето за отговор на контролера е по-голямо (в моя случай мисля, че беше около 100ms), ЕКУ-то започва да предава отначало целия блок, веднага след сгрешения байт. При предаване (ECU-to e slave), контролера трябва да следи за "правилното ехо". Ако има грешка, продължава с изпращането на блока, но не праща 0x03 за край на блока, а някакво друго число. Тогава ЕКУ-то връща блок с команда 0x0A и данни "номера на сгрешения блок", след което сгрешения блок се предава отначало със същия номер. Напр. ако се е получила грешка при предаването на блок №6, ЕКУ-то връща: 04 07 0A 06 03 (hex).
Това е от мен, надявам се информацията да е полезна, но не гарантирам че е изчерпателна и напълно вярна. Ако някой знае повече, моля да сподели!
|
| Вто Авг 26, 2008 2:37 pm |
|
 |
|
Peyu
Ранг: Минаващ
Регистриран на: Чет Дек 11, 2014 12:14 am Мнения: 1
|
 Re: Комуникационен интерфейс на Audi 80 B4 1.9TDi ?
Здравейте! Съжалявам, че дигам стара тема, но искам да попитам. Има ли някой които е готов да ми направи такъв интерфейс на Passat B5 2000-та 1.9TDI срещу заплащане и колко би ми струвало удоволствието? Благодаря! 
|
| Чет Дек 11, 2014 12:17 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 10 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|