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 

Težave z C18

 
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
trully1
Član
Član



Pridružen-a: Pet 14 Nov 2003 20:20
Prispevkov: 216
Aktiv.: 0.91
Kraj: Železniki

PrispevekObjavljeno: Pon Jan 28, 2008 9:27 pm    Naslov sporočila:  Težave z C18 Odgovori s citatom

Zdravo

Rabil bi malo pomoči pri programiranju v C18 od Microchipa.
Generiral sem datoteko "definicije.h" in vanjo vnesel vse definicije kot npr:
Koda:
#define WR PORTAbits.RA2

Nato sem napisal dve datoteki "main.c" in "funkcije.c"
Na začetek main datoteke sem vključil stavek:
Koda:
#include "definicije.h"

Signal WR nastopa tako v "main.c", kot tudi v "funkcije.c". Pri kompajlanju mi javi napako, da v datoteki "funkcije.c" signal WR ni definiran.
Nato sem vključil stavek
Koda:
#include "definicije.h"
tudi na začetek datoteke "funkcije.c", vendar mi sedaj javi napako, da je WR definiran 2x.
Prosim, če kdo napiše kako to rešiti.

LP Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Pon Jan 28, 2008 9:44 pm    Naslov sporočila:   Odgovori s citatom

Ponavadi se v te header datoteke napiše nekaj v stilu:

na začetku:
Koda:

#ifndef __DATOTEKA_H__
#define __DATOTEKA_H__


na koncu:
Koda:

#endif


Sem še enkrat prebral tvoj post, pa se mi zdi, da to ne bo rešilo tvojega problema (zadnje čase sem nekam površen, moram večkrat prebrat Smile ). V c-ju lahko eno globalno spremenljivko z istim imenom definiraš samo enkrat, npr:

Koda:

int tmp;


Če to isto spremenljivko uporabljaš še v kakšni drugem .c fajlu, potem mora ta .c nekje vidit definicijo te spremenljivke, označene z extern:

Koda:

extern int tmp;


LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Pon Jan 28, 2008 9:49 pm    Naslov sporočila:   Odgovori s citatom

Ali prevajalnik podpira vgnezdene knjižnice?
definicije.h znotraj main.h se mi ne zdi najbolj posrečena rešitev.
Raje v nastajajočem programu napiši
include "definicije.h"
include "main.c"
include "funkcije.c"

Pa tisti "WR" ima zelo sumljivo ime. Zelo je podobno imenom raznih registrov,...

Jaz se izogibam imenom spremenljivk, ki imajo manj kot 6 črk, oziroma uporabljam takšna s 6, 7 ali 8 črkami. Če gre za kratico, je izpeljana iz slovenskih besed (Vhodi, Izhodi, NovCas, StejRB0,...).
LP,
Igor

POPRAVEK: .h in .c sem malo pomešal, zato odgovor ne ustreza najbolj... :bonk:

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Pon Jan 28, 2008 9:55 pm    Naslov sporočila:   Odgovori s citatom

Mislim, da trully ni vključil definicije.h znotraj main.h, ampak main.c

Drugače je zlato pravilo, da main kot .c fajl, ki vsebuje main() funkcijo, nima svojega .h fajla, ker je to nepotrebno in slaba praksa. Razen mogoče pri c++, kjer se ponavadi classi deklarirajo v header datoteki, implementirajo pa v cpp datoteki, pa še tu nima class kaj za delati v main.cpp ...

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.37
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pon Jan 28, 2008 10:14 pm    Naslov sporočila:   Odgovori s citatom

Sem poskusil to tvojo stvar in dela normalno. Verjetno imaš kje drugje napako. Ali pa jaz nisem točno ponovil tvoj postopek. Very Happy


c18.JPG
 Opis:
 Velikost datoteke:  133.73 KB
 Pogledana:  16 krat

c18.JPG


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



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Pon Jan 28, 2008 10:18 pm    Naslov sporočila:   Odgovori s citatom

Hehe ... spet sem premalo pozorno bral ... kar sem napisal, velja za spremenljivko. Če uporabljaš definirano konstanto, ne bi smelo biti problema.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
trully1
Član
Član



Pridružen-a: Pet 14 Nov 2003 20:20
Prispevkov: 216
Aktiv.: 0.91
Kraj: Železniki

PrispevekObjavljeno: Pon Jan 28, 2008 10:56 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

Hvala vsem, težavo sem že rešil.
Težava je bila v tem, da se mi je znotraj "definicije.h" signal WR ponovil 2x vendar vsakič drugače.
Lenoba pač, sem vzel datoteko iz prejšnega projekta, pa sam mal novega not dodal.

LP Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-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