Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Most jó! Köszi! De mért nem dob hiba üzenetet a fordító?
Nem is tudod, milyen sokszor fog még felmerülni benned ez a kérdés!
ccs -ben hogy lehet az elő és az utó osztást beállítani?
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!
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
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:
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
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:
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!
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.
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.
Na akkor lassuk a medvet. Legyszives aruld mar el ezt a trukkot, mert bizony sok munkatol kimelne meg. Elore is koszi.
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.
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
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.
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)...
Hat ez igy eleg kellemetlen es hasznalhatatlan
Akkor maradunk a kezzel beirogatasnal, mert egy ilyen hiba miatt nagyot lehet szivni.
Látod, én régóta mondom, hogy inkább kerülni kell a CCS-t
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
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!
Rosszul fogalmaztam. Nem 0 és 1 közé eső ,hanem [0,7] intervallumba eső egész számot.
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!
Mi a hibauzenet?
Amugy maskor hasznalhatnad a "Kod" gombot a kod beillesztesehez...
Undefined identifier -- setup_oscillator
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! |
Bejelentkezés
Hirdetés |