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 

Izdelava knjižnice v Cju
Pojdi na stran 1, 2  Naslednja
 
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
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pon Apr 13, 2009 12:46 pm    Naslov sporočila:  Izdelava knjižnice v Cju Odgovori s citatom

Zanima me, kako bi naredil knjižnico za funkcije(i2c komunikacija), ki bi jo lahko kasneje samo naložil v program in klical potrebne ukaze! Funkcije so trenutno del programa, rad pa bi jih zapakiral v neko datoteko, da so programi preglednejši!
Hvala za pomoč
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
snow
Član
Član



Pridružen-a: Tor 27 Dec 2005 14:02
Prispevkov: 341
Aktiv.: 1.44
Kraj: Ljubljana || Velenje

PrispevekObjavljeno: Pon Apr 13, 2009 12:53 pm    Naslov sporočila:   Odgovori s citatom

Pokukaj tu: http://www.microchipc.com/sourcecode/#i2c
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pon Apr 13, 2009 12:55 pm    Naslov sporočila:   Odgovori s citatom

Funkcije, ki jih uporabljaš enostavno prenesi v drugo datoteko, ki ji daš običajno pomenljivo ime recimo i2c.c
Predvsem pazi, če slučajno funkcije uporabljajo kakšno globalno spremenljivko, temu se moraš izognit kolikor se le da. Ko imaš ta dva pogoja izpolnjena, pa samo še kličeš to knjižnico iz glavnega programa <include i2c.c> in načeloma je to to.

Ti pa svetujem, da dobro komentiraš samo knjižnico in funkcije, da ne boš čez pol leta samo debelo gledal kaj sem že počel tule.... Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pon Apr 13, 2009 1:11 pm    Naslov sporočila:   Odgovori s citatom

V novo datoteko dam samo definicije funkcij ali tudi prototipe?

Kam spada pa ta del?
Koda:
#define SDA  TRISIO.F5
#define SCL  TRISIO.F4


@snow
funkcije sem pisal sam, iz katerih se največ naučim in "razumem" protokol ter pomen
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pon Apr 13, 2009 1:48 pm    Naslov sporočila:   Odgovori s citatom

Tonći je napisal/a:
V novo datoteko dam samo definicije funkcij ali tudi prototipe?

Kam spada pa ta del?
Koda:
#define SDA  TRISIO.F5
#define SCL  TRISIO.F4


@snow
funkcije sem pisal sam, iz katerih se največ naučim in "razumem" protokol ter pomen


Da define, daš tudi v knjižnico. Se pa splača narediti #ifndef....


Koda:

#ifndef SDA
#define SDA  TRISIO.F5
#define SCL  TRISIO.F4
#endif


Torej preizkusiti, če si že definiral pin, in če ne nastaviti pine. To je zato, da lahko v glavnem programu vsiliš druge pine-porte.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pon Apr 13, 2009 3:49 pm    Naslov sporočila:   Odgovori s citatom

Datoteko shranim kot ime.c V nov program jo vkljulim kot #include "ime.c" in ko kličem funkcijo jo samo pokličem, prototipi niso potrebni ali pač?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
snow
Član
Član



Pridružen-a: Tor 27 Dec 2005 14:02
Prispevkov: 341
Aktiv.: 1.44
Kraj: Ljubljana || Velenje

PrispevekObjavljeno: Pon Apr 13, 2009 5:43 pm    Naslov sporočila:   Odgovori s citatom

Načeoma imaš 2 datoteki. Eno s končnico .h in eno s .c.

Include kličeš na .h datoteki, ono .c pa se preved in jo potem linker poveže v končni program. To prevajanje in linkanje se ubistvu naredi avtomatsko če imaš vse skupaj npr. v mplabovem projektu.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pon Apr 13, 2009 8:56 pm    Naslov sporočila:   Odgovori s citatom

Ni potrbno komplicirat še s header datoteko. Deklaracije si tako ali tako že napisal. In z #include si prevajalniku povadal, da se ukazi nahajajo tudi drugje, kjer jih potem med prevajanjem tudi poišče.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pon Apr 13, 2009 9:57 pm    Naslov sporočila:   Odgovori s citatom

To pomeni, da inicjalizacija ni potrebna? Samo vklučim knjižnico in kličem funkcije!

