Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   63 / 118
(#) szuperman hozzászólása Szept 19, 2011 /
 
Most jó! Köszi! De mért nem dob hiba üzenetet a fordító?
(#) szkrep válasza szuperman hozzászólására (») Szept 19, 2011 /
 
Nem is tudod, milyen sokszor fog még felmerülni benned ez a kérdés!
(#) szuperman hozzászólása Szept 19, 2011 /
 
ccs -ben hogy lehet az elő és az utó osztást beállítani?
(#) szuperman hozzászólása Szept 19, 2011 /
 
Konkrétan ezt szeretném megcsinálni ,de ccs -be nem tudom ,hogy lehet.

Valaki leírná mit ,hogy lehet beállítani?

Előre köszi!

timer2.png
    
(#) potyo válasza szuperman hozzászólására (») Szept 19, 2011 /
 
A CCS súgójában nézted már?
(#) szuperman hozzászólása Szept 19, 2011 /
 
Nem igazán találtam mit hogy kellene beállítani...
(#) sysy válasza szuperman hozzászólására (») Szept 19, 2011 /
 
A legegyszerőbben így:

#use delay(clock=8000000)

helyett ezt írod:

#use delay(int=8MHz)

a PLL bekapcsolása:

#use delay(int=32MHz)

Vagy, ahogy az előttem szólók ajánlották.

sysy
(#) vilmosd válasza szuperman hozzászólására (») Szept 20, 2011 /
 
Meg mindig melegen ajanlom a konyvtaram. Talalsz ott egy CCS code book zipet. (valami hasonlo neven) Bontsd ki es nezegesd a mintapeldakkal egyutt a doksikat. A lenyeg a defs_xxx.h filekben talalhato. Lenyege, hogy a uC regisztereit, bitjeit elnevezi, amikre kesobb normal valtozokent hivatkozhatsz. Vegig kell nezni a mintapeldakat, es latni fogod hogyan lehet hasznalni ezeket. A dolog lenyege, hogy kikeruljuk a CCS C sok beepitett fvenyet (C stilusu programozas elonyben). A peldak termeszesen nem a Te altalad kivant eszkozre vonatkoznak, de az adatlap segitsegevel atirhato barmely ujabb eszkozre. Csak a regiszterek es bitek cimeit kell ismerni. A doksiban (kulfoldi nyelven) leirja a hasznalatot, es magyarazza a mintapeldakat. Eleinte en is a CCS sajat fvenyeit hasznaltam, de egyes bonyolultabb eszkoznel mar nehezkes a fvenyek parameterezese. Akkor tertem at erre a modszerre, mert sokkal konnyebb az initeket megcsinalni, es utana is konnyebb dolgozni az egeszben.
Konkretan 18F2550-re nincs kesz kodom, de egy masikhoz csinaltam hasonlo trukkoket:
  1. #BYTE port_a = 0xf80
  2. #BYTE port_b = 0xf81
  3. #BYTE port_c = 0xf82
  4. #BYTE port_d = 0xf83
  5. #BYTE port_e = 0xf84
  6. #BYTE intcon = 0xff2
  7. #BYTE intcon2 = 0xff1
  8. #BYTE tris_a = 0xf92
  9. #BYTE tris_b = 0xf93
  10. #BYTE tris_c = 0xf94
  11. #BYTE tris_d = 0xf95
  12. #BYTE tris_e = 0xf96
  13. #BYTE sspcon1 = 0xfc6
  14. #BYTE sspstat = 0xfc7
  15. #BIT  ckp = sspcon1.4
  16. #BIT  cke = sspstat.6
  17. #BIT  smp = sspstat.7
  18. #BIT  rec_s = port_a.4
  19. #BIT  rtccif = intcon.2
  20. #BIT  rtccie = intcon.5
  21. #BIT  rbpu = intcon2.7
  22. #bit  SDI=port_c.4
  23. #bit  AD_CS=port_c.1
  24. #bit  z_led=port_b.4
  25. #bit  t_led=port_b.5
Ezek lennenek a valtozok deklaralasai. Majd alljon itt egy-ket pelda a hasznalathoz:
  1. rbpu=0;
  2.     set_timer0(100);
  3.         int_count=INTS_PER_SECOND;
  4.         port_a=0;
  5.         port_b=0;
  6.         port_c=0;
  7.         port_d=0;
  8.         tris_b=0b00001111;
  9.         tris_c=0b10110101;   // C1=AD_CS, C3 = CLK out, C4 = SDI, C6=XMIT, C7=RCV
  10.         AD_CS=1;    //Start with CS high
Termeszetesen ez mas tipusu uC, de az elv altalanos, es arra kell megirni amit hasznalsz. Kicsivel tobb munka, de ez a kesobbiekben boven megterul.
(#) sysy válasza vilmosd hozzászólására (») Szept 20, 2011 /
 
Néhány gondolatot szeretnék ehhez hozzáfűzni, azzal a megjegyzéssel, hogy nem rosszindulatból írom le és nem akarok senkit megsérteni.
A kezdőket, ha lehet pontos információkkal lássuk el, mert nekik egy vessző is lehet buktató. A doksikat is pontosan jelöljük meg, mert a "könyvtáradban" sajnos nagyon nehéz a valami hasonló nevű holmit fellelni. A másik, hogy ha több dolgot akarok letölteni, akkor órákat kell rá várni. Miért? Nincs jobb feltöltő oldal, csak ez az őskővület?
Miért akarod lebeszélni a kezdőket arról, hogy használják a CCS beépített függvényeit. Ennél kényelmesebb dolgot nem is tudok elképzelni. Több, mint 25 évig programoztam assemblyben különböző processzorokra. Most is néha megnézem, hogy milyen kódot generál a CCS C-ből -> asm-be és szinte mindig el kell ismernem, hogy a CCS fiúk értik a szakmájukat és jobban értik és átlátják a nyelv lehetőségeit mint mi bármikor is fogjuk. Én is megpróbálkoztam saját kút fejemből újítgatni, de mindig rá kellett jöjjek, hogy vagy nagyobb, vagy lassabb, vagy kezelhetetlenebb függvényt írtam, mint a CCS fiuk. Vannak persze kivételek (fprintf és tettestársaik) de ezekre is van magyarázat. Mindenkinek, minden problémájára lehessen használni ezeket. Ez néha nem jó. Ha nem kell a biteket élére állogatva begyömöszölni a memóriába akkor a beépített függvényeket nagyon kényelmesen és hatékonyan lehet használni. (Time is many.)

A regisztereket és a bitjeiket változókén definiálni nagyon klassz dolog, ez is a hatékonyságot növeli. Én is ajánlom mindenkinek.
A belső regiszterek és bitek definícióját sem kell kézzel megcsinálni, sőt, még a címüket sem kell kinézegetni a doksiból, mert ha az ember fia veszi a fáradtságot és valamilyen idegen nyelven elolvassa a CCS IDE leírását, akkor megtudja, hogy ezt neki ingyen és bérmentesen a CCS megcsinálja teljesen szabványos Microchip elnevezésekkel BÁRMELYIK (még a 18F2550-hez is) MCU tipushoz egy .h filébe és csak be kell includolni. Mindezt nem egészen 1tized másodperc alatt.
Ha valaki nem akarja valamilyen idegen nyelven átrágni magát az Users Manualon, az írjon magánban és elárulom neki az aranycsinálás titkát
(#) vilmosd válasza sysy hozzászólására (») Szept 20, 2011 /
 
A konyvtarral kapcsolatban ha tudsz valami jobbat, akkor ne tartsd magadban. Ezt azert hasznalom, mert nem torli a feltoltott dolgokat 3 honap utan.
A regiszter mint valtozo deklaralasa viszont Neked sem ment at. Amik a device header filekben vannak azok definialjak az egyes regiszterek, bitek nevet, de mint valtozok nem hasznalhatok. Ezert hasznalom igy, mert igy valtozokent erteket adhatok neki, muveleteket vegezhetek vele. Pl:
  1. output_high(AD_CS);
  2.    output_low(AD_CS);
helyett
  1. AD_CS=1;
  2. AD_CS=0;
Jobban atlathato. Nagyon jok a beepitett fvenyek, de azert sok mindent lehet egyszerubben csinalni. En allandoan lesem az ASM listat, es sokszor bizonyitott mar ez a modszer. Mondjuk egy bitbillegtetos kezdonek talan egyszerubb, de jobb ha idoben raszokik a helyes megoldasokra. Melle meg egy kicsit hordozhatobb lesz a kod, mert jobban hasonlit a tobbi PIC-es C-kre.
(#) szuperman hozzászólása Szept 20, 2011 /
 
Nagyon szépen köszönöm a bővelkedő választ. Ez a "könyvtár" tényleg nagyon hasznos dolgokat rejt, no meg a help is persze. Kezdek megbarátkozni vele és egyre jobban megy így a dolog.

További szép napot!
(#) pepe33 hozzászólása Szept 20, 2011 /
 
Valakinek sikerült a CCS-el PC-vel kompatibilis FAT32-es filerendszerben SD kártyát kezelni?
Már régebben is próbálkoztam a dologgal, most újra elővettem a kérdést, de valahogy nem akar eljönni a siker....
Hiába bugfix, MBR patch meg ilyesmi eddig mindig zsákutcába jutok.

Valaki esetleg tudja a tuti receptet ?
Annak megköszönném a segítséget.
(#) sysy válasza vilmosd hozzászólására (») Szept 20, 2011 /
 
Valószínűleg véletlenül nem az én levelemet olvastad el, mert az írtam:
Idézet:
„A regisztereket és a bitjeiket változókén definiálni nagyon klassz dolog, ez is a hatékonyságot növeli. Én is ajánlom mindenkinek.”


Még azt is írtam, hogyan lehet változóként használni 1tized másodperc alatt. Igen, valóban sok mindent lehet átláthatóbban és jobban csinálni. De mivel senki nem kérdezte eddig magánban, hogyan lehet ezeket az IDE szolgáltatásokat elérni, így arra gondoltam, hogy mindenki ismeri ezeket, csak nekem volt akkora nagy pukkanás, hogy megtaláltam az Users Manualban.
Bocs.
(#) vilmosd válasza sysy hozzászólására (») Szept 21, 2011 /
 
Na akkor lassuk a medvet. Legyszives aruld mar el ezt a trukkot, mert bizony sok munkatol kimelne meg. Elore is koszi.
(#) sysy válasza vilmosd hozzászólására (») Szept 21, 2011 /
 
Jó, de nagyon figyelj!

Megnyitod a CCS IDE (PCWH.exe):
Tools -> Device Editors
a listából kiválasztod a neked legkedvesebb PIC tipust,
majd klikk a Registers fülre (kicsit molyol az én gépem ezzel) és alatta a Make Include file máris megcsinálja neked a PICxxx_registers.h filét, amit be tudsz includolni a programodba.

That's it, guys.

Sok sikert.
(#) trudnai válasza sysy hozzászólására (») Szept 21, 2011 /
 
FLAME ON

Idézet:
„Több, mint 25 évig programoztam assemblyben különböző processzorokra. Most is néha megnézem, hogy milyen kódot generál a CCS C-ből -> asm-be és szinte mindig el kell ismernem, hogy a CCS fiúk értik a szakmájukat és jobban értik és átlátják a nyelv lehetőségeit mint mi bármikor is fogjuk. Én is megpróbálkoztam saját kút fejemből újítgatni, de mindig rá kellett jöjjek, hogy vagy nagyobb, vagy lassabb, vagy kezelhetetlenebb függvényt írtam, mint a CCS fiuk.”


Nem ketelkedem sem a Te, sem pedig a 'CCS fiuk' tapasztalataiban, de azert a CCS nem eppen az agyon optimalizalt kodjarol hires. Messze vannak ennel jobb forditok is, ennek ellenere egy kezzel agyon tuningolt kod mindig is jobb eredmenyt fog hozni, mint akarmilyen fordito. Ez egesz egyszeruen abbol fakad, hogy a fordito sokmindenre fel van vertezve es nem tudhatja, nem tudja kitalalni, hogy a kedves programozo mit szeretne eppen.

Az sem ketseges persze, hogy cserebe 10x vagy 20x annyi idot kell elvacakolni egy-egy algoritmussal, mire az olyan lesz. Ja, es nyilvan egy masik elony, hogy a C kodod hordozhato(bb), mig egy asm atirasa egy masik chipre, legyen az akar 16F vagy 24H, nem is beszelve arrol ha teljesen mas heyrol irkalunk at pl PC-rol vagy ARM-rol, AVR-rol stb... szoval ilyenkor nem kell minden architekturalis finomsagot megtanulnunk, hogy hol faraghatunk meg a biteken, milyen trukkoket lehet alkalmazni erre vagy arra. Ezeknek az ismeretenek a hianyaban is kielegito kodot kaphatunk eredmenyul.

Szoval jo a C, sok elonye van, de azert kisebb es gyorsabb kodot csak akkor general ha nem forditottam kello idot az optimalizalasra
(#) sysy válasza trudnai hozzászólására (») Szept 21, 2011 /
 
Jól mondod!
Ez mind igaz. Minden fordítónál van egy mégjobb. De ez a CCS nem harap, barátságosnak is mondható és elég kedvesen tolerálja a hülyeségeinket is. Ezért szeretik annyian, annak ellenére, hogy sokaknak nem elég ANSI.
Csak az eredeti felállást nem kell elfeledni, hogy a kérdező nem tudta beállítani a PIC belső oszcillátorát. Innen kanyarodott el a téma a hordozható és szénné optimalizált C kódok ködös világába.
Itt sokan elemi kérdéseket tesznek fel és mint jómagam is, hajlamosak vagyunk valami rohadt tudományos magyarázatot elővakarni szegény kérdezőnek, hogy mindenki lássa, milyen guruk vagyunk és mennyire szánalmas a kérdése. Sajnos én is elfelejtem azokat az időket, mikor látszólag butaságokat kérdeztem és a nagytudásúak odalöktek egy számomra semmit nem jelentő választ.
Szóval, itt nem űrrakétákat akarnak irányítani a fiúk és nem lélegeztetőgépet kell "halálbiztosan" vezérelgetniük, csak szórakozunk csendesen és néha belefutunk egy olyan problémába, amin már biztosan sokan túlvannak.
Az optimalizálásra visszatérve, manapság már nem is kell beletaposni a biteket a PIC-be, mert egyszerűen kell választani egy nagyobb memóriával rendelkező típust. Szerintem ezért is ilyen népszerű a PIC kontroller, mert szinte vég nélkül skálázható az adott feladatra.
(#) vilmosd válasza sysy hozzászólására (») Szept 21, 2011 /
 
Ez jo. Koszi.
(#) MPi-c válasza sysy hozzászólására (») Szept 23, 2011 /
 
Igen! Ez jól jön nekem is, kösz!

Ki is próbáltam. Valami oknál fogva, a generált fájlban néhány hiba becsúszott, olyan biteknél, ahol csak sorszámozás különbözteti meg őket (Pl. mellékletben)...

register.png
    
(#) trudnai válasza MPi-c hozzászólására (») Szept 23, 2011 /
 
Hat ez igy eleg kellemetlen es hasznalhatatlan
(#) vilmosd válasza MPi-c hozzászólására (») Szept 23, 2011 /
 
Akkor maradunk a kezzel beirogatasnal, mert egy ilyen hiba miatt nagyot lehet szivni.
(#) potyo válasza MPi-c hozzászólására (») Szept 23, 2011 /
 
Látod, én régóta mondom, hogy inkább kerülni kell a CCS-t
(#) trudnai válasza potyo hozzászólására (») Szept 23, 2011 /
 
Varj, a technikai tamogatoikat meg nem teszteltuk le: hivjuk fel oket egyszerre huszan ugyanazzal a promlemaval, es inditsuk a stoppert, hogy mennyi ido alatt hozzak ki a javitast, vagy, hogy egyaltalan mit reagalnak erre
(#) szuperman hozzászólása Szept 24, 2011 /
 
Helló mindenki!

CCS -be szeretnék csinálni egy 0 és 1 közé eső véletlen számot. Valaki el tudná magyarázni ,hogy működik a rand() fv.?

Előre is köszönöm!
(#) szuperman válasza szuperman hozzászólására (») Szept 24, 2011 /
 
Rosszul fogalmaztam. Nem 0 és 1 közé eső ,hanem [0,7] intervallumba eső egész számot.
(#) szuperman hozzászólása Szept 25, 2011 /
 
Helló mindenki!

Valaki meg tudná mondani miért nem fordul le ez a kód:

#include <12F629.h>
#use delay(clock=4000000)
#define XTAL_FREQUENCY 4000000

main() {
setup_oscillator(OSC_4MHZ);

while(true){

}

}



Előre is köszi!
(#) trudnai válasza szuperman hozzászólására (») Szept 25, 2011 /
 
Mi a hibauzenet?

Amugy maskor hasznalhatnad a "Kod" gombot a kod beillesztesehez...
(#) szuperman válasza trudnai hozzászólására (») Szept 25, 2011 /
 
Undefined identifier -- setup_oscillator
(#) p_istvan válasza szuperman hozzászólására (») Szept 25, 2011 /
 
void main(){
(#) MPi-c válasza szuperman hozzászólására (») Szept 25, 2011 /
 
A PIC12F629-nél nem tudod használni a setup_oscillator függvényt. Nézd meg a súgóban, hogy mire való a függvény és nézd meg a 12F629 header fájlt is!
Ha azt akarod, hogy a belső oszcillátorról menjen, azt a konfigbittel kell bekapcsolni.

A main-nél a void hiánya nem probléma, főleg, hogy a fordító meg is jelölte a hiba okát!
Következő: »»   63 / 118
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