Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Idézet: „Melyik hardver elemet kellene használni hozzá?” Szerintem a PWM-et (Capture/Compare/PWM modul), de kérdezz nálam okosabbat! Mindenestre arra ügyelj, hogy a PWM periódusát megszabó számláló csak 8 bites és max 16-os előosztó van, ez behatárolja a mikrovezérlő oszcillátorát, ha az 50 Hz-hez ragaszkodsz. (lásd 11-2 és 11-3 táblázat)
Vagy marad a software-s megoldás, servo vezérléshez még ezt a linket nézzed meg: Bővebben: Link , a két mintaprogram nem CCS -ben vannak írva, de szerintem az elv érthető.
Hopsz, bocsánat, nem figyeltem rendesen, icserny már linkelt egyet.
Sziasztok!
Nincs valakinek CCS compilere? Szeretnék PIC programozással foglalkozni a nyáron (tanulási célzatból), de nem akaródzik 30 naponta újrahúzni a gépemet. Ha valaki tudna küldeni azt megköszönném.. Üdv Babo
Itt a témában próbáltál már rákeresni?
Tanulási célzatból meg felejtsd el a CCS-t!
találtam egy update-t, de nem tudom, hogy az cak update, vagy egy teljes verzió.
Mi a baj a CCS-el? Ha egy mód van rá akkor C-ben szeretnél PIC-t programozni. Tudok ASM-ül is, de igen ritkán dolgozok benne, és emiatt igen nyögvenyelős nekem a dolog. A C-t napi szinten használom, emiatt adott, hogy inkább azon az úton indulnék. Mit javasolsz?
Ha mindenáron C-t akarsz, akkor a gyári C fordítót használd, ami a Hi-Tech volt valamikor, és az MPLAB telepítőjében is benne van. Kb. fél éve a Hi-Tech a Microchip tulajdonába került.
De ha meg akarod tanulni a mikrokontrollereket rendesen használni (mert ez nem PC, hanem ez egy hardver, aminek véletlenül meg lehet mondani, hogy mit csináljon), akkor azt asm-ben lehet megtanulni...
Anno annak is megvolt a full verziója, de sajna a CD amin rajta volt "megmakkant"
![]() Ha az jobb, és abból is van itt fent egy letölthető, akkor az is megfelelő nekem. Mivel a limitált verziók általában a progi méretét is limitálják, ezért nem küszködnék free verziókkal (bár lehet, hogy sosem nőném ki a limitet). Ha viszont megtetszik, akkor minden további nélkül fizetek is érte. Résztvettem anno a 2006-os PIC tanfolyáson, meg progiztam én Z80-at is, de mondjuk nekem barátságosabb egy (for i=...) utasítás, mint egy halom JCMP Ha jól emlékszem a HI-TECH C-jében át lehetett váltani ASM-re, ezért ha olyan dologra lesz szükségem ami ASM igényes akkor majd ráérek azt megírni ASM-ben Idézet: „Ha jól emlékszem a HI-TECH C-jében át lehetett váltani ASM-re” C18-ban ( és 100%, hogy a többi Microchipes fordítóban is ) és CCS-ben is lehet assembly "betétet" alkalmazni. Idézet: „Mivel a limitált verziók általában a progi méretét is limitálják...” Nem limitálják. Az előbb már adtam egy linket, nyilván nem véletlenül! Bővebben: Link Idézet: 1200 $-t? Minek?„Ha viszont megtetszik, akkor minden további nélkül fizetek is érte.” Idézet: „Résztvettem anno a 2006-os PIC tanfolyáson, meg progiztam én Z80-at is, de mondjuk nekem barátságosabb egy (for i=...)” Nem (for i=...) hanem for(i=...).
Regisztrálnod kell az ingyenes letöltéshez.
Sziasztok !
Most olvasom a CCS C fordítóra vonatkozó kérdéskört. Szerintem nagyon jól használható, sokmindenhez alkalmaztam már. Ha valakit érdekel, e-mail címet kérek,és a V4.088 verzióból tudok segíteni akár konkrét feladatmegoldás szintjén is.
idézet az oldalról:
Idézet: „The Evaluation Version is free! It has all the features of the full compiler and libraries. After 60 days, the optimizations related to procedural abstraction and to the extended instruction set of the newer PIC18XXXX devices will be disabled. Code compiled after the expiration date will function but may occupy more memory space.” Valóban, köszönöm a kiigazítást. Nem a program méretét csökkentik, hanem a lefordított program mérete lesz nagyobb.. ![]()
Lehegy úgy programozni, hogy a procedural abstraction optimalizálás nem tud csökkenteni a kódméreten. Sőt az enélkül fordított kód gyorsabb, mint az ezzel fordított, cserébe esetleg valamivel nagyobb a mérete.
Amúgy a for(i=...) az nagyon keveset fog jelenteni a PIC tanulása folyamán. Itt regiszterekkel kell dolgozni, aminek a szempontjából tökmindegy, hogy C vagy asm. Csak a C fordítókban van néhány beépített rutin, aminek úgysem olvasod el a dokumentációját, mielőtt használnád, ezért majd nem fogod érteni, hogy miért nem az történik, amit szeretnél. Na ezért kell megtanulni a nulláról a kontrollereket használni, utána már adott esetben lehet C-t használni, de itt elektronikai szinten kell nézni a dolgokat, nem programozóként. Azt a 35 asm utasítást a 16F-nél, vagy kb. 75-öt a 18F-nél igazán nem nehéz megtanulni.
nem a 35 vagy 75 utasítás megtanulása a nehéz, hanem azok megfelelő alkalmazása. Erről szól az egész pic miértek és hogyanok. Hány ezer hozzászólás? Azért a C valljuk be barátságosabb. Akinek nem kell annyira kihegyezni mindent, és ezért hajlandó akár a kódmérettel is megfizetni, annak jó a C.
Mondjuk a hi-tech c-nél nem vágom mit takar a letölthető limitált verzió.
Akinek nem megy az a 35 vagy 75 utasítás alkalmazása, annak nem fog menni a C sem, mert hiányzik belőle a megfelelő készség...
Nem pont erről szól, mert ott aztán van minden, de épp ezért kellene minden kezdőnek végigolvasnia, mert már mindenről volt szó benne...
Tisztelt Potyo.
A lehető legtávolabb helyezkedem az ilyen típusú állásponttól : "Akinek nem megy az a 35 vagy 75 utasítás alkalmazása, annak nem fog menni a C sem, mert hiányzik belőle a megfelelő készség... " Merőben eltérőek a fentebb említett két nyelv céljai, tervezési alapjai! Azért, mert Mi valamikor régen bitbuzerálással kezdtük Z80-on, majd az INTEL 4040, attól még a mai fiataloknak nem kell ugyanazt csinálni ! Mi több, nem is szabad. Ez talán a fejlődés záloga. Feltételezem, egy mai lelkes suhanc kicsiny támogatással döbbenetes dolgokra képes egy PIC-kel C-ben anélkül, hogy részletesen tudná fejből akár a ZILOG, akár a RISK processzorok utasításkészletét. Biztos van olyan a Te életedben is, amit jól alkalmazol, de nem tudod pontosan hogy is működik. Pl. az akkumulátorok belső vegyi folyamata, vagy más témában a beton kötési folyamata. Nekem ez a véleményem, és szívesen segítek a CCS C nyelv használatában bárkinek, mégha néha többet kell magyarázni a tényleges működéről is, mert ebből talán tanul valamit és nem veszem el a kedvét. Üdv.
Azt én nem nevezném haladásnak, ha valaki NEM TUDJA, hogy mit csinál a programja, vagy hogy pontosan mi is az, amire programot ír. :no:
Idézet: „Azért, mert Mi valamikor régen bitbuzerálással kezdtük Z80-on, majd az INTEL 4040, attól még a mai fiataloknak nem kell ugyanazt csinálni!” Akár C nyelven, akár assembly-ben a PIC programozása ma is "bitbuzerálás". Erről ennyit. Természetesen van helye a C programozásnak is, de ha valaki direkt nem tanulja meg az assemblyt, az sem ellenőrizni, sem optimalizálni, sem megérteni nem fogja tudni a saját C programjait.
Bár potyo kijelentése lehet durvának tűnik így első olvasatra, de többszöri átgondolás után szerintem jogos. Csak el kell olvasni a PIC - Miértek, hogyanok a topicot, de hogy a saját esetemet írjam le inkább, és ne mást szapuljak: Belecsöppentem abba a hibába, hogy én a mikroe szoftverét használtam anno a pic megismeréséhez, még a led villogtatásos témával nem is volt gond, azt nem nehéz megérteni, de -a kedvencemnél maradva- egy LCD kezelésnél jöttek bajok, mikor gyakorlatilag egy LCD_CMD() és LCD_CONFIG() fügvénnyel kész egy két soros LCD kezelés, kiiratással együtt, én meg mint aki jól végezte a dolgát, hátradőltem és örülve konstatáltam, hogy ez nagyon egyszerű, rá 2 napjára megnéztem ugyanezt ASM nyelven és akkor döbbentem rá, hogy gyakorlatilag nem értek semmit; hogy-hogy assemblyben 50 sor (most csak közelítőleg mondtam valamit), az, ami C-ben csak kettő volt. És a tapasztalat azt mutatja, hogy a kezdők is (mint én) inkább használják ezeket a könyvtári függvényeket; más a helyzet mikor valaki saját maga akar írni függvényeket, az szerintem még egy helyes út, az úgyis azzal fog járni, hogy kénytelen lesz megismerni a regisztereket, az assemblyt.
12f508-al szeretnék dolgozni a kérdésem az volna, hogyan tudom az OPTION regiszter bitjeit beállítani?
segítségeteket előre is köszönöm
W-be betöltöd, amit akarsz, hogy bekerüljön az OPTION-ba, majd lefuttatsz egy OPTION parancsot (egyébként az adatlapból néztem ki én is, a 4.5 fejezet - ami az OPTION regiszterről szól - második bekezdésében szerepel)
Szia potyo
![]() Köszönöm gyors válaszodat, nem írtam ccs-ben lenne a dolog számomra kérdéses.Most ismerkedem a c nyelvel és nekem hiányzik az asm bit szintű szabadsága... Tehát a kérdés hogy ccs ben hogyan tudom konfigurálni az option regisztert.
Hát ha máshogy nem, akkor asm betéttel biztosan megoldható. Valószínűleg van valami makró vagy függvény, vagy ilyesmi gyárilag, de nemtudom.
Ha C nyelvvel akarsz ismerkedni, akkor használd a Hi-Tech féle C fordítót (MPLAB telepítőben benne van a demója), a CCS-t inkább hanyagold...
A programot már megírtam, csak ott van a baj, hogy a GP2-es lábat kimenetnek akarom használni.Ezért aztán mikor módosítom az option regisztert.
setup_counters (RTCC_INTERNAL wdt_2304ms); parancsal akkor az egész regiszter tartalma átiródik option reg "00001111"-re holott én csak azt szeretném, ha hogy az option_reg"11011111" legyen nem értem hogy a 7-es és 6-os bitet miért piszkálja.Biztos én bénázok el valamit de remélem sikerül kitalálni mi lehet az oka.
int find_parity(int data)
{ int count; #asm MOV #0x08, W0 MOV W0, count CLR W0 loop: XOR.B data,W0 RRC data,W0 DEC count,F BRA NZ, loop MOV #0x01,W0 ADD count,F MOV count, W0 MOV W0, _RETURN_ #endasm } Nem kell annyira hanyagolni azt a CCS-t, mert jól megy. Syntax : #asm or #asm ASIS code // itt az asm kód !! #endasm
Hát igen, ezért utálom a CCS beépített függvényeit. Túl okos akar lenni, és az embernek bosszúságot okoz. Nem lehet még valami paramétert adni a setup_counters függvénynek?
Ha látok egy konkrét kódot, talán tudok segíteni.
Definiálhatod a set_options() függvényt
Használata például így:
Bővebben: Link #include <12F508.h> #zero_ram #fuses INTRC,NOWDT,PROTECT,NOMCLR #use delay(clock=4000000) #define XTAL_FREQUENCY 4000000 //kristály frekvenciája Hertzben int flag; //================================================================== void init(void){ //================================================================== setup_counters (RTCC_INTERNAL wdt_2304ms); //itt szerettem volna átírni az option regiszter 5-ös bitjét 0-ra de az a baj, hogy viszi a 6-os és 7-es bitet is set_tris_b(0b00000000); //portok definiállása 1-bemenet, 0-kimenet output_b(0b00000000); //PORTOK törlése (ellenörzött indulás) flag=0; //flag törlése } //================================================================ void main(){ //================================================================ init(); //debug for (; ![]() { output_bit (PIN_B2,1); //ezért kellene az option regisztert modosítani, hogy tudjam címezni gp2-es lábat } } |
Bejelentkezés
Hirdetés |