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 и увидел на ногах такое
Кто знает что это за протокол может быть?