edit:

ko vpišem include in vse potrebno mi javi

e:/pic/pic12f675/test/i2c_12f675.c:131: error: End of file within #if (#ifdef) section started at line 17

from E:/PIC/PIC12F675/Test/test.c: 1: #include "i2c_12f675.c"
1 error in preprocessor.

Zdi se mi, da je napaka tu nekje
Koda:

#ifndef SDA
#define SDA  TRISIO.F5
#ifndef SCL
#define SCL  TRISIO.F4
#endif
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Pon Apr 13, 2009 10:14 pm    Naslov sporočila:   Odgovori s citatom

bungee, prosim ne klobasat.

Seveda se ti to obnese ko uporabis i2c.c v samo eni datoteki, ampak takoj ko program ne bo vec trivialen, bodo problemi z linkanjem.

Kot je že snow rekel, includas prototipe (.h), in zlinkas z prevedeno implementacijo (.c/.s/.asm/...).

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



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pon Apr 13, 2009 10:24 pm    Naslov sporočila:   Odgovori s citatom

Prototipe imam v datoteki i2c_12f675.c kako naprej? Lahko tudi kak link za pomoč!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Tor Apr 14, 2009 7:22 am    Naslov sporočila:   Odgovori s citatom

Primer z razlago:
http://www.cs.cf.ac.uk/Dave/C/node35.html

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



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Tor Apr 14, 2009 8:22 am    Naslov sporočila:   Odgovori s citatom

domen_puncer je napisal/a:
bungee, prosim ne klobasat.

Seveda se ti to obnese ko uporabis i2c.c v samo eni datoteki, ampak takoj ko program ne bo vec trivialen, bodo problemi z linkanjem.
A. NE žali! Shame on you
B. Za take potrebe je .c dovolj, če pa bo vse skupaj ratalo bolj ogromno pa se bo tudi že naučil o header datotekah.
C. Ko bo program za PIC-a tako velik, da bo potreba po navzkrižnem linkanju.... ehem vrjetno nikoli ne bo tako velik.

Pa še odgovor na #ifndef. Jaz uporabljam CCS in mi ta precompiler ukaz deluje, preveri dokumentacijo za tvoj prevajalnik, če to sploh dovoljuje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Tor Apr 14, 2009 5:06 pm    Naslov sporočila:   Odgovori s citatom

bungee je napisal/a:
A. NE žali! Shame on you

Ko vidim neumnost, povem kaj to je. Če te to žali, lahko nehaš govoriti neumnosti Wink

Zakaj je to neumnost:
Nimaš 2 minuti dodatnega dela, da stvar narediš prav (ok... to je majhen minus)
Če bo kdo gledal kodo za tabo, lahko pričakuješ kletvice.
Bolje se je že prvič naučiti prav. Brez (minimalnega) znanja potrebnega za pisanje headerja si težko predstavljam programiranje.
Ker je potrebno še samo par takih idej, in kar naenkrat imaš 5000 vrstičen program napisan v eni datoteki.

bungee je napisal/a:

C. Ko bo program za PIC-a tako velik, da bo potreba po navzkrižnem linkanju.... ehem vrjetno nikoli ne bo tako velik.


Ne gre se samo za velikost, ampak tudi za razdeljevanje programa na smiselne (po moznosti ponovno uporabljive) celote. Npr. del programa bere z I2C temperaturnega senzorja, drugi del pa zajema nekaj nepovezanega z ADC na I2C.

Koda:

#ifndef SDA
#define SDA  TRISIO.F5
#ifndef SCL
#define SCL  TRISIO.F4
#endif


Manjka #endif pred drugim #ifndef (kot zaprtje prvega).

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



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Tor Apr 14, 2009 7:17 pm    Naslov sporočila:   Odgovori s citatom

Res je! teh endif ne poznam, moram še preštudirat! Zanima me, kaj in kako naj naredim header! Vanj vključim samo prototipe in shranim kot .h. Zanima me, ali naj ga v vsakem programu tudi kličem?
Zanima me še, kakšnega tipa so spremenljivke v tej knjižnici (globalne, lokalne?)

Imate prav, da se pri velikem številu vrstic hitro zmede! Najprej sem imel program za izpis in merjenje v enem in moram priznati obup!
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
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group