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 

C, Linux in I2C

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Linux, unix razprave
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.03
Kraj: Dragomer

PrispevekObjavljeno: Pet Avg 19, 2011 10:10 am    Naslov sporočila:  C, Linux in I2C Odgovori s citatom

V C-u sem novinec.
Trenutno iščem, kako brati in pisati na I2C čipe.

Kje obstajajo biblioteke funkcij/podprogramov (prepričan sem, da obstajajo) za komunikacijo z I2C čipi? Nekje je verjetno kak I2CRead in I2CWrite funkcija, skupaj z ostalimi funkcijami potrebnimi za uspešno in preprosto I2C komunikacijo, a ne najdem.
Tudi google mi ni pomagal.

A, ja. Gre za Beagleboard z ARM Cortex A8 procesorjem.
AVR ima #include <i2cmaster.h>
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
logist
Član
Član



Pridružen-a: Pon 25 Jan 2010 1:12
Prispevkov: 126
Aktiv.: 0.73
Kraj: dom(o)vina

PrispevekObjavljeno: Pet Avg 19, 2011 11:09 am    Naslov sporočila:   Odgovori s citatom

Sedaj ne vem kateri OS imaš nameščeni za moj Atmel ARM imam debarm.
V primeru da imaš Linux potem se povežeš na ARM
(jaz se na mojega preko putty-a ) zato ti bom podal take ukaze :
Koda:
debarm:~# cd /dev
debarm:/dev# ls i2c*
i2c-0
debarm:/dev#


Koliko vidiš da moj ARM ima eno I2C vodilo -0 pomeni zaporedna številka - torej jih lahko imaš več.

V primeru da nimaš i2c-0 ali kar koli podobnega in če imaš debarm to lahko preveriš takole :
Koda:
debarm:/dev# uname -a
Linux debarm 2.6.38 #14 Wed Mar 30 12:46:16 CEST 2011 armv5tejl GNU/Linux
debarm:/dev#


Če ti izpiše Linux debarm :
potem samo vneseš
Koda:
debarm:/dev# sudo su apt-get install i2c*

In ti bo program sam namestil kar vse potrebuje za delo z i2c.

Upam da sem ti kaj s tem pomagal če ne pa boma naprej iskala Very Happy.
In ne pozabi v Linux-u komuniciraš z napravami (RS232,I2C, itd) kot da so datoteka torej v C/C++ uporabljaš primer :
Koda:
file = open("/dev/i2c-0", O_RDWR);


EDIT : če je kdo gledal je bilo prejšnjo sporočilo čista tema Very Happy

_________________
Mihael
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.03
Kraj: Dragomer

PrispevekObjavljeno: Pet Avg 19, 2011 3:18 pm    Naslov sporočila:   Odgovori s citatom

To je pa obširen in informativen odgovor. Bom takoj probal. Najlepša hvala!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.03
Kraj: Dragomer

PrispevekObjavljeno: Pet Avg 19, 2011 3:24 pm    Naslov sporočila:   Odgovori s citatom

Dobil sem:

Koda:
beagleboard:~$ cd /dev
beagleboard:/dev$ ls i2c*
i2c-1  i2c-2  i2c-3
beagleboard:/dev$


naprej si ne upam, nisem lastnik linuxa, se moram pgovorit z administratorjem, da jih ne bi slišal od njega.

Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.03
Kraj: Dragomer

PrispevekObjavljeno: Pet Avg 19, 2011 3:30 pm    Naslov sporočila:   Odgovori s citatom

Sprašiujem naprej:

Ko imam odprt file na i2c, s kakšnimi ukazi berem in pišem na i2c linijo?
V bascomu sem imel posebne ukaze

Koda:
  I2cstart                                               'start condition
  I2cwbyte Addressw                                       'slave address
  I2cwbyte Adres                                         'asdress of EEPROM
  I2cwbyte Value                                         'value to write
  I2cstop                                                 'stop condition
  Waitms 10                                               'wait for 10 milliseconds



Kako je to v C-u in ali potrebujem kak poseben #include <i2c.h> ali kaj podobnega?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
logist
Član
Član



Pridružen-a: Pon 25 Jan 2010 1:12
Prispevkov: 126
Aktiv.: 0.73
Kraj: dom(o)vina

PrispevekObjavljeno: Sob Avg 20, 2011 3:27 pm    Naslov sporočila:   Odgovori s citatom

Kot sem reko v prvem sporočilu :
mihael je napisal/a:
In ne pozabi v Linux-u komuniciraš z napravami (RS232,I2C, itd) kot da so datoteka torej v C/C++ uporabljaš primer :
Koda:
Koda:

