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   22 / 118
(#) icserny válasza Buddha hozzászólására (») Jún 18, 2009 /
 
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)


(#) kisszee hozzászólása Jún 18, 2009 /
 
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.
(#) babo hozzászólása Júl 10, 2009 /
 
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
(#) potyo válasza babo hozzászólására (») Júl 10, 2009 /
 
Itt a témában próbáltál már rákeresni?

Tanulási célzatból meg felejtsd el a CCS-t!
(#) babo válasza potyo hozzászólására (») Júl 10, 2009 /
 
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?
(#) icserny válasza babo hozzászólására (») Júl 10, 2009 /
 
A támogatott fordítók:

C32: PIC32-höz
C30: PIC24-hez, dsPIC30-hoz és dsPIC33-hoz
C18: PIC18-hoz
HiTech: elsősorban PIC12/PIC16-hoz, bár használható PIC18-hoz is

Mindegyiknek van ingyenes verziója.

Bővebben: Link
(#) potyo válasza babo hozzászólására (») Júl 10, 2009 /
 
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...
(#) babo válasza potyo hozzászólására (») Júl 10, 2009 /
 
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
(#) MPi-c válasza babo hozzászólására (») Júl 10, 2009 /
 
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.
(#) icserny válasza babo hozzászólására (») Júl 10, 2009 /
 
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:
„Ha viszont megtetszik, akkor minden további nélkül fizetek is érte.”
1200 $-t? Minek?

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=...).
(#) bbatka válasza babo hozzászólására (») Júl 10, 2009 /
 
Regisztrálnod kell az ingyenes letöltéshez.
(#) Hacsi válasza bbatka hozzászólására (») Júl 10, 2009 /
 
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.
(#) babo válasza icserny hozzászólására (») Júl 10, 2009 /
 
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..
(#) potyo válasza babo hozzászólására (») Júl 10, 2009 /
 
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.
(#) gulasoft válasza potyo hozzászólására (») Júl 12, 2009 /
 
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.
(#) gulasoft hozzászólása Júl 12, 2009 /
 
Mondjuk a hi-tech c-nél nem vágom mit takar a letölthető limitált verzió.
(#) potyo válasza gulasoft hozzászólására (») Júl 12, 2009 /
 
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...
(#) Hacsi válasza potyo hozzászólására (») Júl 13, 2009 /
 
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.
(#) icserny válasza Hacsi hozzászólására (») Júl 13, 2009 /
 
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.
(#) kisszee válasza Hacsi hozzászólására (») Júl 13, 2009 /
 
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.
(#) messer hozzászólása Júl 13, 2009 /
 
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
(#) potyo válasza messer hozzászólására (») Júl 13, 2009 /
 
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)
(#) messer válasza potyo hozzászólására (») Júl 13, 2009 /
 
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.
(#) potyo válasza messer hozzászólására (») Júl 13, 2009 /
 
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...
(#) messer válasza potyo hozzászólására (») Júl 13, 2009 /
 
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.
(#) Hacsi válasza potyo hozzászólására (») Júl 13, 2009 /
 
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

(#) potyo válasza messer hozzászólására (») Júl 13, 2009 /
 
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?
(#) Hacsi válasza messer hozzászólására (») Júl 13, 2009 /
 
Ha látok egy konkrét kódot, talán tudok segíteni.
(#) icserny válasza messer hozzászólására (») Júl 13, 2009 / 1
 
Definiálhatod a set_options() függvényt
  1. #define set_options(value) {#ASM \
  2. MOVLW value \
  3. OPTION \
  4. #ENDASM}


Használata például így:
  1. set_options(0x80);


Bővebben: Link
(#) messer válasza Hacsi hozzászólására (») Júl 13, 2009 /
 

#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
}
}


Következő: »»   22 / 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