Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   57 / 153
(#) potyo válasza Programmer hozzászólására (») Máj 13, 2012 /
 
Azt úgy kellene szabályosan csinálni, hogy a .c fájlhoz létre kellene hozni egy .h fájlt is, és abba pakolni ezeket a fejléceket, a .c fájlba be kell includolni a .h fájlt. Másik forráskódokba pedig csak a .h fájlunkat includoljuk, a fordító pedig megkeresi magának, hogy mi hol található, illetve majd kiabál, ha valamit nem talál.
(#) Programmer válasza potyo hozzászólására (») Máj 13, 2012 /
 
Ez így igaz, de én egész másról írtam.
Az általad említett megoldásban csak a header állományok tartalmaznák a prototipust, én arra akartam rávilágítani, hogy bár nem kötelező, sokat segíthet ha ezeket a forrás IS tartalmazza..
Egy másik gondolat: a header-ek használata okés, ha a függvényeket máshol is akarod használni, de mi van azokkal amelyek rejtve kell maradjanak?! Ebben az esetben csak a forrásban lehet elhelyezni a prototipusokat, esetleg egy static kulcsszóval meg is védeni...
(#) maestro hozzászólása Máj 14, 2012 /
 
Sziasztok!
Ehhez a HIGH-TECH C-hez mit kell pontosan feltelepítenem MPLAB-hoz, hogy használni tudjam?
Én ezt találtam:
HI-TECH C
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO/Standard/LITE) Update v9.83
Ő lenne az?
16F-es controllerre kellene.

Meg valami jó kis oldalt tudtok ajánlani kezdésnek? assembly már nagyjából megy, csak megfájdul tőle a fejem.
Olvasgattam már Topi "Nulláról a robotokig" cikkét is, de az nem valami jól magyaráz a C-nyelvnél.
(#) Hp41C válasza maestro hozzászólására (») Máj 14, 2012 /
 
Szia!

Magát a fordítót és a HI-TECH Universal Toolsuite v1.37 (MPLAB IDE Plugin)-t. A linkelt lapon a legalsó sor.
(#) vilmosd válasza maestro hozzászólására (») Máj 14, 2012 /
 
A MCHP XC forditojat is letoltheted, telepitheted. Hasonlit a HiTech forditohoz. Esetleg egy par leiras itt van. Vannak mintapeldak is benne, igaz inkabb CCS C-re.
(#) maestro válasza Hp41C hozzászólására (») Máj 14, 2012 /
 
És melyik a compiler? Mert amit belinkeltem ott csak update van, a Project Wizard-nál meg egy nagy piros X van a PICC compiler mellett, vagyis nincs feletelepítve.
(A linkelt oldalról mind a kettőt feltettem).
(#) maestro válasza maestro hozzászólására (») Máj 14, 2012 /
 
Azt hiszem meg van, ki kellett tallózni a picc-9.83-win.exe-t.
vilmosd:
Köszi, mindjárt megnézem mit tudok hasznosítani belőle. Igazából csak pár alap dologra lenne szükségem, mint pl. előjeles törtszámok összadása, szorzása, osztása, kivonása. A többi egyszerűbb assemblybe. Talán...
(#) maestro hozzászólása Máj 14, 2012 /
 
Újabb nehézségek már az elején:
Miért nem tudom a bitek konfigurálásánál az órajelemet beállítani?
És miért nem akarja lefordítani ezt a mérhetetlenül nagy bonyolultságú programot a fordító? Még azt sem írja ki, hogy build failed.
Íme:
  1. #include <pic.h>  //Na ez minek ide?
  2.  
  3. void main(void){
  4. ADCON1 = 0x06;
  5. TRISA = 0b00000000;
  6. TRISB = 0b00000000;
  7. TRISC = 0b00000000;
  8. PORTC = 0b10101010;
  9. }

Mi hiányzik még belőle, hogy működőképes legyen?
És vajon miért a feladatkezelőből kell kilőnöm az mplabot?
Valaki igazán meglökhetne, hogy el tudjak indulni a C irányába.
(#) watt válasza maestro hozzászólására (») Máj 14, 2012 /
 
Szia! Miért nem nézel meg egy példa programot? Gyorsabb lenne mint oldalakat írogatni!
Miért nem a gyári fordítót használod, ha már most tanulod a C-t?
(#) maestro válasza watt hozzászólására (») Máj 14, 2012 /
 
Topi villogtatós példa programját néztem meg, csak kivettem belőle a delayt meg a button-os részt mert arra most nincs szükségem, így ennyi maradt.
Bővebben: Link
És nem hinném, hogy oldalakat kellene írogatni egy PORTC-re kiküldött 1-es állapottal.
C nyelvet már tanultam, csak nem PIC-re alkalmaztam, tehát csak elindulnom kellene. Kezdetbe az assembly-s kódom sem akart lefordulni, MPLAB hülyeségei miatt. Szerintem most is valami ilyesmiről lehet szó.
De ez az órajelbeállítás miért nem működik? Topi cikkéből azt vettem le, hogy a bit konfigurálásnál kell beállítani.
Próbáltam ezt is, de pirossal kiszínezi a parancsot, tehát nem tetszik neki.

#use delay(clock=4000000)
(delay nélkül sem)

Mert azt sem tudom, hogy melyik a gyári fordító, ezeket nem nagyon szokták cikkekben írni, mert alapismeretnek gondolják, pedig egy kezdő elvész a sok információ halmazba.
Ha a CCS-C-re gondolsz akkor azért nem azzal kezdem, mert rákeresve ebbe a topicba nem nagyon ajánlották.
(#) vilmosd válasza maestro hozzászólására (») Máj 14, 2012 /
 
Idézet:
„#use delay(clock=4000000)”

Ez ha jol emlekszem nem HTC hanem CCS C.
(#) maestro válasza vilmosd hozzászólására (») Máj 14, 2012 /
 
Azt tudom, mert a CCS-C-s résznél volt, de kínomban kipróbáltam ezt is.
De most esett le, hogy a "Value" a "Configuration Bits"-nél nem is azt jelenti.
Tehát a kérdés hogy tudom beállítani az órajelet? (20Mhz)
(#) icserny válasza maestro hozzászólására (») Máj 14, 2012 /
 
Idézet:
„Valaki igazán meglökhetne, hogy el tudjak indulni a C irányába.”
Én először is elolvasnám a telepített C fordító dokumentációját, utána pedig megnézném a fordítóval települt mintapéldákat.
(#) maestro válasza icserny hozzászólására (») Máj 14, 2012 /
 
Ez ennyire specifikus kérdés lenne, hogy nem lehet rá egyszerű választ adni? Fentebb leírtam, hogy mit telepítettem fel. A cikkben is ez volt, hogy ezt kell feltelepíteni. De akkor hogy van ez? Mégsem használja senki?
Mellesleg ha a HI-TECH ANSI C Compilert jelölöm be a Project Wizard-nál, akkor sem fordul le semmi.
Még ennyi sem:
#include
void main{
}
Lehet inkább újra telepítem az MPLAB-ot, mert amilyen béna szoftver, lehet azzal van a gond. Egyszer már segített az újratelepítés.
(#) icserny válasza maestro hozzászólására (») Máj 14, 2012 /
 
Idézet:
„Ez ennyire specifikus kérdés lenne, hogy nem lehet rá egyszerű választ adni?”
Én nem használom, tehát nem tudok választ adni. Tanácsot viszont adtam, elmondva, hogy én hol keresgélnék.

Mégegy tipp: a Hitech fordító (legalábbis amikor két éve utoljára próbáltam) parancssorből is futtatható. Így ellenőrizhető, hogy az MPLAB bekavar-e vagy sem.
(#) watt válasza maestro hozzászólására (») Máj 14, 2012 /
 
Látod, lassan megvan az egy oldal, és még semmire sem mentél! Halgass a tanácsokra, telepítsd fel a HI-TECH-et és nézd meg a példaprogramokat. Az MPLAB pedig messze nem béna, erről biztosíthatlak, legfeljebb most még meghaladja a képességeidet, amit szorgos tanulással és némi fórum olvasgatással meg tudsz változtatni. Használd a keresőt is, sok téma erről is szól. Arra ne számíts, hogy mindez holnapra menni fog, meg kell adni neki az időt, mire minden kitisztul...
(#) maestro válasza watt hozzászólására (») Máj 14, 2012 1 /
 
Csak az a baj, hogy azt az 1 oldalt nem TI írtátok! Én csak teszem fel az újabb kérdéseket és választ meg nem igazán kapok. Kezdem azt hinni, hogy itt senki sem ért a C-ben történő programozáshoz.
De érdekes, pedig leírás alapján csináltam mindent és mégsem működik.

Ha nem béna szoftver, akkor azt mivel magyarázod, hogy ugyanaz a plugin a feladatkezelőben 5-ször is fut egyszerre, alig lehet kilőni őket. MPLAB bezárása sem állítja le az MPLAB-ot! Elég bugos. A szimulációja sem kifejlett, az Oshon 10-szer hatékonyabb nála.
HI-TECH-et meg már feltelepítettem, ezt leírtam.
Idézet:
„Arra ne számíts, hogy mindez holnapra menni fog, meg kell adni neki az időt, mire minden kitisztul...”

Akkor itt már nem csak bennem van a hiba, ugyanis ennél könnyebb kérdést már nem fogok feltenni. És egy ilyen kis problémát egy hozzáértő ember 1 hsz-ban 5 perc alatt megold. De mindegy, megoldom egyedül, mert úgy látom, hogy ez a topic csak lassítja a probléma megoldást, pedig az ellenkezőjét kellene tennie.
(#) watt válasza maestro hozzászólására (») Máj 14, 2012 /
 
Nálam semmi olyasmi nem történik és soha nem is történt, mint nálad. Fogalmam nincs mit rontasz el. Valami baj lehet a rendszereddel, ha ilyen dolgok történnek.

Itt nem szerencsés lehülyézni mindenkit, de te tudod. Sok szerencsét...
(#) benjami válasza maestro hozzászólására (») Máj 14, 2012 /
 
Nálam ezt simán lefordítja, az MPLAB 8.76-al együtt települt HI-TECH C (lite mode) v9.82 pic16f690-re. A hiba nem a programban, hanem a telepítésnél vagy a project beállításokban lesz. Az include pedig azért kell hogy a fordító tudjon mit kezdeni az ADCON1, TRISA stb. szavakkal. Ezek ugyanis nincsenek a fordítóba (picc.exe) fixen bedrótozva, hanem a pic.h vagy az abba beinclude-olt más header file-ok tartalmazzák.
Mivel nem használok PIC16-ost nem használom ezt a fordítót.
(#) maestro válasza watt hozzászólására (») Máj 14, 2012 /
 
Na végre lefordult a Universal Toolsuite-tal, a másikkal még nem! És az a helyzet, hogy a hozzászólásaimban benne van az összes hiba amit vétettem, és amit észre kellett volna annak vennie aki elolvasta!

benjami:
Köszi! Végre valaki aki válaszolt is valamire érdemben!
(#) icserny válasza maestro hozzászólására (») Máj 14, 2012 /
 
Idézet:
„Kezdem azt hinni, hogy itt senki sem ért a C-ben történő programozáshoz.”
Lehet, hogy rosszul látom, de a kérdéseidnek szerintem nem sok köze volt a C programozáshoz...

Szeretnélek emlékeztetni, hogy a Microchip mikrovezérlők hardver felépítése csak a PIC18-től felfelé teszi lehetővé a hatékony C programozást. A PIC16-hoz nem is fejlesztett C fordítót, a Hitech C fordító nem túl régen, egy cég felvásárlása kapcsán került a tulajdonába. Tehát ne lepődj meg, ha úgy tűnik, nem sokan ismerik ezt a fordítót.
(#) Programmer válasza maestro hozzászólására (») Máj 15, 2012 /
 

Idézet:
„C nyelvet már tanultam, csak nem PIC-re alkalmaztam, tehát csak elindulnom kellene.”

Ezek után kezded azt hinni, hogy senki ezen a fórumon nem ért a C-hez. Mégis te kérdezed miért kell include-olni egy header állományt?!
A Topi féle program átírásánál is vétettél egy hibát mert önkényesen kitörölted a végtelen ciklust.
Először is tisztában kéne lenni pár alap dologgal, utána szidni fordítót, fórumtársat, fejlesztőeszközt...
(#) maestro válasza Programmer hozzászólására (») Máj 15, 2012 /
 
Igen, biztos elég gyakran includoltam pic.h állományt PC-re történő programozásnál. Mellesleg kb. 3 éve nem használtam már a C-t és csak 1 évig tanultam, akkor is csak az alapokat. A kérdés meg inkább arra irányult, hogy mit tartalmaz.
Nem vétettem nagy hibát, mert végtelen ciklus nélkül is le kell fordulnia a programnak. Nem az volt a kérdés, hogy miért nem működik, hanem az, hogy miért nem fordítja le! Olvass vissza. Csak senki nem vette észre a másik hibát ami miatt nem fordított, mert gondolom csak felületesen olvastátok el a hsz-t.

Offolást befejeztem, több off-ra nem válaszolok.
(#) bankimajki hozzászólása Máj 18, 2012 /
 
Sziasztok, ideje a C-t is gyakorolnom. 16F és 18F-es PIC-ekkel és egyéb jószágokkal játszadozom. Letöltöttem a Hi-tech C progit. feltelepítettem, de nem tudom hogy hogyan tudnám ezt az MPLAB-ban is használni. Amikor a projekt varázslóval létrehozok egy új projektet, és ott megadom hogy C nyelven akarok fejleszteni, akkor ki kell választani a C fordítót. De a HI-Tech C mappában van 2 almappa a HC51 és PICC Gondolom a PICC mappában kell keresgélnem. Ott is van lite ill. std mappa. Azon belül egyéb mappák. Ha valaki megmondja nekem az exe fájl nevét már az is elég lenne.

Üdv.: Miki
(#) icserny válasza bankimajki hozzászólására (») Máj 18, 2012 /
 
PIC10/12/16 esetén picc.exe
(#) bankimajki válasza icserny hozzászólására (») Máj 18, 2012 /
 
Köszönöm.
(#) whalaky hozzászólása Jún 11, 2012 /
 
Üdv mindenkinek!
Nem rég kezdtem C18-al foglalkozni (eddig CCS-el mókoltam), de máris megakadtam.
Egy PIC18F6722 ADC-jét próbálom életre kelteni, de sehogy nem akar menni a dolog.
sem így:
  1. TRISAbits.TRISA0 = 1;
  2.    TRISAbits.TRISA1 = 1;
  3.    TRISAbits.TRISA2 = 1;
  4.    TRISAbits.TRISA3 = 1;
  5.  
  6.    ADCON1bits.PCFG = 0b1011;      // A0-A3 set to analog input
  7.    ADCON1bits.VCFG = 0;           // Vref Vss to Vdd
  8.    ADCON0bits.CHS =  0;           // select channel AN0
  9.    ADCON2bits.ACQT = 7;           // 20 TAD
  10.    ADCON2bits.ADCS = 6;           // FOSC / 64    
  11.    ADCON2bits.ADFM = 1;           // Right justify
  12.    ADCON0bits.ADON = 1;           // enable ADC
  13.  
  14.    Delay1KTCYx(2);
  15.  
  16.    ADCON0bits.CHS = 0;
  17.    Delay1KTCYx(2);
  18.    ADCON0bits.GO = 1;
  19.    while ( ADCON0bits.GO ) ;


sem pedig így:
  1. TRISAbits.TRISA0 = 1;
  2.    TRISAbits.TRISA1 = 1;
  3.    TRISAbits.TRISA2 = 1;
  4.    TRISAbits.TRISA3 = 1;
  5.    OpenADC( ADC_FOSC_64 & ADC_RIGHT_JUST & ADC_20_TAD,
  6.       ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS,
  7.       11 );  
  8.    Delay1KTCYx(2);
  9.      
  10.    SetChanADC(0);
  11.    Delay1KTCYx(2);
  12.    ConvertADC();
  13.    while ( BusyADC() ) ;
  14.    ADC = ReadADC();


A jelenség mindkét esetben az, hogy az ADCON-ban 0x0000 van, még akkor is ha tápra húzom.
A teljességhez hozzátartozik, hogy egyenlőre csak proteusban próbálom életrekelteni.

Mit rontok el?
(#) whalaky válasza whalaky hozzászólására (») Jún 11, 2012 /
 
A dolog időközben úgy alakult, hogy hosszas szenvedések után csináltam egy kis programocskát. 18F4550-el gyönyörűen megy a szimuláció, ugyan az 18F6722-vel meg sem makkan....
Lehetséges hogy a 18F6722 hibás a proteusban? Nincs valakinek ilyen tapasztalata?
(#) whalaky válasza whalaky hozzászólására (») Jún 12, 2012 /
 
Napok óta bújom az adatlapot és nem és nem....
Ha valakinek lesz rá ideje megtenné hogy ránéz?
A dsn-t és a többi szükséges file-t csatoltam.

ADCsym.zip
    
(#) Ven válasza whalaky hozzászólására (») Jún 12, 2012 /
 
Nem szorosan ide tartozik, de múltkor találtam valami elírást. PIC14k50 doksiban a timer3 RD16-os bitje a szimulációhoz(MPLAB SIM-mel) képest pont fordítva működik. Végül a szimulációnak lett igaza. Hátha nálad is hasonló a helyzet.
Következő: »»   57 / 153
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem