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   13 / 118
(#) kurucz_peter hozzászólása Aug 20, 2008 /
 
Szavasztok!

Az lenne a kerdesem, hogy valakinek vannak-e tapasztalatai a CCS-ben levo SD kartya ill. FAT driverrel kapcsolatban (mmcsd.c, fat.c).
Elso nekifutasra nekem nem müxik...

Koszi elore is!

Üdv:
P
(#) kurucz_peter hozzászólása Aug 21, 2008 /
 
Haho!

Lenne meg egy kerdesem. Van arra mod, hogy CCS-bol tudjak debuggolni. Egy PicKit2 debug express cuccom van, de azt nem tudom, hogy ezt ossze lehet-e valahogy baratkotatani a CCS compiler-rel.
Programozasra kivaloan hasznalhati a Pickit2 de jo lenne valahogy debugolasra is befogni.

Üdv:
P
(#) potyo válasza kurucz_peter hozzászólására (») Aug 21, 2008 /
 
MPLAB alól elvileg mennie kell a dolognak. Csak az a kérdés, hogy be tudod-e hegeszeni a CCS fordítót MPLAB alá. Mintha láttam volna ilyenre utaló dolgot az MPLAB-ban...
(#) Jossz válasza kurucz_peter hozzászólására (») Aug 21, 2008 /
 
Én MPLAB 8.0 alatt dolgozom PCWH CCS compilerrel, teljesen simán és zökkenőmentesen megy a dolog. Csupán a CCS oldaláról letölthető plugin kell hozzá, amely a MPLAB-ba berakja a CCS fordítót. Fontos még, hogy a projekt létrehozásakor használni kell a project wizard-ot. Én is PICKIT 2 -vel dolgozom, de még nem nagyon debuggoltam vele. Arra emlékszem a ChipCad tanfolyamról, hogy a Pickit2-nek korlátozottak a debugg lehetőségei, tehát max. azt tudod megtenni vele, hogy töréspontokat helyezel el a programban és azokon a pontokon tudod vizsgálni a controller állapotait, regisztereit, stb. Ezzel szemben - ha jól tudom - ICD2-vel akár lépésenként belülről lehet debuggolni, hiszen az ICD2 betölti az mc.-be az ehhez szükséges rutinokat. De, azt hiszem ebben Potyo kolléga sokkal illetékesebb...
(#) potyo válasza Jossz hozzászólására (») Aug 21, 2008 /
 
Alapvetően mindkettő debug lehetőségei a chipbe épített lehetőségeken múlik. A Pickit 2 az utóbbi időben sokat fejlődött, manapság már szerintem egyenrangú az icd2-vel (bár nekem még nincs pickit2-m, így nem tudok róla érdemben nyilattkozni)
(#) kurucz_peter válasza Jossz hozzászólására (») Aug 21, 2008 /
 
nekem egy 7.60-as MPLAB-om van. Most elinditottam, de a PICKIT2 a debug menuben inaktiv. ez nalad is igy van? Nalam rossz valami, vagy esetleg regi ez az MPLAB verzio?
A masik, hogyan lehet beallitani, hogy a CCS lib-eket + devicer header filokat lassa forditaskor? A "Set language Tool Location/CCS/Default Search..." menuben beallitottam, de semmi eredmeny.
Sorry a 1.0-as kerdesekert de az MPLAB-ot nem nagyon hasznalom.

P
(#) potyo válasza kurucz_peter hozzászólására (») Aug 21, 2008 /
 
Első körben rakd fel a legújabb MPLAB-ot.
(#) kurucz_peter válasza potyo hozzászólására (») Aug 21, 2008 /
 
Köszi!

MPLAB 8 installalva, PicKit2 debuggolas aktivalodott. Eddig jol nez ki a dolog...
Esetleg az include-olassal kapcsolatos kerdesemre nem tudjatok a valaszt.

"A masik, hogyan lehet beallitani, hogy a CCS lib-eket + devicer header filokat lassa forditaskor? A "Set language Tool Location/CCS/Default Search..." menuben beallitottam, de semmi eredmeny."

Üdv:
P
(#) Jossz válasza kurucz_peter hozzászólására (») Aug 21, 2008 /
 
Ezért írtam az előbb, hogy használni kell a project wizardot. Addig, amíg nem azzal hoztam létre az új projektet, akármit állítottam, nem látta az include fájlokat. Sok kínlódás után, megpróbáltam a project wizardot és elsőre minden rendben ment és azóta is rendben megy. Ez az MPLAB egyik "hasfájása", úgy tűnik...
(#) kurucz_peter válasza Jossz hozzászólására (») Aug 22, 2008 /
 
Köszi a segitseget.
Kicsit szenvedtem vele, de megvan a megoldas. Mindegy, h hogyan hozod letre a projektet lenyeg az, h a Project/Build options/Project menuben az search include path-ra kell felrakni a CCS drivers es devices konyvtarait.
Ezutan minden megy tokeletesen.

Üdv:
P
(#) kurucz_peter hozzászólása Szept 2, 2008 /
 
Hali!

Újra a CCS fordító MMC/SD kártya és FAT támogatása ügyében írok. Valahogy nem igazán akar menni a CCS example könyvtárban lévő demo program. Viszont úgy láttam, hogy a CCS-nek van hivatalos ethernet develeopment board-ja amin vam MMC kártya slot és írták is, h támogatják is ezt. Viszont nem találtam sehol sem kapcsolási rajzot a board-ról. Ilyet nem lehetne valahonnan "szerezni"?

Üdv:
P
(#) Ven hozzászólása Szept 10, 2008 /
 
Sziasztok!
Megvan nekem a CCS 4.068 és van hozzá egy ICD2. Feltelepítettem hozzá az MPLAB 8.10-t, az ideutilsupd-et és a ICD2 interface-t, hogy tudjak debugolni a CCS-ben. Na ez a debugolás szépen megy 18f és 16f családoknál. Viszont nem megy a 30f-nél. Feljön egy ablak és olyasmit ír ki, hogy:
Initialization of the device database for the requested device failed
Run the full diagnostic :gomb
ok :gomb

No communication: pirossal a debug ablakban. És inaktív marad minden debughoz kapcsolódó ikon.

Kérdésem, hogy mit kell csinálni? Valaki debugolt már CCS-ben 30f-es családból?

A fuse-ok:
#device ICD=TRUE
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES PR //Promiary Oscillator
#FUSES NOCKSFSM //Clock Switching is disabled, fail Safe clock monitor is disabled
#FUSES WPSB16 //Watch Dog Timer PreScalar B 1:16
#FUSES WPSA512 //Watch Dog Timer PreScalar A 1:512
#FUSES PUT64 //Power On Reset Timer value 64ms
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV27 //Brownout reset at 2.7V
#FUSES LPOL_HIGH //Low-Side Transistors Polarity is Active-High (PWM 0,2,4 and 6)
//PWM module low side output pins have active high output polar
#FUSES HPOL_HIGH //High-Side Transistors Polarity is Active-High (PWM 1,3,5 and 7)
//PWM module high side output pins have active high output polarity
#FUSES NOPWMPIN //PWM outputs drive active state upon Reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOCOE //Device will reset into operational mode
#FUSES ICS2 //I CD communication channel 2
#FUSES RESERVED //Used to set the reserved FUSE bits
(#) czinka hozzászólása Szept 10, 2008 /
 
(#) icserny válasza Ven hozzászólására (») Szept 11, 2008 /
 
Idézet:
„#FUSES NODEBUG //No Debug mode for ICD”


Szerintem ezzel tiltottad le a debug-olást...
(#) Ven válasza icserny hozzászólására (») Szept 11, 2008 /
 
Úgy látszik tényleg a FUSE-okkal van probléma. MPLAB-ba beimportálva azt a hibát írta ki, hogy rossz configurációs bit beállítások... Manuálisan beállítva a FUSE-okat az MPLAB-ban simán betölti a a progit és fut is.
Szóval akkor a CCS rosszul generálja le FUSE-okat a 30F-hez? Vagy én csesztem el valamit?
(#) icserny válasza Ven hozzászólására (») Szept 14, 2008 /
 
Idézet:
„Szóval akkor a CCS rosszul generálja le FUSE-okat a 30F-hez?”

Olybá tűnik, hogy a CCS a ludas. Hiába kattintom be az általános opciók között, hogy Enable Integrated Chip Debugging (ICD), mindenképpen #FUSES NODEBUG kerül a [projektnev].h állományba. De - gondolom - ezt kézzel ki tudod javítani fordítás előtt.
(#) icserny válasza icserny hozzászólására (») Szept 15, 2008 /
 
Kellett volna egy I2C slave szoftveres implementáció PIC12F629-re. Gondoltam, megnézem, hogy a CCS-sel ketten mire megyünk...

Első nekifutásra ezzel próbálkoztam:

#include <12F629.h>
#use i2c(SLAVE, SCL=PIN_A1, SDA=PIN_A0, SLOW, FORCE_SW, NO_STRETCH)
unsigned char command, data;

void main()
{
i2c_start();
command=i2c_read();
data=i2c_read();
i2c_stop();
}

Természetesen megnéztem a generált assembly kódot is, s már az i2c_start látványától lehidaltam:

  1. .................... i2c_start();
  2.     BANKSEL TRISIO  
  3.     BSF SCL                 ; SCL input legyen
  4.     BSF SDA                 ; SDA input legyen
  5.     BANKSEL GPIO    
  6. SDA_HI
  7.     BTFSS SDA             ; Varunk,hogy SDA=HI legyen
  8.     GOTO SDA_HI
  9. SCL_DOWN
  10.     BTFSS SCL             ; Varunk, hogy SCL=HI legyen
  11.     GOTO SCL_DOWN
  12.     BTFSC SCL             ; Varunk,hogy SCL=LO legyen?
  13.     GOTO SCL_DOWN     ; Ez butasagnak tunik...

.....................
BANKSEL TRISIO ; Clock stretch, amit ugye elvileg
BCF SCL ; letiltottam!!!
BANKSEL GPIO
BCF SCL
....................

A szimbólumokat és a cimkéket átneveztem, hogy valamivel olvasmányosabb legyen. A GPIO és a TRISIO a PORTA és TRISA regisztereket takarja, s az SDA a GPIO,0 az SCL pedig a GPIO,1 bitnek felel meg.

Az a kisebbik baj, hogy az órajelnyújtás (clock stretch) bennemaradt a tiltás ellenére, de az előtte levő kódban szerintem az SDA és SCL biteket összekeverték (magas SCL szint mellett az SDA vonalon kellene H->L átmenetre várni. Mindamellett a visszaugrálások logikája is kifogásolható...

Úgy látszik, muszáj lesz saját kútfőből meríteni, bár még sohasem foglalkoztam I2C-vel.
(#) icserny válasza icserny hozzászólására (») Szept 17, 2008 /
 
Egy kicsit rendezetteb formában mégegyszer küldöm:

.................... i2c_start();
BANKSEL TRISIO
BSF SCL ; SCL input legyen
BSF SDA ; SDA input legyen
BANKSEL GPIO
SDA_HI:
BTFSS SDA ; Varunk,hogy SDA=HI legyen
GOTO SDA_HI
SCL_DOWN:
BTFSS SCL ; Varunk, hogy SCL=HI legyen
GOTO SCL_DOWN
BTFSC SCL ; Varunk,hogy SCL=LO legyen?
GOTO SCL_DOWN ; Ez butasagnak tunik...

.....................
BANKSEL TRISIO ; Clock stretch, amit ugye elvileg
BCF SCL ; letiltottam!!!
BANKSEL GPIO
BCF SCL
....................
(#) Ven hozzászólása Szept 30, 2008 /
 
Sziasztok!
30F-nél megoldódott a probléma. Egymást kizáró Fuse-kat be lehet állítani.

Viszont USB-s PIC-cel szívok egy kicsit. 20MHz-es kvarccal az alábbi beállítás szerint:
#fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN, NOMCLR
#use delay(clock=20000000)
Az alábbi kis programmal:
usb_init();
do {
usb_task();
if (usb_enumerated()) {
printf(usb_cdc_putc, "C");
}
} while (TRUE);

Amit az egyik példából vettem. Csatlakozásnál gyorsan kétszer-hármszor jelez és egy idő múlva kiírja (ha kiírja), hogy nem ismeri fel az eszközt. A helyzetet bonyolítja, hogy legelőször felismerte és drivert keresett hozzá CCS PIC DEMO vagy valami hasonló néven.
Mi lehet a baj?
Valaki tudna küldeni egy működő FUSE beállításokat és esetleg egy hozzá tartozó egyszerű progit?
üdv!
(#) icserny válasza Ven hozzászólására (») Szept 30, 2008 /
 
quote]Viszont USB-s PIC-cel szívok egy kicsit.[/quote]
Konkrétan milyen típussal?

Idézet:
„legelőször felismerte és drivert keresett hozzá”

A CDC típusú eszköz esetén a Windowsnak kell egy .inf fájl a bemutatáshoz.

Az USB rejtelmeivel való megismerkedéshez szerintem jobb volna először a Microchip FSUSB demóinak kipróbálása. Van HID, CDC és generic típusú eszközre is mintapélda.

A CCS-nél nem mindig tudni, hogy mit csinál. Néha meg tudni, hogy hülyeséget csinál (lásd föntebb). Ráadásul a disassemly listája sokkal barátságtalanabb mint a Microchip C fordítójáé.
Ha működik a program, akkor persze mindez nem érdekes. De ha nem működik, akkor annál kellemetlenebb...

Idézet:
„Valaki tudna küldeni egy működő FUSE beállításokat és esetleg egy hozzá tartozó egyszerű progit?”

Ez attól függ, hogy konkrétan milyen típusra kell.
(#) Ven válasza icserny hozzászólására (») Szept 30, 2008 /
 
A típus az 18f4550, de szerintem nem számottevő alap problémánál.
A .inf fileról nem tudok. Tehát minden CDC-s alkalmazáshoz kell egy ilyen file? Gondolom akkor minden alkalmazáshoz másmilyen file kell. Lehet letölteni valahonnan?
Szóval egy példa még mindig jól jönne gyakorlatilag akármelyik USB-s 18F családhoz CDC-re.
(#) potyo válasza Ven hozzászólására (») Szept 30, 2008 /
 
Idézet:
„Tehát minden CDC-s alkalmazáshoz kell egy ilyen file?”


Nem, az adott azonosítójú usb eszközhöz kell egy .inf fájl. Ezt az inf fájlt meg kell mutatni a windows-nak, amikor a cuccot bedugod, és kéri a drivert hozzá. Valahol a ccs mappájában ott kell lennie, talán serial.inf néven.


Idézet:
„Szóval egy példa még mindig jól jönne gyakorlatilag akármelyik USB-s 18F családhoz CDC-re.”


Egyszer kipróbáltam a ccs-el adott cdc példaprogramot, nekem működött.



Miért nem térsz át a C18-ra? 16F vagy 12F esetén még látom valami értelmét a CCS-nek (bár akkor már inkább Hi-Tech vagy SDCC), de 18F-hez van gyári fordító, amivel van tapasztalat is. Hozzá kipróbált, folyamatos támogatású mintaprogramok. Minek szívni másik fordítóval?
(#) Tys23 hozzászólása Szept 30, 2008 /
 
Sziasztok!
PIC 16F87X
Szeretném megtanulni égetni ic-prog,emplab megvan de nem tudom hogy áljak neki.
cnc-s rajz ill. furogéphez kellene.Hobby cnc-röl szedtem le a kapcsolást.3 léptetö motort vezérel!Hogy álljak neki tanulni(programozni)?
(#) icserny válasza Ven hozzászólására (») Szept 30, 2008 /
 
Idézet:
„A típus az 18f4550”

Akkor nem értem, hogy mi a probléma? Az ex_usb-serial.c pont erre az MCU-ra van szabva, ráadásul20 MHz-es kvarccal. A config/fuse bitek bele vannak drótozva. Ha nem babrálod el, akkor csont nélkül fordul, és feltehetőleg fut is, ha a hardver követelmények is teljesülnek.

Gondosan át kellene tanulmányozni a projekthez tartozó fáljokban leírtakat!

Examples\ex_usb-serial.c-ben a VBUS figyelésről és a B4, B5, A4 lábak kiosztásáról szól.

Drivers\pic18usb.h is regél valami C4 vagy C5 felhúzásról (de ezt remélhetőleg elintézi belső felhúzással!!!), továbbá a C3-ra kötendő 470 nF kapacitásról.

Ezeknek és a hason lovaknak utána kellene nézni...

Az .inf fájlok egyébként a CCS fordító Drivers nevű mappájában vannak. A cdc_NTXP.inf vagy a cdc_NTXPVista.inf kell neked.

Nem tudom, hogy hivatalosan hogy kell a mintapéldákat lefordítani (lehet, hogy parancssorból?), de ne varázslóval csinálj hozzá új project-et, hanem kézzel! A Project menüben találtam valami Create ikont, aholmegadod az MCU típusát, a project nevét, s ha nem tette volna meg, felveszed az ex_usb-serial.c a forráslistára. Én eléggé el nemítélhető módon az Examples mappában tettem mindezt, így minden hivatkozott fájlt megtalált.
(#) icserny válasza Tys23 hozzászólására (») Szept 30, 2008 /
 
Mindenképpen sokat kell foglalkozni az adott PIC adatlapjával.

Részletesebb információ is található, mint pl. Mid-range MCU family Reference Manual,

Application Notes ésatöbbi.

Magyar nyelvű információk: Közepes teljesítményű PIC mikrovezérlők

Kónya László honlapja

Végül, mivel gondolom, hogy főleg a CCS fordító érdekel - ha már ebben a témakörben nyilatkoztál meg - a CCS Inc. honlapja is számíthat érdeklődésedre.
(#) m2attila hozzászólása Szept 30, 2008 /
 
Sziasztok,

A következö C-kód normálisan működik PIC16F877A-ra lefordítva,de ha 18F4550 -es procihoz írt alkalmazáshoz használom lefut,de nem csinál semmit,nem változtatja meg a port értékét.
A függvények a B-PORT-ot kapcsolgatják bitenként.

Mi lehet a hiba?


// I/O port Defines for PORT B

// As defined in the following structure the pin connection is as follows:
// B0 con_wc
// B1 con_inch
// B2 con_whz
// B3 con_xc
// B4 con_yc
// B5 con_zc
// B6 con_xhz
// B7 con_yhz

struct mxc_pin_map { // This structure is overlayed
int1 con_wc; // on to an I/O port to gain
int1 con_inch; // access to the MATRIX CONTROL pins.
int1 con_whz; // The bits are allocated from
int1 con_xc; // low order up.WC will
int1 con_yc; // be pin B0.
int1 con_zc;
int1 con_xhz;
int1 con_yhz;
} mxc;

//Matrix Control on PORT B
#LOCATE mxc = 6

#define set_tris_mxc(x) set_tris_b(x)

struct mxc_pin_map const MXC_WRITE = {0,0,0,0,0,0,0,0}; // For write mode all pins are out
struct mxc_pin_map const MXC_READ = {1,1,1,1,1,1,1,1}; // For read mode data pins are in

// rest pin of Matrix Control CON_ZHZ on PORT A.PIN_A4


int1 Matrix_inh(int1 inh){

int1 error_occured;

set_tris_mxc(MXC_WRITE);

switch (inh) {

case 0:{ mxc.con_inch = 1;}
break;

case 1:{ mxc.con_inch = 0;}
break;

default:{ mxc.con_inch = 1;
error_occured = 1; }

break; }

return(error_occured);
}


// Matrix conrol output state configurator
// 0 - means logic "0"
// 1 - means logic "1"
// 2 - means logic "HIGHZ"
int1 Matrix_control(int xcout_state,int ycout_state,int zcout_state,int wcout_state){

int1 error_occured;

error_occured = 0;

set_tris_mxc(MXC_WRITE);

switch (xcout_state) {

case 0:{ mxc.con_xhz = 1;
mxc.con_xc = 1; }
break;

case 1:{ mxc.con_xhz = 1;
mxc.con_xc = 0; }
break;

case 2:{ mxc.con_xhz = 0;
mxc.con_xc = 1; }
break;

default:{ mxc.con_inch = 1;
error_occured = 1; }

break; }


switch (ycout_state) {

case 0:{ mxc.con_yhz = 1;
mxc.con_yc = 1; }
break;

case 1:{ mxc.con_yhz = 1;
mxc.con_yc = 0; }
break;

case 2:{ mxc.con_yhz = 0;
mxc.con_yc = 1; }
break;

default:{ mxc.con_inch = 1;
error_occured = 1; }

break; }


switch (zcout_state) {

case 0:{ output_high(PIN_A4);
mxc.con_zc = 1; }
break;

case 1:{ output_high(PIN_A4);
mxc.con_zc = 0; }
break;

case 2:{ output_low(PIN_A4);
mxc.con_zc = 1; }
break;

default:{ mxc.con_inch = 1;
error_occured = 1; }

break; }


switch (wcout_state) {

case 0:{ mxc.con_whz = 1;
mxc.con_wc = 1; }
break;

case 1:{ mxc.con_whz = 1;
mxc.con_wc = 0; }
break;

case 2:{ mxc.con_whz = 0;
mxc.con_wc = 1; }
break;

default:{ mxc.con_inch = 1;
error_occured = 1; }

break; }

return(error_occured);

}

Szivesen várok miden észrevételt.

MWSnap119.png
    
(#) icserny válasza m2attila hozzászólására (») Okt 1, 2008 /
 
Az analóg bemeneteket letiltottad? (Többcélú lábaknál nem elég a TRIS bitek beállítása)
(#) Ven válasza icserny hozzászólására (») Okt 1, 2008 /
 
Hello!
Köszi a segítséget már jól működik minden. Az exampleból indultam ki most már van oda-vissza kommunikáció.
Egy dolog még szemet szúrt nekem. Amikor először rádugom a PIC-et a PC-re új hw-t talál CCS CDC DEMO néven, iyenkor kéri ugye az .inf file-t. Kérdésem, hogy ezt a szöveget nem lehet megváltoztatni?
(#) potyo válasza Ven hozzászólására (») Okt 1, 2008 /
 
Keress rá a forrásfájlokban erre a szövegre, és ha megvan, írd ott át.
(#) icserny válasza Ven hozzászólására (») Okt 1, 2008 /
 
Nem "CCS RS232 Demo" volt véletlenül?
A usb_desc_cdc.h végén van ilyen szöveg.
Erre is áll: csak akkor babráld, ha tudod, hogy mit csinálsz!

Néhány sorral fentebb az egyikmegjegyzés arról tanúskodik, hogy a programozó sem nagyon tudta, hogy mit csinál:

0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??) ==8,9



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