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   104 / 118
(#) vilmosd válasza Lamprologus hozzászólására (») Jan 24, 2015 /
 
Bocs hogy belevau.. Szerintem jobban jarnal, ha a MPLAB alatt fejlesztenel, es elfelejtened ez a CCS IDE-t. Sokkal jobban hasznalhato a debug, PicKit2-3 hasznalhato debugra (igen hasznos lehet). Le lehet tolteni a CCS-tol a MPLABPlugint, instalalni, es utana a MPLAB alatt tudsz forditani CCS C forrasokat. Persze a MPLAB 8.9x rol beszelek, nem a csigaverseny MPLABX-rol. Igen jo a debug ahol mindent talalsz, pl a valtozok, a regiszterek ertekeit lathatod, logikai analizator, breakpoint kezeles, stimulus.. Persze egy kicsit tobbet kell gepelni, de ez megeri a faradsagot. A config beallitasok pl (sajnos) nem minden tipushoz azonosak, de megnyitod az aktualis PICxxx.h filet es maris lathato minden egyedi elnevezes. Ez csak egy jo tanacs, mindenki ugy csinalja ahogy akarja.
(#) Lamprologus válasza vilmosd hozzászólására (») Jan 25, 2015 /
 
Én tuti megbocs, hogy belevau ... kb ilyen válaszra vártam! Remélem a többiek is egyetértenek Veled!
Akkor felmegy az MPLAD IDE 8.92
CCS-ből melyik verziót telepítsem, ha a 4,104-es és 5.011-es verzió közül kéne válaasztani?
(#) kurucz_peter hozzászólása Jan 29, 2015 /
 
Halihó!

PIC16F685-ön szeretnék analog outputot kreálni.
A CCS helpben ezt találtam:
setup_vref();
"Establishes the voltage of the internal reference that may be used for analog compares and/or for output on pin A2."
Ezek szerint az A2 lábon meg kellene jelennie az analog fesz értéknek.
Kérdésem, hogy ehhez mit kell a setup_vref-en kívül beállítani, mert nálam egyelőre nem működik.

Köszi!

üdv:
P
(#) sysy válasza kurucz_peter hozzászólására (») Jan 29, 2015 /
 
Ha jól tudom, akkor a Vref nincs kivezetve lábra. Csak a belső analóg áramköröket látja el feszültséggel. Mint például a C1 comparátort, aminek a kimenetét kapcsolhatod ki az A2 lábra. Sajnos ez van. Válassz olyan PIC-et, amiben D/A átalakító is van.
(#) Lamprologus hozzászólása Feb 4, 2015 /
 
Létezik-e magyar nyelven egy olyan lista amiben az utasításkészlet le van írva.
Csak 1-2 szóval, hogy egyáltalán mit csinál.
Az angol súgóból már talán ki tudom hámozni hogy mit hogyan csinál, de ahhoz meg kell előbb találnom a számomra megfelelő utasítást, de ha nem tudom hogy van olyan, akkor nem is keresem, vagy ha gondolom hogy van, akkor sem tudom hogykeressem...
(#) sysy válasza Lamprologus hozzászólására (») Feb 4, 2015 /
 
Azt a kb. 10 C-nyelvű utasítást szerintem egyszer lefordítod magadnak és 1/2 óra alatt megtanulod. Ennyi.
Egyébként létezik az interneten a Kernighan_Ritchie_C_konyv.doc állomány.
Ha nem találod meg, akkor szóljál és elküldöm neked.
A hozzászólás módosítva: Feb 4, 2015
(#) vilmosd válasza Lamprologus hozzászólására (») Feb 4, 2015 /
 
(#) Lamprologus válasza sysy hozzászólására (») Feb 5, 2015 /
 
Húha ... lehet rosszul fogalmaztam ...
Tán függvényeket kellett volna írnom ... bocs, de annyira még nem vagyok képbe...

ilyenekre gondoltam:
delay_ms
div
ldiv
...
(#) vicsys válasza Lamprologus hozzászólására (») Feb 5, 2015 /
 
A saját súgója nagyon hasznos. Vannak példák is benne.
"C:\Program Files (x86)\PICC\Ccsc.chm"
(#) Lamprologus válasza vicsys hozzászólására (») Feb 5, 2015 /
 
Na igen ... csak épp nem magyar

Ha keresek egy feladat megoldására lehetőséget akkor elég körülményes megtalálni azt az utasítást, függvényt ami nekem kell, pláne úgy hogy nem tudom mi a neve.
Ha már megvan akkor az angolból ki tudom bogarászni hogy működik ... de megtalálni ... ahhoz mindent végig kell bogarászni...

Azt hiszem az lesz a vége, hogy kinyomtatom a CCS C manualt, és tele jegyzetelem.

MicroC-ben pl van PS/2 billentyűzet kezelés, CCS-ben is van ilyen?
(#) sysy válasza Lamprologus hozzászólására (») Feb 5, 2015 /
 
Na, az jó lesz, ha valaki végre lefordítja magyarra a manuált. akkor sokkal többen fognak ebben a CCS-Cben programozni és sokkal több segítséged is lesz hirtelen.
PS/2 kezelés nincs a CCS-ben, de hamar lehet írni egyet, mert abszolute szinkron adatátvitel.
Lehet, hogy az USART-al is meg lehet oldani. Kb 5-10 sor program.
Ez még a kezdőknek is jó, mert sokat lehet (szívni) tanulni belőle.
(#) Gyimate válasza sysy hozzászólására (») Feb 7, 2015 /
 
Üdv!
Szabvány UART-al nem lehet megoldani, mivel ennek egy kicsit eltér a felépítése, viszont tényleg nem nehéz írni rá egy kódot. ITT egy link a billentyűzetek kezeléséről, pár évvel ezelőtt ez alapján írtam meg egy ilyen programot.
(#) Lamprologus hozzászólása Feb 9, 2015 /
 
Ez a hibaüzenet miért van?
Interrupts disabled during call to prevent re-entrancy (Decode)

Van egy Decode függvényem, ha jól értem akkor ennek a meghívásakor letiltja a megszakításokat ...
A problémát megoldottam (mekerültem) csak nem értem hogy miért csinálta...
A főprogramból a számítási feladatokat átraktam a függvénybe és most nem reklamál...
(#) vicsys válasza Lamprologus hozzászólására (») Feb 9, 2015 /
 
Mert a megszakításban nem illik olyan részt tenni, ami késlelteti a lefutását. Célszerű flag-ekkel operálni, amit a főfüggvényben kezelsz majd le a flag állapota alapján.
(#) Lamprologus válasza vicsys hozzászólására (») Feb 9, 2015 /
 
Ne épp ezért nem értem, mert akkor lett jó amikor a főfüggvényből kivettem a számításokat, és betettem abba a függvénybe amit a megszakításból hívok meg!

Tudom, jó lenne látni hozzá a forráskódot, de azt inkább nem mutatom meg, mert tele van "szeméttel" ... ha lesz időm kitakarítom, aztán felteszem, hogy kicsit "megköpködjétek" ...

ezt a flegekkel operálni... ez hogy is van konkrétan?
Mondjuk ha egy LED sort akarok léptetni megszakítással?
A hozzászólás módosítva: Feb 9, 2015
(#) potyo válasza Lamprologus hozzászólására (») Feb 9, 2015 /
 
A hibaüzenet elég beszédes, letiltja a megszakításokat a Decode függvény futása alatt, hogy megakadályozza a függvénybe történő újrabelépést. Az ok pedig az, hogy ugyanazt a függvényt hívod mind a főprogramból, mind a megszakítási rutinból, és az ilyesmi egy ilyen kis mikrovezérlőn nemigazán kivitelezhető, mivel nem tud másik memóriaterületet adni a függvény ismételt belépésekor. Ugyanezért nem lehet rekurzív függvényt sem írni.
(#) vicsys válasza Lamprologus hozzászólására (») Feb 10, 2015 /
 
Akkor nagyvonalakban: Képzeld el, hogy van egy 1bites változód (flag). Ezt tudod nullából egybe állítani- ha volt megszakításod. (a megszakításban van)
A főfüggvényben figyeled az értéket. Ha 1 az értéke, elvégzed a kívánt műveletet, majd visszaállítod a flag-et 0-ra.
(#) Lamprologus válasza vicsys hozzászólására (») Feb 10, 2015 /
 
Ja, ja ... így már világos! Köszönöm!
Átszerkesztem a progit...

(#) Lamprologus válasza Lamprologus hozzászólására (») Feb 10, 2015 /
 
Nem jó ...

A megszakítással vezérelném a 4db 7 szegmenses kijelző léptetését, de a főfüggvényemben van egy késleltetés, ezért hiába állítom át a megszakításban a flag-et, csak a késleltetés letelte után tudom ismét leellenőrizni.
(#) potyo válasza Lamprologus hozzászólására (») Feb 10, 2015 /
 
Vedd ki a késleltetést, és oldd meg másképp. Vagy mutasd meg, mit csinálsz, hogy tudjunk segíteni.

Szerk.: ha már hétszegmenses kijelző, azt emberek nézik, ott nem számít némi késleltetés az adat beérkezése és a megjelenítése között. Tehát a megszakítási rutinban vezéreld a kijelzőt, de ne ott számolj, hanem egy pufferből vegye a megjelenítendő számot. A pufferbe meg pakolod a főprogramból, amikor változás van.
A hozzászólás módosítva: Feb 10, 2015
(#) messer hozzászólása Feb 11, 2015 /
 
Sziasztok!

Remélem nem csak a figyelmetlenségem okozza a következő problémát.

Mplab:8.92
CCSC:5.024
PIC:16F628A

Az mclr lábat földre teszem és továbbra is fut a pic-ben a program egyszerűen nem értem. beszúrom a kódot hátha láttok valamit rajta benne. Segítségeteket előre is köszönöm.

  1. #include <16F628A.h>
  2.  
  3.  
  4.  
  5. #device ICD=TRUE
  6. #FUSES INTRC_IO
  7. #FUSES NOWDT                    //No Watch Dog Timer
  8. #FUSES PUT                      //Power Up Timer
  9. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  10. #FUSES MCLR
  11. #FUSES NOPROTECT
  12. #use delay(internal=4000000)
  13.  
  14.  
  15.  
  16.  
  17. int memo,seged,t,i;
  18. long pwm1,value;
  19.  
  20. #BYTE intcon = 0x0b
  21. #BYTE t1con = 0x10
  22.  
  23. #bit m1 = memo.0
  24. #bit m2 = memo.2
  25. #bit m3 = memo.3
  26. #bit m4 = memo.4
  27. #bit k1 = memo.5
  28. #bit T0IE = intcon.5                  //Timer0 interrupt enable flag
  29. #bit T0IF = seged.0                   //Timer0 interrupt overflow flag
  30. #bit T1 = seged.1
  31. #bit TMR1ON = t1con.0
  32. #bit TMR1IF = seged.2
  33. #bit flag1   = seged.3                  //lámpa állapot jelző flag on/off
  34.  
  35.  
  36.  
  37.  
  38. #INT_RB
  39. void  RB_isr(void)
  40. {
  41. m1=input(pin_b4);
  42. m2=input(pin_b5);
  43. m3=input(pin_b6);
  44. m4=input(pin_b7);
  45. }
  46.  
  47.  
  48. void villan()
  49.    {
  50.     output_high(PIN_A2);
  51.     delay_ms(200);
  52.         output_low(PIN_A2);
  53.         delay_ms(200);  
  54.    }
  55.  
  56.  
  57.  
  58. void main()
  59. {
  60. memo=0xff;
  61.  
  62. set_tris_b(0b11111111);
  63. enable_interrupts(GLOBAL);
  64. enable_interrupts(INT_RB);                  // Sets up EXT
  65. enable_interrupts(INT_EXT);
  66. ext_int_edge(H_TO_L);
  67.  
  68.                
  69.  
  70. while(1)
  71.    {
  72.  
  73.    
  74.         if(!m1)
  75.       {
  76.       disable_interrupts(INT_RB);
  77.       villan();
  78.           enable_interrupts(INT_RB);
  79.           m1=1;
  80.       }
  81.  
  82.    
  83.    if(!m2)
  84.       {
  85.         disable_interrupts(INT_RB);
  86.         villan();
  87.                 villan();
  88.                 enable_interrupts(INT_RB);
  89.                 m2=1;
  90.       }
  91.            
  92.  
  93.    if(!m3)
  94.       {
  95.       disable_interrupts(INT_RB);
  96.     villan();
  97.         villan();
  98.         villan();
  99.       enable_interrupts(INT_RB);
  100.       m3=1;
  101.       }  
  102.  
  103.    if(!m4)
  104.       {
  105.       disable_interrupts(INT_RB);
  106.     villan();
  107.         villan();
  108.         villan();
  109.         villan();
  110.       enable_interrupts(INT_RB);
  111.       m4=1;
  112.       }
  113.    
  114.  }
  115. }
(#) Hp41C válasza messer hozzászólására (») Feb 11, 2015 /
 
A konfigurációs regiszterben a MCLR funkció le van tiltva.
(#) sysy válasza Hp41C hozzászólására (») Feb 11, 2015 /
 
Akkor ez látszana: #FUSES NOMCLR
Ez van a programban: #FUSES MCLR
(#) vicsys válasza messer hozzászólására (») Feb 11, 2015 /
 
Ugye 10K-os a felhúzó (vagy nagyobb)?
(#) Hp41C válasza sysy hozzászólására (») Feb 11, 2015 /
 
Olvasd ki, írd meg a konfigurációs szó értékét hex -ben.
A hozzászólás módosítva: Feb 11, 2015
(#) sysy válasza Hp41C hozzászólására (») Feb 11, 2015 /
 
Nem én kínlódok a programmal.
(#) messer válasza vicsys hozzászólására (») Feb 11, 2015 /
 
10k a felhúzó.
(#) messer válasza Hp41C hozzászólására (») Feb 11, 2015 /
 
Ebben pici segítségedet kérném mert a config regiszternek nem találom címét 16f628A-nal
(#) messer válasza messer hozzászólására (») Feb 12, 2015 /
 
Sziasztok.

Pic kit2-vel megnéztem hogy a hex-ben mit generál a config regiszter tartalmának az mplab vagy ccsc.... megint szörnyű amit tapasztaltam.

Pickit2 programban direktben írva a config regisztert minden ok. Azt sem tudom hogy az mplab vagy a ccsc generál hibás dolgokat hihetetlen mindig rájön az ember hogy a ccsc-t el kell hagyni.....
(#) kissi válasza messer hozzászólására (») Feb 12, 2015 /
 
Nem használom a CCSC-t, de úgy gondolom az elterjedtségéből, hogy ennyire amatőr hibákat nem véthet... Nem lehet, hogy valamit nem teljesen a specifikációknak megfelelően adtál meg vagy a telepítés nem 100 %-os ?!
Következő: »»   104 / 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