www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

I2C & 16F84 & Microbasic

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
tonic
Član
Član



Pridružen-a: Pet 16 Dec 2005 17:48
Prispevkov: 183
Aktiv.: 0.77
Kraj: Loče

PrispevekObjavljeno: Tor Mar 21, 2006 8:01 pm    Naslov sporočila:  I2C & 16F84 & Microbasic Odgovori s citatom

Zdravo,

imam en LCD zaslonček, poiskal sem njegov datasheet, ampak mi ga nikako ne uspe "zbudit"; PICe programiram pod basicom; za I2C imam podatkovno linijo na RA0 (pin 17), naslovna linija je RA1 (18 pin)

cikel za "inicializacijo" pa je naslednji (printscreen iz datasheeta):

http://freeweb.siol.net/tcugmas1/elektro/lcd.gif

a ima kdo kakšno rešitev za kakšen podoben primer I2C...


Hvala za kak nasvet in lp,
Toni



lcd.GIF
 Opis:
 Velikost datoteke:  30.41 KB
 Pogledana:  37 krat

lcd.GIF


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Tor Mar 21, 2006 8:09 pm    Naslov sporočila:   Odgovori s citatom

Če gre slučajno za philipsov conntroler PCF2103, datashet v prilogi. Z njiim še nisem delal, tako da ti konkretnega nasveta ne morem dati. Imaš pa kar dosti gradiva za študirat. Wink


PCF2103.pdf
 Opis:

Download
 Ime datoteke:  PCF2103.pdf
 Velikost datoteke:  230.62 KB
 Downloadano:  9 krat


_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tonic
Član
Član



Pridružen-a: Pet 16 Dec 2005 17:48
Prispevkov: 183
Aktiv.: 0.77
Kraj: Loče

PrispevekObjavljeno: Tor Mar 21, 2006 8:16 pm    Naslov sporočila:   Odgovori s citatom

ja, točno ta Very Happy

spet sem sestavil vezje na testni, ampak sedaj nočem delat pod ASMjem, ampak bi "vso" kodo prenesel v basic; pa zadeva "ne špila"... Sad

tule je stara tema, oz. ko sem se lotil zadeve, iz drugega foruma
http://www.elektro-n.com/forum2/viewtopic.php?t=10051&highlight=ga628

kolikor sem jaz razbral iz datasheeta moram komunicirat preko I2C, frekvenca je 100KHz ali pa 400KHz, besede so lahko 4bitne (gornji printscreen) ali pa 8 bitne...

pa na LCDju se mi nič ne pokaže Sad... če proban stari ASM program, zadeva dela...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tonic
Član
Član



Pridružen-a: Pet 16 Dec 2005 17:48
Prispevkov: 183
Aktiv.: 0.77
Kraj: Loče

PrispevekObjavljeno: Tor Apr 04, 2006 9:05 pm    Naslov sporočila:   Odgovori s citatom

Zdravo,

tule sem našel en primer kode v Cju; ker pa v Cju nisem tako domač Sad bi prosil koga, kateri obvlada C in basic, če bi mi lahko nakazal inicializacijo LCDja v basicu (oz. kako bi v basicu preko I2CWRITE poslal pravilen niz znakov...)

koda v Cju pa je takšna:

Koda:
 // LCD_test.CPP
// ------------   Version 23.10.2001
//                Borland IDE C++ 3.1
//                bearbeitet: BBS WiLu, D.Schwarzer
//                ----------------------------------------------
//                Ziel-Hardware: SC12 mit DOS- / I2C-LCD-Anzeige

// Das Programm initialisiert die I2C-LCD-Anzeige TTR6030 der Fa.Conrad
// und gibt in..
// Spalte 1, Zeile 1  den Schriftzug 'GoBlack' aus .. und
// Spalte 1, Zeile 2  den Schriftzug 'BBS WiLu aus

#define I2C_lcd 0x74   // Adresse der LCD-Anzeige

#include <stdio.h>
#include <dos.h>

static union  REGS  inregs;
static union  REGS  outregs;


// SoftINTs des I2C-Bus

