VFD интерфейс в RTD, и все что на него можно повесить.

о железе плеера и о периферии

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby Virtual » 15 Jul 2017, 08:56

venus_vfd.ko это драйвер vfd контроллера плеера, он нам не нужен ;). весь его функционал вставлен в нашу одну функцию (function vfd_cmd)

твой контроллер очень схожий...
и самое важное!!! регистры нать марсовы прописать! :D в шапке темы есть #for MARS | -
| +
$VFD_CTL=
$VFD_WRCTL=
$VFDO=
$VFD_ARDCTL=
$VFD_KPADLIE=
$VFD_KPADHIE=
$VFD_SWIE=
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6255
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Jul 2017, 14:40

Я что-то видимо совсем простое делаю совсем не так, а спросить не у кого - вот у вас спрашиваю
понятно что марс.. но что-то видимо сильно я вне вашего контекста (я не программист и линукс первый раз вижу, но даташитов за жизнь прочитал гигабайт и двоичное в 16-ричные и назад в уме бегло гоняю - прошили когда-то в вузе)... где брать функцию vfd_cmd,? что это за регистры $VFD_KPADLIE= и т.п. - в даташите на 16311 таких нет - там вообще один регистр ввода-вывода и 4 команды - проинитить, установить режим чтения/записи, выбрать 6бит адрес записи, и установить яркость
т.е. хочу просто послать тупую команду - проинитить дисплей на 8знаков 20 сегментов (наугад, все подряд пробую)
шлю по телнету stopall
потом по Ftp засылаю файл vf.sh
такого содержания:
Code: Select all
VFD_CTL=0xB801B700
VFD_WRCTL=0xB801B704
VFDO=0xB801B708
VFD_ARDCTL=0xB801B70C
VFD_KPADLIE=0xB800B710
VFD_KPADHIE=0xB800B714
VFD_SWIE=0xB800B718
D0=0x0
DF=0xFFFFFFFF
# init
$REG32 $VFD_CTL D0 #обнуляем линию ctl и выставляем данные
$REG32 $VFD_ARDCTL 0x00000630
$REG32 $VFD_KPADLIE 0x00000000
$REG32 $VFD_KPADHIE 0x00000000
$REG32 $VFD_SWIE 0x00000000
$REG32 $VFD_CTL DF # поднимаем , в момент поднятия данные должны записаться в контроллер

и его запускаю с телнета командой sh vf.sh
молча проглатывает без какой-либо реакции. (а не, на пустые строки ругается "нет фондов")
много разных вариантов с разными циферками для регистров пробовал...
все варинаты из этой векти (с заменой регистров на "марс" овые конечно) - тоже 0 эмоций - как горело лоадинг, так и горит, при этом на дистушку реагирует, команда suspend гасит, светоидод с сигенего на красный меняется.

ткните носом ссыль на полную последовательно где что прописать что бы послать команду или байт в контроллер, а уж какие команды ему давать и посегментно я потом докумекаю
или просто смысл этих VFD_KPADLIE и остальных - это просто адреса битов линий портов ввода-вывода - в них только 1/0 может быть или там целый байт (два) посылается?

ощущение что эта ветка продолжение какой-то другой, но перерыл весь форум поиском - все с "vfd" сюда в итоге отсылается.... Эххх...
Last edited by _Danila_Master_ on 06 Oct 2017, 02:32, edited 1 time in total.
Reason: Включил BBCode...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby Virtual » 19 Jul 2017, 11:23

качаем этот скрипт (он уже на php, у баш не хватает гибкости)
складываем его именно туда куда указано в архиве
\usr\local\etc\mos\etc\init\
в нем меняем, (лучше пользоваться mc Midnight Commander)
начиная с строки 367
---#for 1186
---$VFD_CTL='0xB8007200';
...
на значения регистров для марса:
#for 1xx3 (MARS)
$VFD_CTL='0xB801B700';
$VFD_WRCTL='0xB801B704';
$VFDO='0xB801B708';
$VFD_ARDCTL='0xB801B70C';
$VFD_KPADLIE='0xB801B710';
$VFD_KPADHIE='0xB801B714';
$VFD_SWIE='0xB801B718';

т.к. у тя ламповый дисплей то вероятно те больше подойдет профиль mele_display
приводим строки 320 - 322 к виду
$display=$mele_display;
//$display=$xds800_display;
//$display=$r6s_display;

строки 9 - 13 к виду:
$buf_len=28;	//1003D
//$buf_len=16; //R6S
//количество сегментов, текстом в 16ричной форме 0...F (TM1628 11:7 Grids,11 Segments /10:6 Grids,12 Segments)
$segs="9"; //1003D
//$segs="3"; //R6S


PS
переменные $VFD_* это адреса 32х битных регистров контроллера VFD в SoC плеера.
функция function vfd_cmd это аналог драйвера vfd контроллера ;). (в ней и только в ней идет работа с "железом")

PSPS скрипт на php запускается так же как и любой другой.... в телнет
Code: Select all
\usr\local\etc\mos\etc\init\S04vfd.php
\usr\local\etc\mos\etc\init\S04vfd.php test

если выставил атрибут исполняемого файла (chmod +x \usr\local\etc\mos\etc\init\S04vfd.php)и в заголовке есть ссылка на интерпретатор (в моем примере она есть)
иначе
Code: Select all
php \usr\local\etc\mos\etc\init\S04vfd.php
php \usr\local\etc\mos\etc\init\S04vfd.php test
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6255
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 20 Jul 2017, 11:29

YESS!!!!!!
Сработало! Выдало 98:76:54 - т.е. подошло всё без изменений "как есть"

Огромное спасибо, имею теперь рабочий скрипт - дальше сам попробую разобраться.
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby Virtual » 20 Jul 2017, 17:24

! Выдало 98:76:54 - т.е. подошло всё без изменений "как есть"

а если скрипт уложил в верное место, с верными атрибутами, после ребута и часики затикают :mrgreen:

PS фото платы дисплея с двух сторон сделай для истории. //в хорошем качестве, дабы разглядеть чипы разводку и как устроен индикатор(сегменты)
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6255
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Sep 2017, 10:56

Итак, с запозданием отписываюсь...
Итого: Текст "12ПРИВЕТ sd", полное заполнение дисплея и отдельно только спец-символы
"12привет SD"! | +
IMG_0102.JPG
"12привет SD"!
IMG_0102.JPG (127.44 KiB) Viewed 228 times

все символы | +
IMG_0062.JPG
все символы
IMG_0062.JPG (183.59 KiB) Viewed 228 times

Спецсимволы | +
IMG_0105.JPG
спецсимволы
IMG_0105.JPG (75.41 KiB) Viewed 228 times
Last edited by _Danila_Master_ on 06 Oct 2017, 01:55, edited 1 time in total.
Reason: Убрал картинки под спойлер...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Sep 2017, 11:03

...немного макро платы дисплея и его чипа (видны марикровки и разводка):
плата с дисплеем | +
IMG_0032.JPG
плата с дисплеем
IMG_0032.JPG (430.08 KiB) Viewed 220 times

чип отдельно крупно | +
IMG_0033.JPG
чип отдельно крупно
IMG_0033.JPG (4.2 MiB) Viewed 220 times

сам дисплей и маркировка платы | +
IMG_0036.JPG
сам дисплей и маркировка платы
IMG_0036.JPG (589.89 KiB) Viewed 220 times

гребёнка ног дисплея крупно со стороны дисплея | +
IMG_0034.JPG
гребёнка ног дисплея крупно со стороны дисплея
IMG_0034.JPG (169.37 KiB) Viewed 220 times

разводка ног чипа дисплея макро | +
IMG_0070.JPG
разводка ног чипа дисплея макро
IMG_0070.JPG (498.45 KiB) Viewed 220 times

питание дисплея и чипа на плате дисплея | +
IMG_0071.JPG
питание дисплея и чипа на плате дисплея
IMG_0071.JPG (445.45 KiB) Viewed 220 times
Last edited by _Danila_Master_ on 06 Oct 2017, 02:00, edited 1 time in total.
Reason: Убрал картинки под спойлер...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Sep 2017, 11:11

...продолжаю:
ещё чип с разводкой крупно | +
IMG_0073.JPG
ещё чип с разводкой крупно
IMG_0073.JPG (410.74 KiB) Viewed 220 times

чип с разводкой - у ключа
(видно что LED распаяны "в никуда" - площадки припаяны просто для прочности и никуда не идут) | +
IMG_0109.JPG
чип с разводкой - у ключа (видно что LED распаяны "в никуда" - площадки припаяны просто для прочности и никуда не идут)
IMG_0109.JPG (314.88 KiB) Viewed 220 times

чип - key и SW ноги
(тоже видно, что они через резисторы на питание) | +
IMG_0110.JPG
чип - key и SW ноги - тоже видно, что они через резисторы на питание
IMG_0110.JPG (536.38 KiB) Viewed 220 times

"питалово" той платы крупно | +
IMG_0111.JPG
"питалово" той платы крупно
IMG_0111.JPG (531 KiB) Viewed 220 times
Last edited by _Danila_Master_ on 06 Oct 2017, 02:05, edited 1 time in total.
Reason: Убрал картинки под спойлер...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Sep 2017, 11:14

Плата в плеере:
на штатном месте | +
IMG_0027.JPG
плата в плеере вставлена на штатное место
IMG_0027.JPG (332.87 KiB) Viewed 220 times

извлечена | +
IMG_0057.JPG
плата в плеере извлечена
IMG_0057.JPG (369.09 KiB) Viewed 220 times

извлечена (включена) | +
IMG_0065.JPG
плата в плеере извлечена (включена)
IMG_0065.JPG (443.14 KiB) Viewed 220 times


Нет фоток под рукой, но если шлейф с платы дисплея отсоединить от платы плеера, а с платы дисплея отсоединить шлейф платы с кнопкой-ИК-приёмником и светодиодами, можно шлейф этой платки с ИК-приёмником и кнопкой подключить напрямую в тот разъём платы плеера, куда был воткнут шлейф платы дисплея, но со сдвигом от края на одну ногу - тогда дисплей будет отключён, не будет жрать питание и светиться зря, при этом дистушка кнопка и дисплеи будут работать.
Last edited by _Danila_Master_ on 06 Oct 2017, 02:12, edited 2 times in total.
Reason: Убрал картинки под спойлер...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

Re: VFD интерфейс в RTD, и все что на него можно повесить.

Postby imfimum » 18 Sep 2017, 11:17

Мой итоговый пробно-тестовый php: (переделанный из Ваших скриптов выше, повторюсь, я программист 0 - лет 20 назад писал что-то мелкое на REXX-е)
("перевёрнутый" знакогенератор - что бы если плеер к верх ногами - отображалось нормально - писать лень - там просто надо биты по-перебрасывать со сдвигом - начал да бросил ибо, устал*)
Code: Select all
#!/usr/local/etc/mos/bin/php –q`
<?php
// Win-1251 russian cyrillic:
//железка: Eaget_M7 чип 1073DD+,
// контроллер VFD CS16311EN, (Dout, все SW и LED распаяны "NC" (not connected), а все KEY через 100 Ом на землю)
// сам vfd - 10 знаков - первый и последний по 8 спец-символов
// (плей, перемотки, сеть, wi-fi, usb,  hd/sd и т.п.) и
// 8 16-сегментных символа, верхняя половинка - байт и нижняя половинка - байт:
// знаки точки-двоеточия - первый бит верхнего полу-символа, над-символьные значки (долби, моно-стерео DVD и т.п.) - второй бит его же

// т.е например:
// "1"="1000 0000"+"0100 0000"=0x8040
// "2"="1000 0100"+"1000 0111"=0x8487
// "3"="1000 0100"+"1100 0011"=0x84C3
// "Ж"="0111 0000"+"0011 1000"=0x7038
// "У"="1001 0000"+"1100 0010"=0x90С2
// "Ы"="1000 1000"+"1101 0101"=0x88D5
// "А"="1000 1100"+"0100 0111"=0x8С47 и т.п.
// чип при буте (или аппаратно?) инитится сам в нужную конфигурацию
// RAM контроллера - 16 слов по 20 бит, 4 бит третьего байта выбрасываются,
// дисплей - 10 симв. 16 разр., остальные  4 бит третьего байта выбрасываются
// (первый разряд - используется только первые 8 бит, последний разряд - только младшие 4 бита первого байта.)
// т.е передаём первый и последний разряд (символы) - по 1 байту сразу по адресу,
// а 8 знаков текста - тройками байт с авто-инкрементом, где пара байт значащих, а третий мусор (его проще-быстрее передать, чем пропускать)
// наглядно адреса байт символов:
// C0   C3   C6   C9   CC   CF   D2   D5   D8   DB
// _.    C4   C7   CA   CD   D0   D3   D6   D9   
//
// (С0 и DB  - "разряд" спецсимволов),

// !!! яркостью контроллер рулит каждым адресуемым байтом отдельно (а у "символов" - каждым битом) !!! - но как? - непонятно

