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   86 / 118
(#) potyo válasza sysy hozzászólására (») Feb 26, 2013 /
 
Idézet:
„Légvonalban 3 km, de tudok egy rövidebb utat az erdőn át esete.
Höhö...”


Nem biztos, hogy légvonalban el is lehet oda jutni
A hozzászólás módosítva: Feb 26, 2013
(#) Hp41C válasza potyo hozzászólására (») Feb 26, 2013 /
 
Szia!
Valódi feladat adatait írtam. Ugyan azt a programon írtam meg 16F1829 -re assembly -ben és XC8 -ban. Ennek a tapasztalatait írtam meg itt illetve innen néhány hozzászólásban. Összehasonlításkép a 18F -re a C18 fordító nem ilyen rossz, ott az arány (a fenti feladat 18F2620 -ra) optimalizást esetben 2 - 2.5, nem oprimalizált esetben 4 .. 5. XC8 -at 18F -re nem próbáltam.
(#) icserny válasza Hp41C hozzászólására (») Feb 26, 2013 /
 
Idézet:
„Összehasonlításkép a 18F -re a C18 fordító nem ilyen rossz”
Valószínűleg azzal van ez összefüggésben, hogy a PIC18 (illetve a PIC17C) az első, amelyikre azt mondja a gyártó, hogy a hardver "támogatja" a C nyelv használatát.
(#) Hp41C válasza icserny hozzászólására (») Feb 26, 2013 /
 
Nem, azzal van összefüggésben, hogy a free XC8 teleszemeteli fölösleges utasítással a kódot. De ezzel már több topikot tele off -oltam... Nézzétek meg az disassembly list -et, mit fordít egy-egy sorra. Kitéptem a hajamat.. Egy gorsan letötölt idézet a Microchip fórumáról: „For me this is no surprise at all, Hitech/XC8 are pure s**** in free mode. ” Bővebben: Link
(#) zoox hozzászólása Feb 26, 2013 /
 
Köszönöm az értékes hozzászólásokat ,és arra a következtetésre jutottam amit le is teszteltem ,hogy ha függvényből hívok újabb függvényt és még abból is hívok másikat (a NENU -rendszerem most igy müködik) az egésznek a mérete 2K fölött van akkor jön a fordító a Out of ROM üzenettel. Ujra gondolom az egész MENU szerkezetet és figyelek hogy ne lépjem tul a 2K-t és akkor menni fog a progi.
Még 1x köszi mindenkinek (megint ujjat tanultam )

A másik kérdés ,hogy melyik fordítót használjak?Hi-tec , XC8 ,CCSC, vagy a MikroC .Most elbizonytalanodtam ,akkor az XC8 felejtős vagy nincs valami okosítás hozzá(most kérek előre elnézést a moderátoroktól:bowEsetleg a mikroc amit nézegettem ,de MPlab-ba nem lehet használni sajna. CCSC már találkoztam benne bug-al (bosszantó pedig ennek a helpje szerintem a legjobb ,kivéve a sample cod-jai mert azok nagyrésze nem jól működik a 16F-en) Akkor melyik irányba induljak tovább??
(#) Hp41C válasza icserny hozzászólására (») Feb 26, 2013 / 1
 
Miért van az, hogy egy optimalizált C18 kódban nem található infsnz ill dcfsnz utasítás. Illetve egyetlen darab van belőlük a startup kódban az inicializált adatok ram -ba másolásánál.
  1. if (!(++asm_temp11))
  2. {
  3.         asm_temp12++;
  4. }

Optimalizált kódja miért tartalmaz ugrást? Miért nem az alábbi módon csinálja?
  1. _asm
  2. infsnz  asm_temp11, 1, ACCESS
  3. incf    asm_temp12, 1, ACCESS
  4. _endasm;

Érdekes, pedig igen gyakran használt művelet a 16 bites szám növelése csökkentése...
A hozzászólás módosítva: Feb 26, 2013
(#) sysy válasza Hp41C hozzászólására (») Feb 27, 2013 /
 
Ah, so!

Én úgy értettem, hogy ha ugyanezt a kódot assemblyben írná meg, akkor 2x ... 4x rövidebb lenne a kód (ami kb. igaz is lehet), de ha XC8-ban operál, akkor 12x kisebb lesz a kód.

És sóval is behintetted az XC8 nyomait?
(#) Hp41C válasza sysy hozzászólására (») Feb 27, 2013 /
 
A régebbi fordítókkal jobb eredményt lehetett elérni.
(#) sysy válasza zoox hozzászólására (») Feb 27, 2013 /
 
Magamból kiindulva maradj a CCS fordítónál. Ne hidd, hogy a többi fordító gond nélküli csupa öröm és boldogság. Legalább a helpje tetszik neked.
(#) kukac_24 hozzászólása Márc 11, 2013 /
 
Sziasztok, CCS C 4.136-ot használok. Eddig frankón működött is, de most azt írja ki, hogy "Demo period has expired". Újramásoltam a .crg file-okat, de nem változott semmi. Szerintetek mi lehet a baj?
(#) bbatka válasza kukac_24 hozzászólására (») Márc 11, 2013 /
 
Fordítok." A bemutató időszak lejárt."
(#) kukac_24 válasza bbatka hozzászólására (») Márc 11, 2013 /
 
Kösz, erre én is rájöttem, de a megoldás érdekelne inkább.
(#) Gyimate hozzászólása Márc 17, 2013 /
 
Sziasztok!
Megint beleütköztem egy problémába: Próbálok egy PIC18F4550 -est rávenni arra, hogy adatot küldjön SPI-n keresztül, de nem tudom beállítani az órajelet, ha ezt használom, hogy SPI_CLK_DIV_4 vagy 16 akkor megvan az órajel, de ez túl gyors, ha beállítom, hogy 64-el osszon, akkor nincs is órajelem, ha pedig a Timer2-t akarom használni arra, hogy beállítsam az órajelet, akkor meg az egyedüli beállítás amit NÉHA elismer, ez: setup_timer_2(T2_DIV_BY_1, 15, 1);
viszont ilyenkor is túl magas az órajel, ha átírok benne bármilyen paramétert akkor ugyancsak nincs sem órajelem, sem kiküldött adatom. Már egy napja szenvedek ettől a fordítótól, a neten is szétnézetm a témával kapcsolatban, de sehol nem találtam hasznos információt. Mellékelem a kódot, igaz már le van csupaszítva a minimumra, de még így sem akart menni. Még annyit, hogy a cél órajel az 250KHz lenne, egy PS1 kontrollerrel szeretném felvenni a kapcsolatot...
  1. #include <18f4550.h>
  2. #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,PLL5, NODEBUG,CPUDIV1, USBDIV, VREGEN
  3. #use delay(clock=48M)
  4. #USE spi ()
  5.  
  6.  
  7. void main ()
  8. {
  9.    setup_timer_2(T2_DIV_BY_1, 5, 1);
  10.    setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_T2);  
  11.    for (;;)
  12.    {    
  13.       spi_write (0x00);
  14.    }
  15. }

20 MHZ-es kvarcot használtam, és a SPI órajelét szkóppal figyelem. Ha tudja valaki, hogy hol hibázok, kérem segítsen, köszönöm.
Üdv Máté
(#) Gyimate válasza Gyimate hozzászólására (») Márc 17, 2013 /
 
2 órányi próbálgatás után végre sikerült mindent beállítanom. A megoldás az volt, hogy be kell iktatni 10 us várakozást minden adatküldés után, így stabil lett a kapcsolat és fogadja is az adatokat.
(#) simib hozzászólása Márc 26, 2013 /
 
Sziasztok!
Azt szeretném kérdezni, hogy 18F4620-nál RB-INT-hez (azaz, hogy működjön) a TRIS-en és az interrupt engedélyezésén kívül kell-e még valamit beállítani? Utánaolvasva több féle választ kaptam kérdésemre...
Elvileg kellene az ADCON regisztereket is állítani? Azt hiszem úgy olvastam, hogy a PIC indulásánál lehetséges, hogy analógra van állítva a bemenet?
(#) agressiv hozzászólása Márc 26, 2013 /
 
Tiszteelt fórumlakók. Adott két PIC, I2C kapcsolattal, illetve van még a buszon egy másik IC is. Az egyik master módban megy, a másik slave módban. Az lenne aprobléma, hogy a slave PIC az harmadik IC-nek küldött adatot is veszi attól függetlenül, hogy más címre van állítva. Az igaz, hogy a küldött adat ugyanaz, de a cím nem. PIC C compilerben van írva a programja, be van állítva a cím, de hiába. Ha teljesen értlemetlen címet állítok be (amit a compiler még enged) akkor is veszi az adatot a slave PIC. Mit hagyhatok ki, vagy a címzést a programba is bele kell írni?
(#) anemo hozzászólása Ápr 1, 2013 /
 
Sziasztok!

(Remélhetőleg itt már jó lesz)

Segítséget szeretnék kérni: PIC18F4550-et a CCS-sel programozom, egyelőre virtuálisan. USB bootloader-t szeretnék beleégetni, gondolom az ex_usb_bootloader.c hex fájlját kell egy az egyben használni. Használta ezt már valaki? Nem találtam róla minimális hardver rajzot, hogy a boot gombnak hol kell lennie (MicroChipnél ugye B4). Egyáltalán van?

Ha sikerült a bootloadert beleégetni, akkor a PIC-et USB HID kapcsolathoz használnám (Visual C#). Ha új szoftververziót szeretnék felrakni a PIC-re, akkor a SIOW.EXE-vel tehetem ezt meg?

Köszönöm előre is!
(#) Dempsey hozzászólása Máj 12, 2013 /
 
Sziasztok!
Olyan gondom van, hogy míg a Pickit3 csatlakoztatva van a PIC16f628A-hoz addig a program működik rendesen mikor tesztelem, viszont mikor eltávolítom a programozót nem működik megfelelően. Nem csinálja meg például az élfigyelést stb. Tehát felborul a működés. Találkozott már valaki ilyennel?
(#) Gyimate válasza Dempsey hozzászólására (») Máj 12, 2013 /
 
Szia,
A CCS-t az MPLAB-ba integrálva használod? Ha igen, akkor a felső sorban van egy legördülő menü, ott válaszd a Debug helyett a Release opciót, továbbá használsz felhúzó ellenállást az MCLR lábon? 100 nF-os hidegítő kondenzátort használsz közel a PIC-hez? Ezek okozhatnak ilyen hibát.
Üdv Gyimate
(#) Dempsey válasza Gyimate hozzászólására (») Máj 12, 2013 /
 
Szia!
Igen úgy használom és Release van kiválasztva. Van 4,7k az MCLR-en. Hidegítő kondival és nélküle is ugyan az a hiba. Sőt próbáltam nem csak belső oszcillátorral hanem külső kvarccal is az sem javít a helyzeten. Nem tudom mivel másabb ha rajta van a programozó.
(#) Gyimate válasza Dempsey hozzászólására (») Máj 12, 2013 /
 
Ugye a PicKit3-at programozóként használod az MPlab-ban és nem debuggerként?
Más nem jut eszembe ami ilyen jelenséget okozhat.
(#) Dempsey válasza Gyimate hozzászólására (») Máj 12, 2013 /
 
Igen programozóként használom. Nekem se jut eszembe semmi más. Ilyet még nem láttam az tuti.
(#) icserny válasza Dempsey hozzászólására (») Máj 12, 2013 /
 
Esetleg az LVP nincs letiltva (Config bit), a PGM láb meg nincs lehúzva?
(#) Dempsey válasza icserny hozzászólására (») Máj 12, 2013 /
 
Na az tuti hogy nincs letiltva. Holnap kiderül megjavul-e tőle, remélem igen. Köszi az infót!
(#) Dempsey hozzászólása Máj 17, 2013 /
 
Sziasztok!
Valaki tudna segíteni, hogy az RB interrupt miért nem megy?
  1. #include "16f628a.h"
  2. #zero_ram
  3. #fuses INTRC,NOWDT,NOPROTECT,NOLVP,MCLR
  4. #use delay(clock=4000000)
  5. #use standard_io(B)
  6. #use standard_io(A)
  7.  
  8. int i=0,j=0;
  9.  
  10. #int_rb         //Nyomógomb kezelés
  11. void rb_isr(){
  12.         if (!input(pin_B5)){    
  13.         delay_ms(250);
  14.         j=j+1;
  15.         }
  16. }
  17. #int_ext        // Közelítés érzékelő jelének kezelése
  18. void ext_isr(){
  19.         if(!input(pin_b0)){
  20.         delay_ms(250);
  21.         i=i+1;
  22.         }
  23. }
  24.  
  25.  
  26. #use delay(clock=4000000)
  27. void main (){
  28.  
  29. set_tris_A(0x00);
  30. set_tris_B(0xff);
  31. enable_interrupts(global);
  32. enable_interrupts(int_ext);
  33. enable_interrupts(int_rb);
  34. ext_int_edge(H_TO_L);
  35.  
  36.  
  37. while(1){
  38.  
  39.         if ((i!=0)&(j==0)){
  40.         i=0;
  41.         }
  42.  
  43.         if ((j!=0)&(i==j)){
  44.         output_high(pin_A2);   
  45.         delay_ms(2000);
  46.         j=0;
  47.         i=0;
  48.         output_low(pin_A2);
  49.         }
  50. }
  51. }
(#) Dempsey válasza Dempsey hozzászólására (») Máj 20, 2013 /
 
Elvileg tudnia kellene mindkét interrupt-ot kezelni nem?
(#) vicsys válasza Dempsey hozzászólására (») Máj 20, 2013 /
 
Olvasd ki a portot és töröld az interrupt-ot. pl.:

  1. int8 valami;
  2. valami |= input_b();
  3. clear_interrupt (INT_RB);
  4. enable_interrupts(INT_RB);
(#) Gyimate válasza Dempsey hozzászólására (») Máj 20, 2013 /
 
Üdv!
Azt is megteheted, hogy ha ICD-t vagy PicKitet használsz, hogy az MPLAB-ban debuggolod, ezzel megtudod, hogy belép-e a megszakításba és máshol van-e a hiba.
(#) Dempsey válasza vicsys hozzászólására (») Máj 20, 2013 /
 
Köszi az infót.
(#) Gyimate hozzászólása Jún 8, 2013 /
 
Sziasztok!
Úgy tűnik, hogy én küszködöm a legtöbbet ezzel a fordítóval. Azt szeretném megkérdezni, hogy az miért lehet, hogy a ccs támogatja a PIC16F1454-es kontrollert, de mégis azt a hibát írja ki, hogy hiba van a 16F1454.h 2. sorában, azt írja ismeretlen eszköz. Azt nem értem, hogy lehet az, hogy megvan a header fájl, utánanéztem, a fordító támogatja a PIC-et, de mégis hibát ír ki, eddig nem találtam rá választ, ha valaki tud kérem segítsen, köszönöm!
Következő: »»   86 / 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