void i2c_init()
{
  inregs.h.ah = 0x80;
  int86(0xAA,&inregs,&outregs);
}
void i2c_release(void)
{
  inregs.h.ah = 0x84;
  inregs.h.al = 0;
  int86(0xAA,&inregs,&outregs);
}
int i2c_scan(unsigned char start_addr, unsigned char end_addr)
{
  inregs.h.ah = 0x81;
  inregs.h.al = start_addr;
  inregs.h.cl = end_addr;
  int86(0xAA,&inregs,&outregs);
  return outregs.h.al;
}
int i2c_transmit(unsigned char slave, char c)
{
  inregs.h.ah = 0x82;
  inregs.h.al = slave & 0xFE;
  inregs.h.cl = c;
  int86(0xAA,&inregs,&outregs);
  if(outregs.x.flags&0x01){
     return (int)outregs.h.al & 0x00FF;
  }
  return 0;
}

// Hauptprogramm von LCD.EXE
// -------------------------
void main (void)
{

  i2c_init();            //I2C-Bus initialisieren
  if(i2c_scan(I2C_lcd, I2C_lcd)!=I2C_lcd){
    i2c_release(); return;    //Test ob LCD vorhanden
  }
  i2c_release();
  i2c_transmit(I2C_lcd,0x00);      // RS = 0
  i2c_transmit(I2C_lcd,0x25);      // 2 Zeilen, Sonderinst on
  i2c_transmit(I2C_lcd,0x06);      // Sonderinst. Zeile/Spalte spiegeln
  i2c_transmit(I2C_lcd,0x24);      // Standardinst. on
  i2c_transmit(I2C_lcd,0x0F);      // Display, Cursor, Blinken on
  i2c_release();
  i2c_transmit(I2C_lcd,0x00);      // RS = 0
  i2c_transmit(I2C_lcd,0x01);      // Display löschen
  i2c_transmit(I2C_lcd,0x84);      // DDRAM Adr.04 (1.Spalte, 1.Zeile)
  i2c_release();
  i2c_transmit(I2C_lcd,0x40);      // RS = 1
  i2c_transmit(I2C_lcd,'G'+128);      // Buchstaben 'G' senden
  i2c_transmit(I2C_lcd,'o'+128);      // usw ..
  i2c_transmit(I2C_lcd,'B'+128);
  i2c_transmit(I2C_lcd,'l'+128);
  i2c_transmit(I2C_lcd,'a'+128);
  i2c_transmit(I2C_lcd,'c'+128);
  i2c_transmit(I2C_lcd,'k'+128);

  i2c_release();
  i2c_transmit(I2C_lcd,0x00);      // RS = 0
  i2c_transmit(I2C_lcd,0xC4);      // DDRAM Adr.C4(1.Spalte, 2.Zeile)
  i2c_release();
  i2c_transmit(I2C_lcd,0x40);      // RS = 1
  i2c_transmit(I2C_lcd,'B'+128);      // Buchstaben 'B' senden
  i2c_transmit(I2C_lcd,'B'+128);      // usw ..
  i2c_transmit(I2C_lcd,'S'+128);
  i2c_transmit(I2C_lcd,' '+128);
  i2c_transmit(I2C_lcd,'W'+128);
  i2c_transmit(I2C_lcd,'i'+128);
  i2c_transmit(I2C_lcd,'L'+128);
  i2c_transmit(I2C_lcd,'u'+128);
  i2c_release();
}


HEX naslov LCDja je 0x74; pošilja se besede (8 bitov)...

sintaksa I2CWRITE je:
Koda:
I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label}



ni mi čist jasno kaj pomeni spremenljivka Control in Label (Label je opcijski parameter?) Confused

poskušam nekaj v stilu:
Koda:

sdata var PORTA.0            'podatki na A0 pinu
sclock var PORTA.1           'ura na A1 pinu
addr VAR byte                  ' spremenljivka za naslov
addr = $74                       ' naslov LCDja
cont CON $80                   ' 80hex je tudi v initu v tistem programčku iz Cja
PAUSE 100                       'pavza (za "inicializacijo" rabi 10ms, jaz počakam 100ms)
I2CWRITE sdata, sclock, cont, addr 'akcija


V glavnem, zadeva ne "zasveti" Mad

Ima kdo kakšno idejo?

Hvala in lp,
Toni


p.s.
v prilogi primer I2C operacij za PCF2103 iz datasheeta



i2c_PCF2103_ga628.GIF
 Opis:
primer I2C operacij za PCF2103 iz datasheeta
 Velikost datoteke:  45.21 KB
 Pogledana:  14 krat

i2c_PCF2103_ga628.GIF


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group