Opel kijelző (TID) kezelése

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2011. november 15. kedd, 18:43

Robert írta:"Mutiba a sültgalamb combja":

Dim ~ define
GetADC ~ analogread
call ... ~ függvények definiálása
set/reset ~ digitalwrite...
,

Köszönöm :)

Közben találtam egy Arduino code-ot csak azt nem tudom hogy melyik kimenetekre van kötve a kijelző. Segítenél kihámozni nekem??

Előre is köszönöm

itt a kód :



/****************************************************************/
/* */
/* Opel Astra G TID Ansteuerung */
/* I2C-Protokol */
/* */
/****************************************************************/

#include <Wire.h>
#define TID 0x9B
#define _SCL 5
//#define _SCL_in 1
#define _MRQ 4
//#define _MRQ_in 3
#define _SDA 4
//#define _SDA_in 5
#define PIN


void setup()
{
SDA_high();
SCL_high();
MRQ_high();

}

void loop()
{
MRQ_low();
SDA_low();
while(get_SDA()); //warte bis SDA low
delay(50);
MRQ_high();
while(!get_SDA()); //warte bis SDA high
delay(50);
SDA_low();
delay(50);
SCL_low();
delay(50);
Wire.begin();
Wire.beginTransmission(TID);
MRQ_low();
Wire.send(0x01); // Schalte Symbole aus
Wire.send(0x01); // Schalte Symbole aus
Wire.send(0x01); // Schalte Symbole aus
Wire.send(0x85);// B
Wire.send(0x8A);// E
Wire.send(0xA4);// R
Wire.send(0x8F);// G
Wire.send(0x83);// A
Wire.send(0x9B);// M
Wire.send(0x83);// A
Wire.send(0xA7);// S
Wire.send(0x86);// C
Wire.send(0x9E);// O
delay(50);
MRQ_high();
Wire.endTransmission();
SDA_high();
SCL_high();
MRQ_high();
delay(1000);
}


void MRQ_high(void)
{
PORTB &= ~(1<<_MRQ );
}

void MRQ_low(void)
{
PORTB |= (1<<_MRQ);
}

void SCL_high(void){
PORTC &= ~(1<<_SCL);
}

void SCL_low(void)
{
PORTC |= (1<<_SCL);
}

void SDA_high(void)
{
PORTC &= ~(1<<_SDA);
}

void SDA_low(void)
{
PORTC |= (1<<_SDA);
}


uint8_t get_MRQ(void)
{
return (PINB & (1<< _MRQ));
}

uint8_t get_SCL(void)
{
return (PINC & (1<< _SCL));
}

uint8_t get_SDA(void)
{
return (PINC & (1<< _SDA));
}

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2011. november 15. kedd, 19:07

Ha a hw-es SCL és SDA, akkor az az arduino Analog 4 és analog 5 lábai.


De mindent szoftveresen végez a kód, így bárhova teheted. A kódban:
- Az eszköz a 9B címen szólal meg.
- SCL (SCK, clock) az 5. lábon,
- MRQ (IRQ?) a 4. lábon,
- SDA (adat) a 4. lábon van.

De ez szerintem hibás (I2C esetén nem illik így keverni)...

Az elejét írdd át:


Kód: Egész kijelölése

//#define _SCL 5
#define _SCL_ 3
//#define _MRQ 4
#define _MRQ_ 4
//#define _SDA 4
#define _SDA_ 5
#define PIN


Így:
SCL : 3 (PortC.3)
MRQ: 4 (PortB.4)
SDA: 5 (PortC.5)

De ez is érdekes, ha arduinoban vagy. Ez szerintem tisztán C.
Arduinoban a PortC (Analog) nem kezelhető kimenetként...

Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2011. november 15. kedd, 22:35

Köszönöm a segítséget.
Ha átírom úgy hogy a "rendes" SDA SCL- t használja program és csak az MRQ-t definiálom valamelyik kimenethez akkor jó lehet??
Az bonyolítja meg sajnos hogy ez az MRQ szerves része a kijelző kommunikációs protokolljának mert ezzel tudom csak rávenni hogy egyáltalán figyelje a vonalat. Gondolom azért van benne mert ez egy autórádió és a kijelző közötti biztonságos adatátvitelt biztosítja.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2011. november 16. szerda, 7:18

Akkor a lábdefiniciok mellett a PIN/PORT részeket is meg kell lesni a programkodban.... Es pontositani ertelemszeruen...

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2011. november 16. szerda, 7:19

SCL, SDA a PORTC-n van alapban - igy nagyjabol jo lehet a prg eleje. Csak a labakat pontositsd (c.4 / c.5)

Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2012. január 10. kedd, 16:42

Robert írta:SCL, SDA a PORTC-n van alapban - igy nagyjabol jo lehet a prg eleje. Csak a labakat pontositsd (c.4 / c.5)


Nos most volt csak idő megint foglalkozni a kijelzővel és csináltam egy "öszvér" programot, kipróbálni még nem tudtam csak úgy hogy rátöltöttem az arduinóra és mivel nem tudtam hogy lefut e rendesen ezért egy ellenőrző "ledet" tettem a progiba ami ki és be kapcsol ahogy a program fut. De észrevettem hogy ha a programot feltöltöm akkor egyszer lefut és utánna nem, ha reset-et nyomok akkor talán még egyszer lefut és utánna újra fel kell tölteni. Mi lehet a baj?? Szerintem a c és arduino keveréket nem tudja megenni. Itt a progi:

Kód: Egész kijelölése

#include <Wire.h>
#define TID 0x9B     //lehet még: 0x4a, vagy  0x4d
//#define _SCL 5
#define _SCL 5      //analog in 5
//#define _MRQ 4
#define _MRQ 2     // digital out 10
//#define _SDA 4
#define _SDA 4     // analog in 4
#define PIN
int AA = 2;        // digit out 2 ez fogja a kijelzöt "rádió" módba tenni hogy legyen hely a szövegnek
                   // PNP-tranzisztorral kapcsolt jel
int Check = 13;                   
                   
void setup()

  SDA_high();             // minden vonal fent, Idle mode
  SCL_high();             // Idle mode
  MRQ_high();             // Idle mode 
  digitalWrite(AA, LOW);
}


void loop()
{
  MRQ_low();
  SDA_low();
  while(get_SDA());        //várni míg az SDA alacsony nem lessz
  delay(50);
  MRQ_high();
  while(!get_SDA());        //várni míg az SDA meges nem lessz
  delay(50);
  SDA_low();
  delay(50);
  SCL_low();
  delay(50);
   Wire.begin();
   Wire.beginTransmission(TID);
   MRQ_low();
   Wire.write(0x01); // Schalte Symbole aus
   Wire.write(0x01); // Schalte Symbole aus
   Wire.write(0x01); // Schalte Symbole aus
   Wire.write(0x85);// B
   Wire.write(0x8A);// E
   Wire.write(0xA4);// R
   Wire.write(0x8F);// G
   Wire.write(0x83);// A
   Wire.write(0x9B);// M
   Wire.write(0x83);// A
   Wire.write(0xA7);// S
   Wire.write(0x86);// C
   Wire.write(0x9E);// O
   delay(50);
   MRQ_high();
   Wire.endTransmission();
   digitalWrite(Check, HIGH);
   SDA_high();
   SCL_high();
   MRQ_high();
   delay(1000);
   digitalWrite(Check, LOW);
   delay(1000);
   
 }


void MRQ_high(void)
{
  PORTB &= ~(1<<_MRQ  );
}

void MRQ_low(void)
{
  PORTB |= (1<<_MRQ);
}

void SCL_high(void){
  PORTC &= ~(1<<_SCL);
}

void SCL_low(void)
{
  PORTC |= (1<<_SCL);
}

void SDA_high(void)
{
  PORTC &= ~(1<<_SDA);
}

void SDA_low(void)
{
  PORTC |= (1<<_SDA);
}


uint8_t get_MRQ(void)
{
  return (PINB & (1<< _MRQ));
}

uint8_t get_SCL(void)
{
  return (PINC & (1<< _SCL));
}

uint8_t get_SDA(void)
{
  return (PINC & (1<< _SDA));
}




Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3210
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. január 10. kedd, 16:56

Nekem nincsen arduinóm!
De valamire való fejlesztő környezetben minimum követelmény legalább 1 soros (COM PORT) kimenet. Debugolás céljából. Ha nincsen, javaslom, készíts magadnak RS232es illesztő panelt, amin kiküldheted az információkat. Éppen hól jár a programod és mik a kritikus változok értékei?
A nélkül nem fogsz boldogulni a hibakereséssel!
8)

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. január 10. kedd, 17:07

serial.begin() és környezete az Arduinonak a belső HW sorosport.
Tetszőleges lábra meg a newserial() sorosport.

Nem biztos hogy a 3 hosszú + 2 rövid + 1 füstcsík a pont jó esete :) .



Minha nem lenne a I2C kommunikáció befejezve....
Bascom: I2CStop

Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2012. január 10. kedd, 18:47

Robert írta:serial.begin() és környezete az Arduinonak a belső HW sorosport.
Tetszőleges lábra meg a newserial() sorosport.

Nem biztos hogy a 3 hosszú + 2 rövid + 1 füstcsík a pont jó esete :) .



Minha nem lenne a I2C kommunikáció befejezve....
Bascom: I2CStop


Helló

Ott a pont a debug miatt, az I2C le van zárva a Wire.endTransmission sorral. Ma megkaptam szepnorbee fórumtárs forráskódját, viszont az nem arduino hanem bascom. Szóval lehet hogy azt fogom majd használni viszont ahhoz meg keresnem, vagy építenem kell egy égetőt, és meg kell tanulnom égerni az AVR chip-et.

Egyenlőre még azt sem tudom hogy milyen panelt készítsek a programja mögé (ill az Atmega8 köré) mert míg az arduino már egy komplett áramkörrel jön addig az AVR chiphez mindent fel kell építenem. Ha tudsz valami segédanyagot, vagy hasznos linket akkor azt megköszönném.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. január 10. kedd, 20:02

Bascommal az arduino égető nélkül is megy!
A duino2.bat a kulcsszó. Itt a fórumban az utolsó változatot használd. plusz a leírásokban is van róla cikk....

A chip nem tudja hogy a kód arduino, bascom, avrstudio vagy gcc-vel készült:).
Szóval arduino HW megy bármilyen nyelvvel készült prgvel :) .

Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2012. január 10. kedd, 22:18

Robert írta:Bascommal az arduino égető nélkül is megy!
A duino2.bat a kulcsszó. Itt a fórumban az utolsó változatot használd. plusz a leírásokban is van róla cikk....

A chip nem tudja hogy a kód arduino, bascom, avrstudio vagy gcc-vel készült:).
Szóval arduino HW megy bármilyen nyelvvel készült prgvel :) .


Nem sokkal maradtam le tőled mert most találtam a youtube-on egy videót amin a pali egy Arduino duelanove-n keresztül töltött fel egy progit. Igaz ő a programozók listájából közvetlenül az arduinó-t választotta ki és úgy csinálta.


A duino.bat lett meg még csak eddig de keresem még, viszont ami megvan azt már betettem a megfelelő helyre és az elérési útvonalat is megadtam plusz a file, eeprom és com port paramétereket is megadtam. kell utánna írni az áramkör tipusát? Ha igen akkor hogy írjam be az Atmega328-at?

Illetve odáig rendben vagyok hogy a kapott foráskódból és egy Pinmap táblázatból beazonosítom hogy majd a progi mely lábakon fog kommunikálni de ha feltöltöm a programot, az alap bootloader-em elvész?? Ha jól értelmeztem akkor ha a Duino2.bat -os módszerrel égetem be a bascom programot az arduinóm chip-jébe akkor az futni fog rajta igaz??

Tudom értetlenkedek de ez nekem még új.

Előre is köszönöm a segítségedet.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. január 10. kedd, 22:41

Bootloader marad. Ugyanazt használod, mint az Arduino. Csak az előled rejtve történik Arduino SW alatt, itt Bascomnál meg látod:)

A Bascom beállítás:

External prorammer, COM port kiválaszt.
Program: c:\duino2.bat
Én a C:\ alá másoltam

Paramétere:
"{file}" "{eeprom}" com4 1280

A duino2.bat tetején ott a súgó. :)

Avatar
tuccer
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2011. augusztus 14. vasárnap, 6:00

HozzászólásSzerző: tuccer » 2012. január 11. szerda, 10:26

Robert írta:Bootloader marad. Ugyanazt használod, mint az Arduino. Csak az előled rejtve történik Arduino SW alatt, itt Bascomnál meg látod:)

A Bascom beállítás:

External prorammer, COM port kiválaszt.
Program: c:\duino2.bat
Én a C:\ alá másoltam

Paramétere:
"{file}" "{eeprom}" com4 1280

A duino2.bat tetején ott a súgó. :)



Köszi, úgy néz ki hogy bascom tanulás lesz a vége..... :D
Viszont egy duino2.bat-ot tudnál adni mert össze vissza keresem de nem találom csak a 02-est.
Előre is köszi

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. január 11. szerda, 11:20


Avatar
mm440
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2012. szeptember 12. szerda, 6:00
Tartózkodási hely: Szeghalom

Re: Opel kijelző (TID) kezelése

HozzászólásSzerző: mm440 » 2013. január 4. péntek, 23:25

Sziasztok!

Látom, páran próbálkoznak az Opel kijelzővel, akkor már én is felvetnék egy problémát...
Van egy Opel Vectrám és a szokásos Opel betegségnek hála a szalagkábel eloxidálódott, ami miatt hiányos lett a kijelzés. :(
Az elektronika persze jó, csak az LCD nem.
A kérdés, hogy létezik-e konvertálás a meghajtó IC kimenetéből mondjuk I2C-re, hogy meg tudjak vezérelni egy I2C-s kijelzőt?
Nem csak a rádiót szeretném látni rajta, hanem a hőfokot, meg az órát is.

Bár lehet, hogy egyszerűbb lenne egy külön cuccot építeni az egésznek, mint a gyárit felhasználni... :roll:
Úgy még több adatot is tudnék megjeleníteni... :P

Ja, viszont ez nem TID, hanem MID kijelző!
Ha a kacsa nem tud úszni, nem a víz a hülye!


Vissza: “LCD kezelése”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 2 vendég