PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Для новичков (http://pccar.ru/forumdisplay.php?f=9)
-   -   Дисплей климатроника от BMW E90 (http://pccar.ru/showthread.php?t=20939)

s.m. 14.07.2014 19:04

Цитата:

Сообщение от Murkur (Сообщение 302120)
Отсканировал... Таки адрес 0х38.
Как же, всё-таки, сформировать правильную команду, чтобы на дисплее хоть что-то засветилось?

читать страницы 9,16,17,18,19 и особенно 23,24,25

потом задавать вопросы наводящие. у меня это 2 месяца заняло, но сейчас должно быть быстрее, потому что понятно, как оно работает и есть весь код, его нужно только немного поправить

Murkur 14.07.2014 21:59

Цитата:

Сообщение от s.m. (Сообщение 302126)
читать страницы 9,16,17,18,19 и особенно 23,24,25

потом задавать вопросы наводящие. у меня это 2 месяца заняло, но сейчас должно быть быстрее, потому что понятно, как оно работает и есть весь код, его нужно только немного поправить

ОК, спасибо. Эти страницы уже по несколько раз перечитывал, но, видно, не дано понять и времени не хватает.

Ладно, буду искать того, кто разбирается.

s.m. 15.07.2014 01:31

Цитата:

Сообщение от Murkur (Сообщение 302145)
ОК, спасибо. Эти страницы уже по несколько раз перечитывал, но, видно, не дано понять и времени не хватает.

Ладно, буду искать того, кто разбирается.

Поймите правильно. Это все равно, что лечить по телефону.
Не видя фоток дорожек понять что-то сложно.
Это была нетривиальная задача даже для меня, а я уже лет 30 этим занимаюсь.
Чтобы браться за такие вещи нужен навык общения с подобным железом.
На самом то деле почти все уже сделано, в документе расписан порядок байтов в посылке, которую микруха жрет. Это скрипт уже делает. Вам всего лишь надо поиграться с начальным набором байт, которые правильно конфигурят микруху для работы с вашим конкретным индикатором.
Так как тоже однострочный у Вас, конфигурация не должна сильно отличаться.
Микруха довольно тупая, она просто отображает то, что ей скажут.

в моем скрипте Вам надо поиграться с вот этим

buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;

на странице 23 есть формат команды по байтам

Мы отправляем сами только Command и Display Data, первый байт отправляет библиотека Wire в Ардуине

вот Command и есть

buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;

назначение каждого байта в Command расписано на странице 24 и 25

Вам надо поиграться со значениями битов B, M1, M0, так как они зависят от конкретного LCD, который подключен к микрухе.

Мы всегда посылаем пакеты данных по 17 байт - первых 3 байта - конфигурация, остальные - данные.

То есть Ваша задача методом тыка меняя

buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;

заставить показывать хоть что-то, дальше пойдет легче.

Это значения шестнадцатиричные, можно подставлять бинарные, так будет легче менять отдельные байты.
Вот бинарный эквивалент

buffer[0] = B11100000;
buffer[1] = B11001011;
buffer[2] = B11110000;

Если будет показывать что-нить, то потом нужно сделать свой знакогенератор - таблицу соответствия байтов данных символам на экране.
Тут сильно ускорит работу мой скрипт.
Если дойдете до этого шага - скину как пример мой знакогенератор, там все довольно просто.

Murkur 15.07.2014 01:38

Цитата:

Сообщение от s.m. (Сообщение 302181)
Поймите правильно. Это все равно, что лечить по телефону.
Не видя фоток дорожек понять что-то сложно.
Это была нетривиальная задача даже для меня, а я уже лет 30 этим занимаюсь.
Чтобы браться за такие вещи нужен навык общения с подобным железом.
На самом то деле почти все уже сделано, в документе расписан порядок байтов в посылке, которую микруха жрет. Это скрипт уже делает. Вам всего лишь надо поиграться с начальным набором байт, которые правильно конфигурят микруху для работы с вашим конкретным индикатором.
Так как тоже однострочный у Вас, конфигурация не должна сильно отличаться.
Микруха довольно тупая, она просто отображает то, что ей скажут.

в моем скрипте Вам надо поиграться с вот этим

buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;

Да я всё понял и никак не хотел обидеть :)
Пробую разобраться. Немного пишу на PHP, но с этим ещё не сталкивался.
Итак спасибо за помощь.

s.m. 15.07.2014 02:10

Цитата:

Сообщение от Murkur (Сообщение 302182)
Да я всё понял и никак не хотел обидеть :)
Пробую разобраться. Немного пишу на PHP, но с этим ещё не сталкивался.
Итак спасибо за помощь.

На самом деле не все так страшно. Главное захотеть разобраться.
Микруха оказалась немного укуренная по управлению, но бывают гораздо более запущенные случаи.
ЗЫ: Я тоже писал на PHP первые лет 6-7.
Сишный код в Ардуине по синтаксису не так уж и отличается от PHP :)
А битовая арифметика и массивы почти один в один. Только с обработкой строк в Си полная засада.
Пробуйте, оно не кусается. Мне оно даже интереснее показалось, чем писать очередное мобильное приложение на работе :)

Murkur 15.07.2014 02:20

Я правильно понял порядок команд?

buffer[0] = 0xE0; //Device Select
buffer[1] = 0xCB; //Mode Set
buffer[2] = 0xF0; //Blink

Murkur 15.07.2014 15:26

По дорожкам определил, что задействованы 4 BACKPLANES и все 40 логических выходов PCF8576.

Murkur 16.07.2014 03:03

Цитата:

Сообщение от s.m. (Сообщение 302181)
То есть Ваша задача методом тыка меняя

buffer[0] = B11100000;
buffer[1] = B11001011;
buffer[2] = B11110000;

Пробовал разные комбинации команд, но пока на дисплее ничего даже не мигнуло.

В принципе, изменилось только 2 последних бита в MODE SET, так как поставил режим управления 1:4.

Может драйвер нерабочий? Можно как-то его проверить?

Alex_St 16.07.2014 10:35

Глупый вопрос - а данный девайс представляет собой только дисплей/кнопочки/крутилки, или мозги климата тоже там?

Murkur 16.07.2014 12:01

Цитата:

Сообщение от Alex_St (Сообщение 302315)
Глупый вопрос - а данный девайс представляет собой только дисплей/кнопочки/крутилки, или мозги климата тоже там?

Да, мозги тоже есть на плате - MC9S12DG256CPV.


Часовой пояс GMT +4, время: 19:56.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot