-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Вот что я натворил, подскажите где неправильно.
PHP код:
//http://compcar.ru
int CLK = 13;
int DI = 12;
int CE = 11;
int ADDR = 0x42;
byte ReadByte[8];
int i;
void setup()
{
pinMode(CLK, OUTPUT);
pinMode(DI, OUTPUT);
pinMode(CE, OUTPUT);
Serial.begin(115200);
digitalWrite(CLK, LOW);
digitalWrite(DI, LOW);
digitalWrite(CE, LOW);
delay(1000);
}
//===================================================
void loop()
{
if (Serial.available() > 7)
{
for (i = 0; i < 8; i++)
{
(ReadByte[i]) = Serial.read() ; // принимаем данные с компа в массив
}
Serial.flush(); //очистить входной буфер USB
Send_Adress(); // отправляем адрес устройства
for (i = 0; i < 8; i++)
{
Byte_Out(DI, CLK, ReadByte[i]); //отправляем данные в шину в шину
}
digitalWrite(CE, LOW); // запретить прием данных подчиненым
}
delay(500);
}
//==================================================
void Send_Adress()
{
Byte_Out(DI, CLK, ADDR);
delayMicroseconds(5);
digitalWrite(CE, HIGH);
}
//==================================================
void Byte_Out(uint8_t DI, uint8_t CLK, byte val)
{
int idx;
for (idx = 0; idx < 7; idx++)
{
delayMicroseconds(10);
if (((val << idx) & B10000000) == 128)
digitalWrite(DI, HIGH); else
digitalWrite(DI, LOW);
// digitalWrite(DI, val & (1 << idx)); /
digitalWrite(CLK, HIGH); // педний фронт синхроимульса
delayMicroseconds(16);
digitalWrite(CLK, LOW); // задний фронт синхроимульса
}
}
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
да вроде все нормально... тока А я не читал, как он из запись в чтение и назад переходит и Б номер пакета в конце нужно выставять, какой из 4х 00 01 10 11
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Вроде как когда одна из кнопок нажата запускается сканирование кнопок и данные идут в контроллер. Подозреваю что нужно тайменги правит и кусок пакета "Control Data Bits" а это как мне кажется в примере с JVC Chip´ом было организованно программно в программе эмуляторе. наверно и прогу тоже надо править или писать заново под этот дисплей.
Жаль что только один рабочий пример, не с чем сравнить.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Длина одного пакета 44+10+2 бит и того 7 байт
вот нужная информация по дисплею:
Цитата:
A7~A0 : 42H address
D164~D1 : Data of LCD display registers
S0, S1 : Sleep control data
K0, K1 : Key scan output / Segment output selection data
P0, P1 : Segment output / general-purpose output port selection data
SC : Segment on / off control data
DR : 1/2 bias or 1/3 bias drive selection data
Цитата:
Power Down Mode
Sleep mode is set up by setting S0 or S1 in the control data to 1. The segment
outputs will all go low and the common outputs will also go low, and the oscillator
on the OSC pin will stop ( it will be started by a key press). This reduces power
dissipation. This mode is cleared by sending control data with both S0 and S1 set
to 0. Note that the SEG1/P1 to SEG4/P4 outputs can be used as general purpose
output ports according to the state of the P0 and P1 control data bits, even in
sleep mode.
чему равны биты DD ? этими двумя битами ты нумеруешь пакеты, всего 4 пакета по 7 байт, если DD равны 00 то еще придется сформировать 10 бит управления
-
Вложений: 1
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Попробуй вот этой программой
только учитывай dd, эти два бита выставляй в лог единицу , только не 00
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Цитата:
Сообщение от
Chip
Попробуй вот этой программой
только учитывай dd, эти два бита выставляй в лог единицу , только не 00
"выставляй в лог единицу" Что такое лог? окошко в программке? посмотри скетч, у меня такое чувство что я что то там неправильно сделал.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
PHP код:
//http://compcar.ru
int CLK = 13;
int DI = 12;
int CE = 11;
int ADDR = 0x42;
byte ReadByte[8];
int i;
void setup()
{
pinMode(CLK, OUTPUT);
pinMode(DI, OUTPUT);
pinMode(CE, OUTPUT);
Serial.begin(115200);
digitalWrite(CLK, LOW);
digitalWrite(DI, LOW);
digitalWrite(CE, LOW);
delay(1000);
}
//===================================================
void loop()
{
if (Serial.available() > 6)
{
for (i = 0; i < 7; i++)
{
(ReadByte[i]) = Serial.read() ; // принимаем данные с компа в массив
}
Serial.flush(); //очистить входной буфер USB
Send_Adress(); // отправляем адрес устройства
for (i = 0; i < 7; i++)
{
Byte_Out(DI, CLK, ReadByte[i]); //отправляем данные в шину в шину
}
digitalWrite(CE, LOW); // запретить прием данных подчиненым
}
delay(500);
}
//==================================================
void Send_Adress()
{
Byte_Out(DI, CLK, ADDR);
delayMicroseconds(5);
digitalWrite(CE, HIGH);
}
//==================================================
void Byte_Out(uint8_t DI, uint8_t CLK, byte val)
{
int idx;
for (idx = 0; idx < 8; idx++)
{
delayMicroseconds(10);
if (((val << idx) & B10000000) == 128)
digitalWrite(DI, HIGH); else
digitalWrite(DI, LOW);
digitalWrite(CLK, HIGH); // педний фронт синхроимульса
delayMicroseconds(16);
digitalWrite(CLK, LOW); // задний фронт синхроимульса
}
}
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Не получается. попробую оживить магнитолу и почитать что она шлет.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
А может кто-нибудь переписать код снифера для мега8 а не XXXduino?
Хочу считать данные с дисплея JVC r717 чтобы передать их на штатный мафон BMW Business. Програмлю в Codevision Avr. Заранее спасибо!
-
Вложений: 1
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
подключился к jvc и увидел на ногах такое
Кто знает что это за протокол может быть?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Делаю свои полуслепые выводы
Самый верхний сигнал это CE
Средний это Data
Нижний это CLK
Сигнал клок не похож на таковой потому что анализатор по частоте не тянет
Что за анализатор ? Какая у него максимальная частота измерения?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Цитата:
Сообщение от
Chip
Делаю свои полуслепые выводы
Самый верхний сигнал это CE
Средний это Data
Нижний это CLK
Сигнал клок не похож на таковой потому что анализатор по частоте не тянет
Что за анализатор ? Какая у него максимальная частота измерения?
USB Disco - ставил режим измерения 1Мгц
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Понятно, у меня такой валяется :), выкинул сразу после тестирования.
Тогда предположение что нижний сигнал это сигнал тактирования, пока остается предположением. Есть kb нормальный осциллограф посмотреть сигнал CLK?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Цитата:
Сообщение от
Chip
Понятно, у меня такой валяется :), выкинул сразу после тестирования.
Тогда предположение что нижний сигнал это сигнал тактирования, пока остается предположением. Есть kb нормальный осциллограф посмотреть сигнал CLK?
не, чего нет - того нет... сам мечтаю о нормальном цифровом запоминающем осциллографе... А нижний сигнал все время разный и ни разу не был похож на тактовый...
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
ну тогда хоть скажи к какому сигналу соответствует нижняя осциллограмма?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Цитата:
Сообщение от
Chip
ну тогда хоть скажи к какому сигналу соответствует нижняя осциллограмма?
Все так как ты предположил! Как по твоему это все таки SPI?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
-
Вложений: 1
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Приветствую. А не поможете со сниффером i2c? вывод данных желательно в сериал.
Есть скетч, но похоже данные идут со сдвигом в 2 бита и в инверсии. Еще сложность в том, что у прослушиваемого раба есть субадрес и неизвестное количество байт данных.
Код:
#include <Wire.h>
void setup()
{
Wire.begin(0x44); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // regis-ter event
Serial.begin(9600); // start serial for output
}
void loop()
{
delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
while(1 < Wire.available()) // loop through all but the last
{
}
int x = Wire.read(); // receive byte as an integer
Serial.println(x, HEX);
Serial.println(x, BIN); // print the integer
}
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
это немного не то. в теме написаны скетчи из туториала по ардуине, они работают, но не так как нужно-похоже не обрабатывается ACK и байты идут потоком. но в байте могут быть использованы не все старшие биты, проц их отбрасывает, а ардуина тупо складывает биты в пакет. в итоге получается каша
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Добрый день! Ребята подскажите: я правильно понял, если к дисплею подходит всего 4 провода, тот он на кан шине и это тема не для меня?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
у CAN 2 провода сама шины + питание
-
Вложений: 2
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Вложение 17499
Цитата:
Сообщение от
Chip
у CAN 2 провода сама шины + питание
Тоесть6 2 провода CAN + 2 провода питания ( минус, плюс)
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
PHP код:
//http://compcar.ru
// пины для использования хардверного SPI
//pin 13 SCK CL
//pin 12 MISO
//pin 11 MOSI DI
//pin 10 SS CE
#include <Spi.h>
byte MyBuff[20];
void setup()
{
Serial.begin(115200);
Spi.mode((1 << SPI2X) | (1 << CPOL) | (1 << CPHA)); //mode 3, clock/4
}
void loop()
{
for (int i=0; i <= 19; i++)
{
MyBuff[i] = Spi.read(); // чтение байта из шины в массив
}
Serial.write(MyBuff, 20);
}
Кто либо пробовал этот код в последнее время? библиотека была изменена?
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Библиотека изменилась, теперь она входит по умолчанию в IDE
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
PHP код:
//http://compcar.ru
// пины для использования хардверного SPI
//pin 13 SCK CL
//pin 12 MISO
//pin 11 MOSI DI
//pin 10 SS CE
#include <SPI.h>
byte MyBuff[8];
void setup()
{
Serial.begin(115200);
SPI.begin(); //Запуск
//clock/4 Устанавливать не требуется,
//стоит по умолчанию clock/4
SPI.setBitOrder(LSBFIRST); //Вывод данных, младший бит вперед
}
void loop()
{
for (int i=0; i <= 7; i++)
{
MyBuff[i] = SPI.transfer(); // здесь не правильно
}
Serial.write(MyBuff, 8);
}
Я так и думал, вроде все понятно... Подправил на новый лад, но не могу разобраться как прочитать данные с SPI и записать в буфер для отправки компу.
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Данные читаются в массив MyBuff[i], в цикле читается 8 байт, а потом передаться компьютеру Serial.write(MyBuff, 8);
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Добрый день.
Не могли бы вы выложить работающий код для ардуины
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Код работающий, я компилировал его в верчии IDE 0023
-
Re: Эмулятор и сниффер головного устройства для псевдографических дисплеев.
Цитата:
Сообщение от
sergeyvolk
Вложение 17499 Тоесть6 2 провода CAN + 2 провода питания ( минус, плюс)
пыж 407? малой кровью не обойдешься, там действительно CAN, или сниферю всю шину и емулируй обработку графики, или перехватывай непостредственно с ножек дисплея, а это... хороший скилл )) и ни фига не ардуина