Fórum témák
» Több friss téma |
Annyi hiányossága van ennek a módszernek, hogy mivel ez nem hoz létre DATA nevű változót, a szimulátorban nem lehet majd ezen a néven megtalálni (úgy működik, hogy az előfordító kicserélgeti a DATA szavakat DATABits.byte -ra, mint egy szövegszerkesztő a keres-cserél menüben).
Köszi, így már értettem és meg is csináltam korábban, csak a define-s elnevezés nem jutott eszembe, de lehet hogy átírom ( most az asm-el történő megoldást alkalmazom ).
További szép napot! Steve
C18 fordítót használok.
Létrehoztam egy üres main függvényt, és a 4K program memória 56% elhasználódott. Most ott tart a project, hogy 97%-ban van tele a program memória és még nincs kész a program. Mplab X-et használok. Be lehet kapcsolni valami optimalizációt, vagy valamilyen opciót, hogy több helyem legyen és ne 56%-tól kelljen indulnom?
Be lehet kapcsolni az optimalizációt a projekt opcióknál (bár az ingyenes fordítónál csak az -O1 szintű optimalizálás használható). Be kell állítani, hogy "small" memóriamodellt használsz. Tulajdonképpen a gyári *.lib állományt is célszerű volna újrafordítani, mivel az "large" memóriamodellel szokták lefordítani. Ebből konfliktus is lehet, illetve memória-pazarlás. Célszerű DEBUG helyett RELEASE módban készíteni a fordítást, mivel a nyomkövetés is lecsíp egy kicsit a memóriából.
A hozzászólás módosítva: Dec 11, 2012
Elvileg ezek gyárilag be voltak állítva, de azért leelenőriztem.
MplabX-ben nem találom a release/debug beállítást. Merre van?
Sziasztok!
Hogy tudok egy tömbön belüli tömb egyik elemére hivatkozni? Tehát szeretném ha az EEPROM 0x7FF208 címről az adat a 0x08B2 címre kerülne.
A hozzászólás módosítva: Dec 15, 2012
Sziasztok!
Pointerekkel kapcsolatba szeretnék kérdezni, mert most már nem bírom tovább .
A gondom az, hogy a szám helyett az ASCII kód 60-as helyén lévő karaktert írja ki. Nekem pedig a szám kéne, és nem tudok rájönni, hogy hogy kéne csinálni... pedig biztos nem túl bonyolult. Amit szeretnék, az az int és char* közötti konverzió oda-vissza.
Sziasztok!
Szeretnék segítséget kérni. A C fordítóm mindig ezt a hibát küldi: "Error - section '_cinit_scn' can not fit the section. Section '_cinit_scn' length=0x0000009e" Ez a kód mit jelent? Előre is köszönöm a segítséget!
Ami kimaradt, XC8-at használok fordításra.
Először is szögezzük le: a mutató nem arra való, hogy a számértékeket számjegyekké konvertálják, hanem arra, hogy egy memóriarekeszt megcímezzünk vele.
A számértékek szöveggé alakítására az itoa() függvényt lehet használni. Ennek egy lehetséges megvalósítása a K&R könyvben található:
A reverse() függvényre is van recept ugyanott:
Szia!
A program egy (vagy több) darabját nem tudja belepakolni a memóriába. Az XC8 full módon optimalizált programja háromszor hosszabb, mitha assemblyben írták volna, a free modé pedig tizenkészer. A hozzászólás módosítva: Dec 19, 2012
Sziasztok!
Előző oldalakon segítettetek hogy miként tudok pl. függvényeket adott programmemória területre pakoltatni a fordítóval, (C30) de az ott leírtakat nem tudom összehozni constans-okra. Sok karakterláncom van, amit szeretném egymás után a 0x14000 címtől kezdve a prog.memóriába pakolni. Így megy is,
de több változó hosszúságú volna, és nem szeretnék címeket számolni. Próbáltam szekciót létrehozni neki a .gld -ben, de nem megy. Miben más ez, mintha függvényeknek csináltam volna egy szekciót?
Szia Hp41C!
Köszi a választ! Milyen megoldást tudsz javasolni hogy sikerüljön a progit lefordítani?
A linker fájlban kellene megnövelni a "_cinit_scn" méretét szerintem, vagy a globális változókat "udata" területre rakni.
Szia!
- A legkönnyebb, de legdrágább: Megvenni a full optimalizálás licencét (995.00$ / db, az XC8, a XC16 és az XC32 -ért külön-külön ki lehet fizetni), - 60 napig ingyenesen lehet használni a full optimalizálást (egy gépről egyszer), - A program átírását egyszerűbb utasításokra, a függvényeket kevesebb paraméterre, - A program átírását más fordítóra, végső soron assemblyre...
Sajna jól gondoltam! Ez számomra elég drága. A bootloadert szeretném átalakítani.
Sokallom a ledeket. A hozzászólás módosítva: Dec 23, 2012
Siasztok !
Megszületett az elhatározásom a napokban hogy egy kicsit erősebben rákoncentrálok a c programnyelv tanulására. Abban kérnék tanácsokat hogy a pic esetén mik a javaslatok milyen software-ket, és miként konfigurálva próbáljak használni. Jelenleg Az MPLAB-ban próbálnák valamit alkotni nem sok sikerrel. Próbáltam használni a HI-TECH és CCS C compiler plugin-t . De nem jutottem eddig még semmire. PICKIT2-m van .A Project Wizard-al tettem meg az első lépéseket elvileg gond nélkül,de a továbbiakban nem igazán tudom mit kezdjek. A c programozásból némi alapot már összeszedtem csak ebben a program nem tudtam kiigazodni.
Szia! Én Kónya László könyvének a harmadik kiadásával kezdtem. Alapnak elég jó.
A hozzászólás módosítva: Dec 26, 2012
Azt én is tanulmányozgattam párszor. Nekem igazán a fejlesztőkörnyezet okoz gondot.
Gondoltam hogy a A gyártó oldalán lévő programmal csak jutok valamire. De eddig csak szivatott hol ilyen hol olyan hibával kiál. Szintúgy az égetővel. Már freamware-t is frissítettem benne. Égetni akármikor tudok vele. De a compiler és debug-olás hibádzik. A kontrollerem include file-jával is baja van stb. Ezekhez képes az atmel cég avrstudio-ja sokkal használhatóbbnak tűnik. A hozzászólás módosítva: Dec 26, 2012
Mi a baja az include fájlal? HTC esetén ha jól emlékszem a htc.h-t kell beágyazni minden esetben, a fordításkor automatikusan definiálja a kiválasztott MCU-t az MPLAB, és majd a htc.h behúzza ami kell.
Használj C18/C30/C32-t, ezek a hivatalos fordítók. A HTC és CSS third party. Idézet: „A HTC és ... third party” Nem is olyan régen a Microchip megvásárolta a HiTech pic fordítót és XC8 néven forgalmazza (jó drágán). A C18 "jogutódja" az XC8, a C30 -é a XC16, a C32 -é az XC32...
Erről akkor lemaradtam, azt hittem az XC8 a C18 átdolgozása. Kösz a kiigazítást!
Valójában az XC8 a Hitech C 16F és a C18 összevegyítése...
Idézet: „Abban kérnék tanácsokat hogy a pic esetén mik a javaslatok milyen software-ket, és miként konfigurálva próbáljak használni. Jelenleg Az MPLAB-ban próbálnák valamit alkotni nem sok sikerrel.” Ha rám hallgatsz, akkor nem PIC platformon próbálod elsajátítani a C programozás rejtelmeit, mert ezzel csak fölöslegesen nehezíted meg a feladatodat. Érdemes előbb PC-n megtanulni a C programozást, ahol nagyon kényelmes debuggolási lehetőségek vannak, és utána megnézni a PIC-ekhez való fordítókat és környezeteket.
Szereztem némi előképzettséget a pc-s c programozásból. Több órás videók formájában amit egy tanár tart. Na meg olvasgattam is utána pl: Kónya. Aztán próbálgattam kicsit a flowcode-ot ami szintén c-re alapul és talán a hi-tech c compiler-re van építve (csak feltételezés). De azt láttam hogy ott is elég behatároltak a lehetőségek. Ezért úgy döntöttem sokkal szabadabb kezet kapok ha közvetlenül én készítem a forráskódot.
Időközben csak addig variáltam az include file-okat stb. hogy felvillantottam egy kiszemelt ledet Összeállításom: MPLAB IDE v8.88 , HI-TECH C Compiler for PIC10/12/16 MCUs 9.80 , PICKIT2 , és egy pic16f877a A hozzászólás módosítva: Dec 26, 2012
Nem epp iskolas fejjel, de felig-meddig kenyszerusegbol el kellenne elsajatitanom a C programozasi nyelvet. Mivel nem hobbycelra lenne, ezert jelenleg egy chipkit MAX32-n gyakorolgatok megoldani meresi-vezerlesi szituaciokat. Amennyire eddig latom az arduino nyelv egyszeru, de elegge behatarolt, es bizonyos helyzetekben nekem nagyobb sebessegre lenne szuksegem ezert is latom szuksegesnek a C nyelvet hasznalni.
Jelenleg meg nem vilagos melyik C forditot tudom hasznalni a fennt emlitett PIC-hez (ami tulajdonkepp egy PIC32MX795F512 chipre epult). Tudom-e hasznalni a HiTech forditojat, akar korlatozasokkal, vagy valamilyen masra lesz szuksegem. Tudom ott az XC32, de az meg nem tiszta a szamomra, hogy mifele hatrany er ha a free verziojat hasznalom, azaz 25% az optimalizacios szintje vs a std 50%-aval illetve a PRO 100%-aval. |
Bejelentkezés
Hirdetés |