Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   66 / 153
(#) kissi válasza benjami hozzászólására (») Dec 7, 2012 /
 
Így van, köszönöm a segítségedet!

Steve
(#) benjami válasza kissi hozzászólására (») Dec 8, 2012 /
 
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).
(#) kissi válasza benjami hozzászólására (») Dec 8, 2012 /
 
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
(#) Amarton hozzászólása Dec 11, 2012 /
 
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?
(#) icserny válasza Amarton hozzászólására (») Dec 11, 2012 /
 
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
(#) Amarton válasza icserny hozzászólására (») 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?
(#) AZoli hozzászólása Dec 15, 2012 /
 
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.

  1. union uW
  2. {
  3.         struct
  4.         {
  5.                 unsigned int min;               //Alsó limit
  6.                 unsigned int max;               //Felső limit
  7.                 unsigned blinkMark:1;   //Háttér villogás
  8.                 unsigned warnLamp:1;    //Warn. lámpa
  9.                 unsigned timeOut:14;    //Ennyi ideig át kell lépnie az alsó v. felső limitet a jelzéshez
  10.                 unsigned markTime:8;    //Ennyi ideig kell jelezni
  11.                 unsigned againTime:8;   //Ennyi idő múlva újra jelzés
  12.                 unsigned int *address;  //A vizsgált adatunk címe
  13.         } stW ;
  14.         unsigned int uWar [5]
  15. };
  16.         union uW WarningArray [12];
  17.  
  18. TBLPAG = 0x7F;
  19.   Itt szeretném ha WarningArray 0. elemében uWar 0. eleme = __builtin_tblrdl (0xF208);
A hozzászólás módosítva: Dec 15, 2012

Wa.jpg
    
(#) _vl_ válasza AZoli hozzászólására (») Dec 15, 2012 / 1
 
  1. WarningArray[0].uWar[0]
(#) AZoli válasza _vl_ hozzászólására (») Dec 15, 2012 /
 
Köszi, ez gyors volt..
(#) nagzso hozzászólása Dec 19, 2012 /
 
Sziasztok!
Pointerekkel kapcsolatba szeretnék kérdezni, mert most már nem bírom tovább .
  1. int a = 60;
  2. char* ptr;
  3.  
  4. ptr = (char*)(&a);
  5.  
  6. lcd_write_string(ptr);

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.
(#) Topika hozzászólása Dec 19, 2012 /
 
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!
(#) nagzso válasza nagzso hozzászólására (») Dec 19, 2012 /
 
Ami kimaradt, XC8-at használok fordításra.
(#) icserny válasza nagzso hozzászólására (») Dec 19, 2012 /
 
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ó:
  1. /* itoa:  convert n to characters in s */
  2.  void itoa(int n, char s[])
  3.  {
  4.      int i, sign;
  5.  
  6.      if ((sign = n) < 0)  /* record sign */
  7.          n = -n;          /* make n positive */
  8.      i = 0;
  9.      do {       /* generate digits in reverse order */
  10.          s[i++] = n % 10 + '0';   /* get next digit */
  11.      } while ((n /= 10) > 0);     /* delete it */
  12.      if (sign < 0)
  13.          s[i++] = '-';
  14.      s[i] = '\0';
  15.      reverse(s);
  16.  }


A reverse() függvényre is van recept ugyanott:

  1. #include <string.h>
  2.  
  3.  /* reverse:  reverse string s in place */
  4.  void reverse(char s[])
  5.  {
  6.      int i, j;
  7.      char c;
  8.  
  9.      for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
  10.          c = s[i];
  11.          s[i] = s[j];
  12.          s[j] = c;
  13.      }
  14.  }
(#) nagzso válasza icserny hozzászólására (») Dec 19, 2012 /
 
Köszi szépen, működik.
(#) Hp41C válasza Topika hozzászólására (») Dec 19, 2012 /
 
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
(#) AZoli hozzászólása Dec 22, 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,
  1. const unsigned char __attribute__((address(0x14000))) tomb_nev [] = {'a','b','c'};

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?
(#) Topika válasza Hp41C hozzászólására (») Dec 23, 2012 /
 
Szia Hp41C!
Köszi a választ! Milyen megoldást tudsz javasolni hogy sikerüljön a progit lefordítani?
(#) Stefan válasza Topika hozzászólására (») Dec 23, 2012 /
 
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.
(#) Hp41C válasza Topika hozzászólására (») Dec 23, 2012 /
 
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...
(#) Topika válasza Hp41C hozzászólására (») Dec 23, 2012 /
 
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
(#) ZsoltyFM hozzászólása Dec 26, 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.
(#) Topika válasza ZsoltyFM hozzászólására (») Dec 26, 2012 /
 
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
(#) ZsoltyFM válasza Topika hozzászólására (») 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
(#) Stefan válasza ZsoltyFM hozzászólására (») 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.
(#) Hp41C válasza Stefan hozzászólására (») Dec 26, 2012 /
 
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...
(#) Stefan válasza Hp41C hozzászólására (») Dec 26, 2012 /
 
Erről akkor lemaradtam, azt hittem az XC8 a C18 átdolgozása. Kösz a kiigazítást!
(#) Hp41C válasza Stefan hozzászólására (») Dec 26, 2012 /
 
Valójában az XC8 a Hitech C 16F és a C18 összevegyítése...
(#) _vl_ válasza ZsoltyFM hozzászólására (») Dec 26, 2012 /
 
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.
(#) ZsoltyFM válasza _vl_ hozzászólására (») Dec 26, 2012 /
 
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
(#) Saggitarius hozzászólása 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.
Következő: »»   66 / 153
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