file = open("/dev/i2c-0", O_RDWR);


Primer pa je taki :

Koda:
/* This code is based on the cut-and-paste of linux/Documentation/i2c/dev-interface */
 
#define I2C_ADDR   0x27
 
int main (void) {
  char buf;
 
  file = open("/dev/i2c-0", O_RDWR);
  if (file < 0) {
    /* ERROR HANDLING; you can check errno to see what went wrong */
    exit(1);
  }
 
  if (ioctl(file, I2C_SLAVE, I2C_ADDR) < 0) {
    /* ERROR HANDLING; you can check errno to see what went wrong */
    exit(1);
  }
 
  for (buf=0; buf<256; buf++) {
    if (write(file, &buf, 1) != 1) {
      /* ERROR HANDLING: i2c transaction failed */
    }
  }
}


Seveda je potrebno dodatno vključiti osnovne knjižnice za delo z datotekami fstream.

_________________
Mihael
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
sortaj
Član
Član



Pridružen-a: Sre 23 Jul 2008 21:51
Prispevkov: 812
Aktiv.: 4.23
Kraj: Med Vipavo in Štanjelom

PrispevekObjavljeno: Sob Avg 20, 2011 4:59 pm    Naslov sporočila:   Odgovori s citatom

Ufa vilko!
Hude "živali" si se lotil! Shocked

Ena zadeva pa mi ni jasna...
Ga poskušaš programirat na nižjem nivoju(kot AVR-je), ali preko operacijskega sistema(kot npr. računalnik)?
Imaš naložen OS na plošči?



lp, Jernej

_________________
Svet je bil analogen, dokler ni Planck vsega zafrknil...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.03
Kraj: Dragomer

PrispevekObjavljeno: Sob Avg 20, 2011 5:14 pm    Naslov sporočila:   Odgovori s citatom

Hvala, logist,

Bom moral še študirat, da bom to izpeljal. No bomo videli.

Beagleboard (BB) ni moj, je od sina, ima na njem Linux in je na mreži, tako da lahko programiram GNU C od doma. (Putty in WinSCP). Tako imam vsaj soliden editor, ne pa tisti nemogoči vi editor, ki je na Linux-u.

Do sedaj je edino, kar sem naredil ena funkcija, ki sem jo imenoval NMEAXOR, in služi za preverjanje ali generiranje dveh kontrolnih znakov, tako, kot jih poznajo NMEA telegrami, (GPS). Princip preverjanja je dokaj preprost, in ga nameravam uporabiti za preverjanje RS485 komunikacije med BB in mojimi AVR 'slave'-i ki jih še naprej nameravam programirati v Bascomu..

I2C pa je zanimiv, prvič, ker ga BB omogoča, in ker so I2C slave-i zanimiva razširitev BB-a na direktne senzorje ali aktuatorje.

Pozdrav
VS
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
logist
Član
Član



Pridružen-a: Pon 25 Jan 2010 1:12
Prispevkov: 126
Aktiv.: 0.73
Kraj: dom(o)vina

PrispevekObjavljeno: Sob Avg 20, 2011 7:06 pm    Naslov sporočila:   Odgovori s citatom

Mislim da ARM ni smiselno programirat na nivojih kot so AVR-ji, ker imaš knjižnice, ki ti poskrbijo za to komunikacijo za ta nivo.
Lahko pa še vedno dostopaš do vhodov/izhodov direktno, vsaj pri mojem Debarm-ju do njih dostopam kot do datoteke in samo preberem vsebino ali je 0 ali 1 vrednost na tem pinu Very Happy

Uporabljam pa tole zadevo :
http://www.acmesystems.it/?id=FOXG20 in komi čakam da bo centralna kurjava na biomaso v kompletu delovala. Testno verzijo si lahko ogledate tukaj :
http://193.77.135.56:8080/centralna -> trenutno program črpalke odpira naključno temperature pa so realne, samo en senzor nekaj mu ne paše ampak za Peč je dober Very Happy Sistem pa bo tako deloval : ARM <-LAN-> Server <-WAN-> Brsklanik preko Serverja nastaviš lastnosti in jo potem program pošlje ARM-ju. ARM pa pošilja na Serverju (napisal sem program ki komunicira in pobira podatke in jih shranjuje v MySQL) podatke o temperaturi.

To zadnje je bilo off-topic.

_________________
Mihael
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Linux, unix razprave Č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: 74 dni


Powered by phpBB © 2001, 2005 phpBB Group