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   16 / 118
(#) Akoska válasza icserny hozzászólására (») Okt 20, 2008 /
 
Szia
Elöször is köszönöm a sok segitséget!
Kipróbáltam amit irtál, de sajna nem megy. A zárojelek hiányát javitottam itt:
  1. eeolvas();
  2.    output_bit(led1,shift_right(&eki,1,0);
  3.    ........

Ezután kiprobáltam, de beolvasás után az összes led kimenet magas szinten van.
Mitöl lehet ez? (Az olvasás és irás megtörténik mert villogtatok egy ledet végrehajtáskor.)
(#) icserny válasza Akoska hozzászólására (») Okt 21, 2008 /
 
Bocs a lemaradt zárójelekért!

Ha programozásnál törlöd a memóriát, vagy még nem sikerült felülírni az EEPROM-ot, akkor csupa egyes van benne.

Milyen felszerelésed van? PICkit2-vel pl. kiolvasható az EEPROM, tehát lehet ellenőrizni, hogy belekerült-e az adat. Ha nincs ilyen lehetőséged, akkor megpróbálhatod átírni az eeiras() fv.-túgy, hogy direkt nullát írjon ki (ee_write(0,0) ), s egy futás után reset-elve visszajön-e a nulla?
(#) Akoska válasza icserny hozzászólására (») Okt 21, 2008 /
 
Jó korán keltél! Csak nem ezen gondolkoztál egész éjszaka?
Megoldodott, köszönöm! Maradtam a saját elgondolásomnál és nem shifteltem a biteket. Egyszerűen a 0-ás cimre irok 0x01, 0x02, ...stb számokat. Induláskor vizsgálom mi van beirva majd beállitom a kimeneteket. A megoldás az lett hogy az elején kellett egy vizsgálat hogy eki==0xFF mert nem biztos hogy van benne valami. Ekkor beirok eki=0x01-et és készen is van. A második szivás meg az volt hogy ha rajta van a pickit akko néha félreugrik a prog és beir valamit. Miután levettem rolla jó is lett. Köszi mindent!
(#) icserny válasza Akoska hozzászólására (») Okt 21, 2008 /
 
Idézet:
„Jó korán keltél! Csak nem ezen gondolkoztál egész éjszaka?”

Őszintén szólva nem...
Idézet:

Maradtam a saját elgondolásomnál és nem shifteltem a biteket.”

Pedig direkt azért javasoltam a shiftelést, hogy ne kelljen a feltétel vizsgálatokkal bonyolítani a programot.
Idézet:

A megoldás az lett hogy az elején kellett egy vizsgálat hogy eki==0xFF mert nem biztos hogy van benne valami.”

Ez jó gondolat.
(#) icserny hozzászólása Okt 22, 2008 /
 
Elvileg a CCS is nyújt egyszerű RTOS megoldást (kooperatív multitasking). Próbálta már ezt valaki?
(#) sysy válasza icserny hozzászólására (») Okt 24, 2008 /
 
Szerintem arra, hogy PORTA semmit nem csinál a CCS.
Valahogy így képzelném el a dolgot 16F628 MCU esetén:

#byte PORTA = 0x05
#byte PORTB = 0x06

write_eeprom(0, PORTA);

ez kiolvassa a PORT_A állapotát és leteszi az EEPROM 0x0 címére. Ugyanígy működne a PORT_B is.

Visszafelé:

PORTA=read_eeprom(0);

Ez kiírná az EEPROM tartalmat a portra.

sysy
(#) icserny válasza sysy hozzászólására (») Okt 25, 2008 /
 
Köszönöm a kiegészítést! Valóban kell hozzá a
  1. #byte PORTA = 0x05
  2. #byte PORTB = 0x06

hozzárendelés...
(#) sysy hozzászólása Nov 22, 2008 /
 
Sziasztok!

Itt jártak a CCS-es fiúk és ezt hozták.
Hátha valakinek még nincs meg.

Bővebben: CCS4.078

sysy
(#) m2attila válasza sysy hozzászólására (») Nov 23, 2008 /
 
(#) G-Lex válasza sysy hozzászólására (») Dec 16, 2008 /
 
istencsászár!!!
(#) Androla hozzászólása Dec 18, 2008 /
 
Ha ez az amire gondolok,
én is megköszönöm !

Üdv.
Androla
(#) gulasoft válasza raron hozzászólására (») Dec 19, 2008 /
 
Én a C PORTRA TETTEM EGY 16F726-on az lcd-t és nem igazán érem hogy ezt a pin pammet hogyn kéne úgy belőni, hogy a c0 c1 c2 az a vezérlő és c7-6-5-4 az adat.
Tud nekem valaki ebben segíteni?
(#) MPi-c válasza gulasoft hozzászólására (») Dec 19, 2008 /
 
Idézet:
„Tud nekem valaki ebben segíteni?”

Forrás nélkül kicsit nehéz!
(#) ccs válasza gulasoft hozzászólására (») Dec 19, 2008 /
 
Próbáld meg ezzel:
Igaz, ez 4x16 karakteres LCD-re van, de ékezetes betűket is tud.
Ügyelj a bekötésre:
C0 enable
C1 rs
C2 rw
C4 D4
C5 D5
C6 D6
C7 D7

ccs_LCD416.c
    
(#) m2attila hozzászólása Dec 19, 2008 /
 
Sziasztok!

Itt jártak a CCS-es krampuszok és ezt hozták még ki sem hűlt.

:zavart1:
CCS4.084
:zavart1:


Használjátok egészséggel!
Link javítva
(#) m2attila válasza (») Dec 19, 2008 /
 
Valami gáz volt a PW-el,most PW nélkül!

CCS4.084 - no PW



(#) sksporky hozzászólása Dec 20, 2008 /
 
Szasztok!

be szeretnék illeszteni asm kódot CCS-be de nem fogadja el:

#asm
bcf status,rpo
#endasm


Először azt mondja nincs "status" nevű változó ha csinálok neki int8asat rp0-nak int1-est akkor meg ezt nyomja ki:Expression must evaluate to a constant

valaki tud valami helpet ezügyben?

(#) icserny válasza sksporky hozzászólására (») Dec 20, 2008 /
 
Idézet:
„Először azt mondja nincs "status" nevű változó ha csinálok neki int8asat rp0-nak int1-est”

Ennek így nyilván nincs értelme, ha status nem egy C változó a RAM-ban valahol, hanem a STATUS regiszter az SFR területen. Éppen ezért meg kell adni, hogy hol van!

  1. int status;
  2. #locate status=0x50 // vagy ahol van....


Továbbá rp0 sem egy RAM-ban elhelyezett tároló, hanem egy számkonstans, ami a megfelelő bit sorszámát adja meg. Ezt tehát #define-nal célszerű deklarálni:

  1. #define rp0 5
(#) sksporky válasza icserny hozzászólására (») Dec 20, 2008 /
 
köszi,majd kipróbálom!
(#) icserny válasza sksporky hozzászólására (») Dec 20, 2008 /
 
A 294877. számú hozzászólás szerinti #byte deklarálás talán még jobb választás int8 és #locate helyett.
(#) gulasoft hozzászólása Dec 21, 2008 /
 
A felrakott ccs-ben a 16f726.h-ban van egy csúnya hiba: 266. sor

// Constants used in SETUP_ADC_PORTS() are:
#define ALL_ANALOG 0x00FFFF // A0 A1 A2 A3 A5 B0 B1 B2 B3 B4 B5
#define ALL_ANALOG 0xFFFFFF // A0 A1 A2 A3 A5 E0 E1 E2 B0 B1 B2 B3 B4 B5

Mindjárt keresek egy másik header-ben egy ilyet és javítom az egyik sort, tegyétek meg Ti is.
(#) gulasoft válasza ccs hozzászólására (») Dec 21, 2008 /
 
Na sikerült annyi időt szakítani, hogy kipróbáljam. Szerencsére pontosan így volt bekötve. Nagyon kasán működik köszönet és hála.
(#) m2attila válasza gulasoft hozzászólására (») Dec 27, 2008 /
 
Szerintem sokszor van néhány hiba/elírás a header fileok-ban,nem csak ebben a verzióban a régebbiekben is előfordult.
A CCS-fiúk nagyon siettek az update-el,mint mindíg.
(#) sysy válasza m2attila hozzászólására (») Dec 28, 2008 /
 
Köszönjük!

Már régóta vártunk erre!

sysy
(#) whalaky hozzászólása Dec 28, 2008 /
 
Sziasztok CCS guruk!
Ismerkedem a PIC-ek és a CCS lelkivilágával, de egy számomra nem tiszta problémába ütköztem.
A jelenség az hogy a program szépem lassan hízogat, egyre több funkció kerül bele, és egyszer csak közli, hogy a szegmens túl nagy és elfogyott a ROM. Ezt alapban el is hinném, ha nem egy mezei fputs okozná a jelenséget, amit előtte sokszor használok és láthatóan alig hízik tőle a program.
A másik amit kifigyeltem, hogy olyan helyeken jelentkezik, a hol a "sokadik" mélységben hívogatják egymást a függvények. egy 16F876A-t nyüstölök, az egyik fordításnál még 84% a ROM foglaltság, majd egy jól eltalált fprintf vagy majdnem bármi egy a program mélyebb bugyraiban és máris elfogyott a ROM. Az érdekes a dologban hogy ugyan azt a főprogramba illesztve alig változik a memóri foglaltság.
Olyan, mintha a callstack zabálná fel.
Van erre valami megoldás vagy programozástechnikai trükk amit nem ismerek?
(#) potyo válasza whalaky hozzászólására (») Dec 28, 2008 /
 
Valószínűleg a függvény egy csomó regisztert használ, amiket a megszakítás kezdetekor el kell menteni, majd visszatölteni a megszakítás végén. Az is lehet hogy nem használja ezeket a regisztereket, de mivel a fordító nem tudja fordításkor, hogy miket használ, ezért amikor függvényhívást lát, akkor biztos ami biztos alapon beteszi az elmentésüket. Ha nem használod az ilyen függvényt a megszakítási rutinban, akkor ezekre a mentésekre nincs szükség. Megszakítási rutinban egyébként sem szép dolog függvényt hívni, főleg olyat, aminek nem tudjuk a belső felépítését.

És mindez kiderül, ha belenézel a listing fájlba, hogy mire fordult az adott kód!
(#) pbalazs válasza whalaky hozzászólására (») Dec 28, 2008 /
 
Én ugyanígy jártam, csak HiTech fordítóval + 16F873. Nálam egy switch-case kellett több helyre, hogy "hülyebiztos" legyen a progi, de nem volt mindegy, hogy hová tettem, és egyik sem volt megszakításban.

Egyes helyeken azt mondta a fordító, hogy abba a bizonyos szegmensbe már nem fér több, ezért nem fordul, holott a szumma flash olyan 83-85% körül volt.

Én arra jutottam, hogy a linker egyforma (legalábbis fix) darabokra bontja a flash-t, és ez nem rugalamas. Így ha egyik darabba nem fér el az oda szánt kód, akkor annyi. Arra meg nem volt energiám, hogy a linkert parancssori kapcsolókkal utasítgassam, inkább az eldugott szervizmenü nem lett "hülyeálló".

Ilyen szempontból jobb az a fordító, amelyiknek egy szöveges fájlban hozzáférhető és paraméterezhető a linkerscript (pl. Microchip, GNU).
HiTech-nél én nem találtam ilyet.

Aztán lehet, hogy nincs igazam, én inkább hardveres vagyok.
(#) whalaky válasza potyo hozzászólására (») Dec 28, 2008 /
 
Nem megszakításból hívja, ott csak letárolja a feldolgozandó cuccot, aztán a főprogram hívja meg a feldolgozót, ami aztán az adatok függvényében teszi a dolgát, de a feldolgozóban van sok fgv.
Ja! És dolog compiler függő, több verzióval próbáltam, más más a "tűrőképességük".
Ami a listing filet illeti, ha hibával lehal mintha nem is készülne... de megnézem.
(#) whalaky válasza whalaky hozzászólására (») Dec 28, 2008 /
 
Sikerült újra elérni azt a pontot ahol nincs tovább....
*** Error 71 "main.c" Line 308(0,1): Out of ROM, A segment or the program is too large execute_cmd
Seg 01000-017FF, 0712 left, need 084F
Seg 01800-01FFF, 0800 left, need 084F
Seg 00000-00003, 0000 left, need 084F
Seg 00004-00054, 0000 left, need 084F
Seg 00055-007FF, 0016 left, need 084F
Seg 00800-00FFF, 0040 left, need 084F

Sajnos nekem ez semmit nem mond (mármint ami előrébb vinne)
(#) whalaky válasza pbalazs hozzászólására (») Dec 28, 2008 /
 
Sikerült "megoldást" találnom.
A hiba az volt, hogy az összes sorosporton érkező utasítást egyetlen függvénnyel akartam lekezelni, és az kinőtte a szegmens lehetséges méretét.
A megoldás az volt, hogy a különböző típusú utasításokat (set, get, out, cmd stb..) szétdobáltam kisebb fileokba, és már a főprogramban szétválogattam. Így ugyan cipőkanállal, de be lehet tölteni a progit és még műxk is.
Köszönet mindenkinek a segítő szándékért!
W.
Következő: »»   16 / 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