// верхний полу-символ:        номера бит:
//  (значок)                      2 (над-симв. значок)
//   _____                  ______3_(верхняя черточка)
//   |\|/| ((двое)точка)   4| 5\ 6| 7/ 8|    1(тчк)
// нижний:                    номера бит:
//  __ __                    __1_   __2_
//  |/|\|                  3| 4/ 5| 6\ 7|
//  _____                    _____8_____

//>>>>>>******з*н*а*к*о*г*е*н*е*р*а*т*о*р*******

for ($i=0; $i<192;$i++) {$f_byte[$i]=0x00;  $s_byte[$i]=0x00;  // $sim[$i] = ' '; //пусто}
$f_byte[32]=0x00;  $s_byte[32]=0x00;  // $sim[32] = ' ';  // пробел, пусто
$f_byte[36]=0x2C;  $s_byte[36]=0x97;  // $sim[36] = '$';//
$f_byte[37]=0x48;  $s_byte[37]=0x48;  // $sim[37] = '%';
$f_byte[40]=0x40;  $s_byte[40]=0x20;  // $sim[40] = '(';
$f_byte[41]=0x10;  $s_byte[41]=0x08;  // $sim[41] = ')';
$f_byte[42]=0x70;  $s_byte[42]=0x38;  // $sim[42] = '*';
$f_byte[43]=0x20;  $s_byte[43]=0x13;  // $sim[43] = '+';//
$f_byte[45]=0x00;  $s_byte[45]=0x03;  // $sim[45] = '-';
$f_byte[47]=0x40;  $s_byte[47]=0x80;  // $sim[47] = '/';
$f_byte[48]=0xCС;  $s_byte[48]=0xCC;  // $sim[48] = '0';//перечёркнутый. простой совпадает с O - 0x8C4C
$f_byte[49]=0x20;  $s_byte[49]=0x10;  // $sim[49] = '1';
$f_byte[50]=0x84;  $s_byte[50]=0x8A;  // $sim[50] = '2';// "косая", как на почтовом индексе. простая 0x8487
$f_byte[51]=0x44;  $s_byte[51]=0xC4;  // $sim[51] = '3';
$f_byte[52]=0x88;  $s_byte[52]=0x43;  // $sim[52] = '4';
$f_byte[53]=0x0C;  $s_byte[53]=0xC3;  // $sim[53] = '5';
$f_byte[54]=0x0C;  $s_byte[54]=0xC7;  // $sim[54] = '6';
$f_byte[55]=0x44;  $s_byte[55]=0x10;  // $sim[55] = '7'; // "косая", как на почтовом индексе/ простая 0x8440
$f_byte[56]=0x8С;  $s_byte[56]=0xC7;  // $sim[56] = '8';
$f_byte[57]=0x8С;  $s_byte[57]=0xC3;  // $sim[57] = '9';
$f_byte[60]=0x00;  $s_byte[60]=0x44;  // $sim[60] = '<';
$f_byte[62]=0x00;  $s_byte[62]=0x09;  // $sim[62] = '>';
$f_byte[63]=0x8C;  $s_byte[63]=0x12;  // $sim[63] = '?';
$f_byte[65]=0x8С;  $s_byte[65]=0x47;  // $sim[65] = 'A';
$f_byte[66]=0x4C;  $s_byte[66]=0xC6;  // $sim[66] = 'B';
$f_byte[67]=0x0C;  $s_byte[67]=0x84;  // $sim[67] = 'C';
$f_byte[68]=0x18;  $s_byte[68]=0x0C;  // $sim[68] = 'D';
$f_byte[69]=0x0C;  $s_byte[69]=0x87;  // $sim[69] = 'E';
$f_byte[70]=0x0C;  $s_byte[70]=0x05;  // $sim[70] = 'F';
$f_byte[71]=0x0C;  $s_byte[71]=0xC6;  // $sim[71] = 'G';
$f_byte[72]=0x88;  $s_byte[72]=0x47;  // $sim[72] = 'H';
$f_byte[73]=0x24;  $s_byte[73]=0x90;  // $sim[73] = 'I';
$f_byte[74]=0x80;  $s_byte[74]=0xC0;  // $sim[74] = 'J';
$f_byte[75]=0x48;  $s_byte[75]=0x45;  // $sim[75] = 'K';
$f_byte[76]=0x08;  $s_byte[76]=0x84;  // $sim[76] = 'L';
$f_byte[77]=0xD8;  $s_byte[77]=0x44;  // $sim[77] = 'M';
$f_byte[78]=0x98;  $s_byte[78]=0x64;  // $sim[78] = 'N';
$f_byte[79]=0x8С;  $s_byte[79]=0x4C;  // $sim[79] = 'O';
$f_byte[80]=0x8С;  $s_byte[80]=0x04;  // $sim[80] = 'P';
$f_byte[81]=0x8С;  $s_byte[81]=0xE4;  // $sim[81] = 'Q';
$f_byte[82]=0x8С;  $s_byte[82]=0x46;  // $sim[82] = 'R';
$f_byte[83]=0x0C;  $s_byte[83]=0xC3;  // $sim[83] = 'S';
$f_byte[84]=0x24;  $s_byte[84]=0x10;  // $sim[84] = 'T';
$f_byte[85]=0x88;  $s_byte[85]=0xC4;  // $sim[85] = 'U';
$f_byte[86]=0x48;  $s_byte[86]=0x06;  // $sim[86] = 'V';
$f_byte[87]=0x88;  $s_byte[87]=0xC6;  // $sim[87] = 'W';
$f_byte[88]=0x50;  $s_byte[88]=0x28;  // $sim[88] = 'X';
$f_byte[89]=0x50;  $s_byte[89]=0x10;  // $sim[89] = 'Y';
$f_byte[90]=0x44;  $s_byte[90]=0x88;  // $sim[90] = 'Z';
$f_byte[91]=0x0C;  $s_byte[91]=0x84;  // $sim[91] = '[';
$f_byte[92]=0x10;  $s_byte[92]=0x20;  // $sim[92] = '\';
$f_byte[93]=0x82;  $s_byte[93]=0xC0;  // $sim[93] = ']';
$f_byte[95]=0x00;  $s_byte[95]=0x80;  // $sim[95] = '_';
$f_byte[97]=0x84;  $s_byte[97]=0xC7;  // $sim[97] = 'a';
$f_byte[98]=0x08;  $s_byte[98]=0xC7;  // $sim[98] = 'b';
$f_byte[99]=0x00;  $s_byte[99]=0x87;  // $sim[99] = 'c';
$f_byte[100]=0x80; $s_byte[100]=0xC7; //$sim[100] = 'd';
$f_byte[101]=0x00; $s_byte[101]=0x8D; //$sim[101] = 'e';
$f_byte[102]=0x40; $s_byte[102]=0x12; //$sim[102] = 'f';
$f_byte[103]=0x8С; $s_byte[103]=0xC3; //$sim[103] = 'g';
$f_byte[104]=0x08; $s_byte[104]=0x15; //$sim[104] = 'h';
$f_byte[105]=0x20; $s_byte[105]=0x10; //$sim[105] = 'i';
$f_byte[106]=0x20; $s_byte[106]=0x90; //$sim[106] = 'j';
$f_byte[107]=0x60; $s_byte[107]=0x30; //$sim[107] = 'k';
$f_byte[108]=0x40; $s_byte[108]=0x88; //$sim[108] = 'l';
$f_byte[109]=0x00; $s_byte[109]=0x57; //$sim[109] = 'm';
$f_byte[110]=0x00; $s_byte[110]=0x85; //$sim[110] = 'n';
$f_byte[111]=0x00; $s_byte[111]=0xC7; //$sim[111] = 'o';
$f_byte[112]=0x18; $s_byte[112]=0x05; //$sim[112] = 'p';
$f_byte[113]=0x8С; $s_byte[113]=0x40; //$sim[113] = 'q';
$f_byte[114]=0x00; $s_byte[114]=0x05; //$sim[114] = 'r';
$f_byte[115]=0x00; $s_byte[115]=0xA2; //$sim[115] = 's';
$f_byte[116]=0x20; $s_byte[116]=0x09; //$sim[116] = 't';
$f_byte[117]=0x00; $s_byte[117]=0xC4; //$sim[117] = 'u';
$f_byte[118]=0x00; $s_byte[118]=0x0C; //$sim[118] = 'v';
$f_byte[119]=0x00; $s_byte[119]=0xC6; //$sim[119] = 'w';
$f_byte[120]=0x50; $s_byte[120]=0x28; //$sim[120] = 'x';
$f_byte[121]=0x30; $s_byte[121]=0x08; //$sim[121] = 'y';
$f_byte[122]=0x00; $s_byte[122]=0x89; //$sim[122] = 'z';
$f_byte[123]=0x40; $s_byte[123]=0x41; //$sim[123] = '{';
$f_byte[124]=0x08; $s_byte[124]=0x04; //$sim[124] = '|';
$f_byte[125]=0x01; $s_byte[125]=0x0A; //$sim[125] = '}';
$f_byte[192]=0xC0; $s_byte[192]=0x4A; //$sim[192] = 'А';
$f_byte[193]=0x0C; $s_byte[193]=0xA5; //$sim[193] = 'Б';
$f_byte[194]=0x4C; $s_byte[194]=0x6C; //$sim[194] = 'В';
$f_byte[195]=0x0C; $s_byte[195]=0x04; //$sim[195] = 'Г';
$f_byte[196]=0xC0; $s_byte[196]=0xC8; //$sim[196] = 'Д';
$f_byte[197]=0x0C; $s_byte[197]=0x85; //$sim[197] = 'Е';
$f_byte[198]=0xA8; $s_byte[198]=0x57; //$sim[198] = 'Ж';
$f_byte[199]=0x84; $s_byte[199]=0xA4; //$sim[199] = 'З';
$f_byte[200]=0xC8; $s_byte[200]=0x48; //$sim[200] = 'И';
$f_byte[201]=0xCA; $s_byte[201]=0x48; //$sim[201] = 'Й';
$f_byte[202]=0x60; $s_byte[202]=0x30; //$sim[202] = 'К';
$f_byte[203]=0xC0; $s_byte[203]=0x48; //$sim[203] = 'Л';
$f_byte[204]=0xD8; $s_byte[204]=0x54; //$sim[204] = 'М';
$f_byte[205]=0x88; $s_byte[205]=0x47; //$sim[205] = 'Н';
$f_byte[206]=0x8C; $s_byte[206]=0xC4; //$sim[206] = 'О';
$f_byte[207]=0x8C; $s_byte[207]=0x44; //$sim[207] = 'П';
$f_byte[208]=0x8C; $s_byte[208]=0x07; //$sim[208] = 'Р';
$f_byte[209]=0x0C; $s_byte[209]=0x84; //$sim[209] = 'С';
$f_byte[210]=0x24; $s_byte[210]=0x10; //$sim[210] = 'Т';
$f_byte[211]=0x90; $s_byte[211]=0xC2; //$sim[211] = 'У';//50 08
$f_byte[212]=0xAC; $s_byte[212]=0x13; //$sim[212] = 'Ф';
$f_byte[213]=0x50; $s_byte[213]=0x28; //$sim[213] = 'Х';
$f_byte[214]=0x28; $s_byte[214]=0x94; //$sim[214] = 'Ц';//88 E4 //28 21 //28 09 //
$f_byte[215]=0x28; $s_byte[215]=0x11; //$sim[215] = 'Ч';//88 43 // A0 42
$f_byte[216]=0xA8; $s_byte[216]=0xD4; //$sim[216] = 'Ш';//88 D4
$f_byte[217]=0xA8; $s_byte[217]=0x43; //$sim[217] = 'Щ';//A8 23
$f_byte[218]=0x20; $s_byte[218]=0xD2; //$sim[218] = 'Ъ';//08 C7 /18 C7
$f_byte[219]=0x88; $s_byte[219]=0xD7; //$sim[219] = 'Ы';
$f_byte[220]=0x08; $s_byte[220]=0xC7; //$sim[220] = 'Ь';
$f_byte[221]=0x84; $s_byte[221]=0xC2; //$sim[221] = 'Э';//10 09
$f_byte[222]=0xAC; $s_byte[222]=0xD5; //$sim[222] = 'Ю';//C8 64
$f_byte[223]=0x8C; $s_byte[223]=0x0B; //$sim[223] = 'Я';//94 0A
$f_byte[224]=0x20; $s_byte[224]=0x95; //$sim[224] = 'а';
$f_byte[225]=0x40; $s_byte[225]=0xD2; //$sim[225] = 'б';//40 95
$f_byte[226]=0x18; $s_byte[226]=0x0D; //$sim[226] = 'в';//4C A5
$f_byte[227]=0x00; $s_byte[227]=0x05; //$sim[227] = 'г';//00 12
$f_byte[228]=0x00; $s_byte[228]=0xA8; //$sim[228] = 'д';
$f_byte[229]=0x18; $s_byte[229]=0x85; //$sim[229] = 'е';
$f_byte[230]=0x70; $s_byte[230]=0x38; //$sim[230] = 'ж';
$f_byte[231]=0x44; $s_byte[231]=0xA0; //$sim[231] = 'з';
$f_byte[232]=0x00; $s_byte[232]=0x1C; //$sim[232] = 'и';
$f_byte[233]=0x04; $s_byte[233]=0x1C; //$sim[233] = 'й';
$f_byte[234]=0x60; $s_byte[234]=0x30; //$sim[234] = 'к';
$f_byte[235]=0x00; $s_byte[235]=0x18; //$sim[235] = 'л';
$f_byte[236]=0xD8; $s_byte[236]=0x00; //$sim[236] = 'м';
$f_byte[237]=0x28; $s_byte[237]=0x15; //$sim[237] = 'н';
$f_byte[238]=0x00; $s_byte[238]=0x95; //$sim[238] = 'о';
$f_byte[239]=0x00; $s_byte[239]=0x15; //$sim[239] = 'п';//00  52
$f_byte[240]=0x18; $s_byte[240]=0x05; //$sim[240] = 'р';
$f_byte[241]=0x00; $s_byte[241]=0x85; //$sim[241] = 'с';
$f_byte[242]=0x00; $s_byte[242]=0x13; //$sim[242] = 'т';
$f_byte[243]=0x30; $s_byte[243]=0x08; //$sim[243] = 'у';
$f_byte[244]=0x74; $s_byte[244]=0x10; //$sim[244] = 'ф';
$f_byte[245]=0x50; $s_byte[245]=0x28; //$sim[245] = 'х';
$f_byte[246]=0x00; $s_byte[246]=0x94; //$sim[246] = 'ц';//28 21
$f_byte[247]=0x28; $s_byte[247]=0x11; //$sim[247] = 'ч';//A0 42
$f_byte[248]=0x00; $s_byte[248]=0xD4; //$sim[248] = 'ш';//A8 03
$f_byte[249]=0xA8; $s_byte[249]=0x43; //$sim[249] = 'щ';//A8 23
$f_byte[250]=0x10; $s_byte[250]=0xD2; //$sim[250] = 'ъ';
$f_byte[251]=0x88; $s_byte[251]=0xCD; //$sim[251] = 'ы';
$f_byte[252]=0x20; $s_byte[252]=0xB0; //$sim[252] = 'ь';
$f_byte[253]=0x10; $s_byte[253]=0x09; //$sim[253] = 'э';
$f_byte[254]=0x00; $s_byte[254]=0x5E; //$sim[254] = 'ю';
$f_byte[255]=0x2C; $s_byte[255]=0x19; //$sim[255] = 'я';
// теперь тупо берём ASCII код символа и по нему имеем два байта – верхний и нижний. что трудно отобразить – заменено пустышками
//<<<<<<******з*н*а*к*о*г*е*н*е*р*а*т*о*р*******



$bin_buff = "\x00\x00\x00";
$buf_len=24;   //1073D

//####################################
function vfd_cmd ( $CMD, $sub1='', $sub2='')   //драйвер контроллера работа с регистрами здесь и только здесь
{
global $bin_buff;
//global $buf_len;
// #for 1273
    $VFD_CTL='0xB801B700';    // просто клок?
  $VFD_WRCTL='0xB801B704';   // клок чтения/записи?
       $VFDO='0xB801B708';   // адр. регистра заливаемых данных (до 48 байт)
 $VFD_ARDCTL='0xB801B70C';   // адрес регистра клока?
$VFD_KPADLIE='0xB801B710';   // кеу-данные младшие 3 байта ?
$VFD_KPADHIE='0xB801B714';   // кеу-данные старшие три байта?
   $VFD_SWIE='0xB801B718';   // SW-данные ? (с 4 линий входных портов контроллера - д.б. 0000хххх)
 $SEND4='0x00F0';
 $SEND3='0x0070';
 $SEND2='0x0030';
 $SEND1='0x0010';
$SEND_CS=0x1000;
$D0='0x0';
$DF='0xFFFFFFFF';
$REG32="/usr/local/etc/mos/bin/gpio -n:p";  // gpio куда что
//-----------------------
if( $CMD == 'transfer-bukv' ){
 exec( "$REG32 $VFDO 0xC340;$REG32 $VFD_WRCTL 0x330" );   //стартовый адрес C3 функция 40(циклическая запись с авто-инкрементом)
 $WRCTL=sprintf("0x%03X", 0x70); //шлём по три байта
 for ($i=1; $i<14;$i=$i+2)
 {
   $DATA= sprintf("0x%02X%02X%02X","0x00", ord($bin_buff[$i]),ord($bin_buff[$i-1])); //два байта значащих, третий игнорируется
   exec( "$REG32 $VFDO $DATA;$REG32 $VFD_WRCTL $WRCTL" );
 }
 $DATA= sprintf("0x%02X%02X%02X","0x00", ord($bin_buff[15]),ord($bin_buff[14]));
 exec( "$REG32 $VFDO $DATA;$REG32 $VFD_WRCTL 0x170" ); //в конце дернуть CS дабы следующий байт был командой
}
//------------------------
if( $CMD == 'transfer-simv' ) {
if( $sub1) exec( "$REG32 $VFDO 0xF".$sub1."C044;$REG32 $VFD_WRCTL 0x1370" );   //первый разряд
if( $sub2) exec( "$REG32 $VFDO 0x0".$sub1."DB44;$REG32 $VFD_WRCTL 0x1370" );   //последний
}
//####################################
if( $CMD == 'brightness' ){
    if( $sub1)   //если яркость указана то применим, иначе бледно (8) #F-яркость от 8 до F 07 количество сегментов
         exec( "$REG32 $VFDO 0x00008".$sub1."0"."A".";$REG32 $VFD_WRCTL 0x00001330" );
    else exec( "$REG32 $VFDO 0x0000880"."A".";$REG32 $VFD_WRCTL 0x00001330" );
}
}//************************# end of function vfd_cmd #*********************************************

//---обработка—параметра------командной---строки-----
if ($argc<1)
{
vfd_cmd('brightness','0');   //если параметры не заданы - гасим // яркость: 8...F 7 и меньше - погасить
echo "usage vfd.php [param]", "\n";
echo "param:", "\n";
echo "test", "\n";
echo "test-s", "\n";
echo "0", "\n";
echo "12", "\n";
echo "my", "\n";
}
else {
//--------------
switch ($argv[1])
{
case 'test' :
    for ($i=0; $i<$buf_len;$i++) $bin_buff[$i]=chr(255); //зажжем усе для тесту
    vfd_cmd('brightness','A');   // яркость: 8...F 7 и меньше - погасить
    vfd_cmd('transfer-bukv');
    vfd_cmd('transfer-simv','F','F');
    break;
//--------------
case '0' :
    for ($i=0; $i<$buf_len;$i++) $bin_buff[$i]=chr(0);
    vfd_cmd('brightness','0');   // яркость: 8...F 7 и меньше - погасить
    vfd_cmd('transfer-bukv');
    break;
//--------------
case 'test-s' :
   for ($i=0; $i<$buf_len;$i++){ $bin_buff[$i]=chr(0); } //погасить
    for ($i=0; $i<$buf_len;$i=$i+2) $bin_buff[$i]=chr(0x03); //симв. значки в каждом разряде
    vfd_cmd('brightness','A');   // яркость: 8...F 7 и меньше - погасить
    vfd_cmd('transfer-bukv');
    vfd_cmd('transfer-simv','F','F');
    break;
//--------------------
case '12':
   for ($i=0; $i<$buf_len;$i++){ $bin_buff[$i]=chr(0); }//потушить
    vfd_cmd('brightness','A');   // яркость: 8...F 7 и меньше - погасить
   $bin_buff[0]=chr(0x80);
   $bin_buff[1]=chr(0x40); //1
   $bin_buff[2]=chr(0x84);
   $bin_buff[3]=chr(0x87); //2
   $bin_buff[4]=chr(0x8C);
   $bin_buff[5]=chr(0x44); //П
   $bin_buff[6]=chr(0x8C);
   $bin_buff[7]=chr(0x07); //Р
   $bin_buff[8]=chr(0xC8);
   $bin_buff[9]=chr(0x4C); //И
   $bin_buff[10]=chr(0x4C);
   $bin_buff[11]=chr(0xC6); //В
   $bin_buff[12]=chr(0x0C);
   $bin_buff[13]=chr(0x85); //Е
   $bin_buff[14]=chr(0x24);
   $bin_buff[15]=chr(0x10); //Т
   vfd_cmd('transfer-bukv');
   break;                  //8c44 8c07 c84c 4СС6 0c85 2410
//---------------------
//default: //а тут будет :) конверт из входной строки символов с байт-код для контроллера (знако-гненратор)
} //end switch
} //end else
?>
Last edited by _Danila_Master_ on 06 Oct 2017, 02:18, edited 4 times in total.
Reason: *Цензура, Включил BBCode...
Ellion HMR-500h (C748HP_SR00E_110315a_010EL) - 1083, Eaget_M7 (AMP r13) -1073DD, Iconbit HDR11L
User avatar
imfimum
 
Posts: 12
Joined: 23 Dec 2015, 02:32

PreviousNext

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest