Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Jól csináltad, csak ott volt a bibi, hogy a CCS C szintaxisa egészen más. Pl.: amit írtál, hogy
TRISB = 2; ez a CCS-ben: set_tris_b (0x02); vagy set_tris_b (0b00000010); ha erre gondoltál... A CCS C és a pic18 C nagyon sok helyen különbözik szintaxisban.
Sziasztok!
Letöltöttem a CCS honlapjáról azt a plugint, amivel tudja használni a CCS az ICD2-öt. Az alábbbi hibaüzeneteket kapom, mikor benyomom az enable debuggert, proci választás után: ICD unit does not have ccs firmware loaded run the full diagnostic ok Az elsőt megnyomva és ablakok között lavírozva még ilyent is kapok: icdwarn0020: invalid target device id (expected=0x4F, read=0x0) current ICD does not support this operation Ha az OK-ot nyomom, akkor az egész debug menü inaktív lesz. Szerintetek mi a probléma? Az ICD2 a Potyo féle 3. verzió a honlapról.
Szerintem a proci választás után hiányzik neki az alábbi sor:
#device ICD=TRUE tudatosítani kell vele, ha az ICD-t használod, ugyanis az debugg üzemmódben betölt a procidba egy loader rutint. Ja azt bele is írtam, csak béna voltam. Ugyanis egy kicsivel régebbi verzióval próbákoztam, amire felment a plugin és be is lehetett állítani a debuggert, csak azzal ugyen nem mükszik. Szóval a legújabb verzióval tökéletes. Egy kérdésem van még... USB-s és CAN-es példaprogi nincs CCS-re? Ha van, akkor hol?
A példaprogramokat és a hozzá szükséges drivereket, headereket a compilerrel adják. Itt megtalálod a listát, van benne bőségesen USB-s és CAN példaprogi is.
Most én kérnék segítséget, mégpedig USB bootloader témájában. El tudná valaki konkrétan magyarázni, hogy hogyan is működik ez a program, ill. hogyan lehet ezt hozzáfordítani a PIC főprogramhoz, tehát hogyan lehet a fordítóban "összecsatolni" úgy a két programot, hogy a PIC-ben minden a megfelelő helyére kerüljön? Valamint, jól gondolom, hogy ha jól működik az USB bootloader, akkor nem kell .inf file az eszköz xp alatti installációjához?
nem tom h volt e már szó róla de azért megköszönném a segitségeteket
szoval ccs ben dolgozom,és meg kellene oldani hogy van 3 7szegmens kijelző amihez tartozik 3 szám a,b,c néven ezek már el vannak rendezve hogy azt irja ki ami az a,b,c ben van a probléma az hogy van egy 4.szám ami 0 és 999 között mozog azt szeretném csinálni hogy ennek az értéknek a karaktereit beleteszem az a,b,c változókba,tehát ha az érték pl 825 akkor a=8 b=2 c=5 és ezeket iratom ki remélem érhtetö voltam,először igy akartam megoldani: a=value/100; b=(value/10)-(a*10); c=value-(a*100)-(b*10); de a kerekítést nem igazán jól kezeli igy elvetve az ötlet,várom a segitséget ha egyáltalán kapok olyat előre is kösz
mi lenne, ha így csinálnád:
int a; int b; int c; long int value=825; //például... a=value/100; //a=8 b=(value-(a*100))/10; //b=2 c=value-((a*100)+(b*10)); //c=5 nem próbáltam ki, de elméletileg így jónak kellene lennie...
mindegyik longra volt beállitva
eredetileg a value egy 10 bites szám amit a AD átalakitó olvas az egyik analóg bemenetröl,ez egy egyszerü feszkómérő lenne nem toom hoggy hogyan szokták ezt megoldani c nyelven tehát ha jol toom a 10 bites szám az 1024ig terjedhet,5 voltos referenciafeszütségnél pl igy az 512es érték 2.50 v-ot jelentene igy a kiirandó: a=2 b=5 c=0 ezt kellene megoldani ha már benne vagyunk a témában
Előszöris olyan szó a magyar nyelvben nincs, hogy toom. A másik, hogy léteznek írásjelek, és a mondatot nagybetűvel kezdjük.
Jobb lenne, ha unsigned int16 tipussal próbálkoznál, az egyértelmű, hogy mit takar. Egyébként is felesleges a long, csak a felhasznált processzoridőt növeli jelen esetben. Hol jelenik meg az eredmény? Mert ha valami függvénnyel íratod ki, akkor simán előfordulhat, hogy a függvény nem olyan tipust vár, mint amit átadsz neki, és ez is látszólag hibás működéshez vezet.
Köszi a kioktatást, megprobálok az elvárásaidnak megfelelően irni!
Szoval a 3 darab 7 szegmens 3 db D-latchon keresztül kap vezérlést, igy nem kell foglalkozni a multiplexeléssel. Igy nem használok függvényt,megszakítást stb-t. Egyszerüen a müködési elv: - a 10 bites érték kiolvasása az analóg bemenetröl - value változóba beleteszem ezt az értéket - szétbontom a value-t - a value elsö karaktere A-ba,a 2. B-be a 3. C-be kerül. - az A,B,C értéket kiküldöm a D-latchokba majd a kijelzöre. - 100ms várakozás és kezdődik előröl minden.
Mutasd meg az egész kódot, mert amit eddig írtál az csak a dolog elmélete. Az egésznek a megvalósítását látni kell ahhoz, hogy meg tudjuk mondani, mi a hiba. Ha nagy a kód, akkor csatold.
Idézet: „Köszi a kioktatást, megprobálok az elvárásaidnak megfelelően irni!” Szivesen máskor is.
Sziasztok!
PIC-re szeretnék c példaprogit keresni ill találni. Gugli kidobott sok jó dolgot, de olyan progit nem találtam ami csak egy nyomorult ledet villogtat. Rémlik hogy egyszer volt nekem egy ilyen progim, de nem találom. PIC18f2520-ra szeretném CCS fordítóval komptaibilis legyen. Ide is beütöttem a keresőbe, de nem dobott ki értelmes találatot. Lehet, hogy csak én nem tudtam jól rákeresni, de plíz help Köszi! Sőt az lenne ám a jó, hogyha egy gombot is kezelne engem csak az érdekel, hogy hogy kell c-ben picet programozni.
A progi 18F2550-re készült de könnyen átalakítható más uC-re is.
TIMER0 - interruptot használja fel a villogtatásra. A megszakítási gyakoriságot ebben a sorban (a szám értékével) állítható: setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); Ha Wizard-al generálod a beállításokat akkor ott betudod állítani a TIMER0-beállításainál. Azt a portot add meg ahova a LE van kötve pl: PIN_C6 #int_TIMER0 void TIMER0_isr(void) { output_toggle(PIN_C6); } void main() { setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); do{ }while(!0); }
Köszi a segítséget, bár a progi működése nem egészen világos, hiába egyszerű...
ha jól sejtem az a output_toggle(pin_c6) változtatja mindig a c6 értékét, hogy 1 vagy 0 azt nem értem, hogy miért fog villogni a led mind1, mert ha le akarom fordítani a progit i/o error 103 hibaüzenetet ír ki mi a probléma?
Még egyszerűbben próbáltam megírni.
Le is fordul PIC18f2520-ra. Csak be kell állítani a megfelelő Portot,ahova a LED-et kötötted. Csatoltam a projekt zip- et.
Köszi a segítséget! Még ma ki akarom próbálni
Újra szeretném feltenni a kérdésemet, hátha csak azért nem kaptam választ, mert elkerülte a C mágus kollégák figyelmét... Tehát:
Most én kérnék segítséget, mégpedig USB bootloader témájában. El tudná valaki konkrétan magyarázni, hogy hogyan is működik ez a program, ill. hogyan lehet ezt hozzáfordítani a PIC főprogramhoz, tehát hogyan lehet a fordítóban "összecsatolni" úgy a két programot, hogy a PIC-ben minden a megfelelő helyére kerüljön? Valamint, jól gondolom, hogy ha jól működik az USB bootloader, akkor nem kell .inf file az eszköz xp alatti installációjához? Igazából az is nagy segítség lenne, ha tudnátok mondani - ha lehet magyar, mert úgy jobban értek - szakirodalmat, leírást, ahol ezt a témát mélyebben boncolgatják, magyarázzák. Előre is köszönöm mindenkinek a segítséget.
1. fogalmam sincs. Ha 18F-es picet használsz, akkor jobban járnál a C18 fordítóval, ahhoz talán több példpaprogramot lehet találni
2. A bootloadernek semmi köze ahhoz, hogy kell-e inf fájl vagy nem. Ha olyan a cuccod, hogy van a windowsban beépített inf fájl hozzá (HID, MSD, stb.), akkor nem kell neked inf fájlt készítened, de akkor is szükség van inf fájlra. 3. Irodalom USB és kontroller témában - ami nem amatőrök számára ír le általánosságokat - gyakorlatilag nem létezik (vagy csak én nem találtam még). USB-hez az usb.org-on van infó, PIC-hez meg a microchip honlapján és fórumán kell olvasgatni, illetve példaprogramokat nézegetni.
Ha tudnátok nekem esetleg egy egyszerü feszültség mérő alappéldaprogramot beilleszteni,esetleg kommentezve annak nagyon örülnék és megköszönném.
Abból már ki tudom nagyjából szedni ami nekem kellene! Jossz, a változatod tökéletesen müködik!használhatod nyugodtan,akkor van baj ha a value érték nem 0 és 999között van Jaj ésmég egy kérdés: Ha nem adok meg referencia bemenetet és feszültséget akkor az 5 voltos tápfeszt veszi ref-fesz-nek?
Örülök, hogy működik, természetesen a value túlcsordulását ellenőrizni kell a feldolgozás előtt.
Ha nincs ref. fesz. akkor "azzal főz, amije van"... Milyen fesz mérő akarsz? ADC alapút, vagy komparátor elvűt, vagy milyet? Egyébként ITT is érdemes körülnézni.
Sikerült megoldanom az ügyet tökéletesen müködik,márcsak az osztással kell bajlódnom hogy pontos legyen a müszerem
köszönöm mindenkinek a segitséget egy sima dc müszert készítettem csakis csak azért hogy megtanuljam hogy hogyan is kell használni a AD konvertert a c nyelvben,mellékeltem a progit,elég kezdő vagyok még benne ugyhogy a felesleges dolgokat és a hibákat ne nézzétek
Most ne haragudj, de az AD konverternél (és minden más perifériánál) nincs olyan, hogy valamelyik nyelvben másképp kellene használni. Mindig úgy kell, ahogy az adatlapban le van írva. Pl. ott írod kommentben, hogy nem tudod, mire való az ADC_CLOCK_INTERNAL. Nos addig nemis fogod megtudni, amíg az adatlapon át nem olvasod az AD konverterről szóló részt, és meg nem próbálod ilyen setup_adc() és társai függvények nélkül életre kelteni.
Sziasztok!
Az m2attila által küldött pic progit kipróbáltam és működik, igaz szerintem kissé furcsán. A LED elkezd viszonylag egyenletesen villogni majd változik a ritmusa majd egyszer csak egy rövidet villan és kezdi elölről. A PIC (18f2520) rendes téglalap alakú csak a keskenyebb kivitel, 28 lábú. Nem akar csutkára belemenni a foglalatba és lehet, hogy kh-s. De sztem ez valószínűtlen, mert csak 1 mm hiányozna, hogy teljesen belemenjen. Kipróbáltam más szoftvereket is bele, gombot akartam vezérelni, de nem működött a progi és azóta még az a progi sem megy ami régebben ment. Egy csomó időt szántam arra, hogy keresgéltem a fórumon pic c ccs példaprogit, de elég keveset találtam. Nem is akar működni semmi. AZ a baj, hogy nem tudom hol van a hiba, rosszak lennének a progik amiket égettem bele? Nem hiszem, mert menniük kellene. Vagy kh vagy füst vagy vmi más, de foggalmam sincs mi. Ha vki tudna egy olyan progit küldeni ami egy gomb lenyomására (aktív magas) villogtat ledet, az nagyon jó lenne. Persze CCS-ben. Köszi!
Megőrülök.
Valószínűleg én szúrtam el a dolgot. Inkább biztos. A MCLR lábra direktbe tettem véletlen a tápot. Remélem most már jó lesz, de a progit továbbra is megköszönném!
Sziasztok!
Milyen függvénnyel, vagy módszerrel tudnám megmérni ugyanannak a gombnak (ami pl. RB5-ös portra van kötve és negatív élre dolgozik) a lenyomásai között eltelt időt? Azt akarom kivitelezni, hogy ha mondjuk a felhasználó 3 másodpercen keresztül folyamatosan nyomja a gombot, akkor az addig 500ms-re beállított ciklus várakozási idő csökkenjen 100ms-re, tehát gyorsabban pörögjenek a számok és így hamarabb elérhesse a kívánt beállítási értéket.
Ok, köszi, megoldottam számlálóval, szépen működik a dolog...
|
Bejelentkezés
Hirdetés |