Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   106 / 153
(#) watt válasza Poostmaster hozzászólására (») Szept 29, 2014 /
 
Programból nem. Adj nekik nagyobb feszt...
(#) potyo válasza watt hozzászólására (») Szept 29, 2014 /
 
Vagy csak kisebb előtétellenállást és így nagyobb áramot.
(#) watt válasza potyo hozzászólására (») Szept 29, 2014 /
 
Jogos...
(#) usane hozzászólása Szept 29, 2014 /
 
Hello!

XC8 telepítésekor van az "update existing c18 project" opció.
Be szoktátok kapcsolni? Mit rondít el ha bekapcsolom. A leírás azt mondja az XC8-at fogja használni C18 kompatibilis módban. Ez mit jelent? Mennyire kompatibilis?
A hozzászólás módosítva: Szept 29, 2014
(#) potyo válasza usane hozzászólására (») Szept 29, 2014 /
 
Elméletileg teljesen kompatibilis. Gyakorlatilag meg azért a C18 az jobban optimalizált emlékeim szerint, mint az XC8. Fordulni úgy rémlik, hogy fordult a régi projekt is az XC8-al probléma nélkül.
(#) usane válasza potyo hozzászólására (») Szept 29, 2014 /
 
Értem, akkor elvileg megy, de ha lehet nem keverem össze. Feláll a hátamon a szőr az ilyen csalamádés dolgoktól.
(#) izenahogyishivnak hozzászólása Szept 30, 2014 /
 
Elfelejtettem, hogy kell azt csinálni, hogy van egy pl. var változóm, ami 16 bites. El szeretném érni az alsó és felső bájtját is a következő módon: var.hi, var.lo Ez működik. Viszont a 16 bitesen nem szeretném a var.value -t használni, csak a "var"-t. Ebben kérném a segítséget.

  1. union{
  2.        struct{
  3.         unsigned char lo;
  4.         unsigned char hi;
  5.        };
  6.        struct{
  7.         unsigned int value ;
  8.        };
  9.     }var;
  10.  
  11.     var.hi=8;
  12.     var.lo=7;
  13.     var.value=0x1234; // helyett var=0x1234 -et szeretnék itt használni
A hozzászólás módosítva: Szept 30, 2014
(#) watt válasza izenahogyishivnak hozzászólására (») Okt 1, 2014 /
 
Szia! Erre gondolsz?
  1. typedef union{
  2.  unsigned int value;
  3.     struct{
  4.        unsigned char lo;
  5.        unsigned char hi;
  6.     };
  7. }var_type;
  8.  
  9. //pélányosítás
  10. var_type var;
  11. #define var_int var.value
  12.  
  13. var_int=0x1234;
A hozzászólás módosítva: Okt 1, 2014
(#) izenahogyishivnak válasza watt hozzászólására (») Okt 1, 2014 /
 
Én úgy emlékeztem, hogy ezt 1 lépésben az unionon belül valahogy meg lehet oldani #define var_int var.value nélkül, de lehet, sőt valószínű, hogy rosszul emlékszem.

Mindegy, ez a megoldás is jó, köszi!
A hozzászólás módosítva: Okt 1, 2014
(#) watt válasza izenahogyishivnak hozzászólására (») Okt 1, 2014 /
 
Meg lehet, de akkor nem típust deffiniálsz, amit sokszor lehet példányosítani, hanem sima uniont és alatta ott lehet a define is. Az direkt uniontos deklarálás megoldást nem teheted h-ba, hanem csak c-be, de lehet, hogy rosszul emlékszem. Ennek több előnye van, több c-ben tudod példányosítani a típust, ha nem csak egy c állományod van és több helyen hasonló struktúra kell, illetve könnyű mozgatni más projectekbe. Leginkább flageknél előnyös, de bármikor jól jöhet ez a módszer.
A hozzászólás módosítva: Okt 1, 2014
(#) Poostmaster válasza potyo hozzászólására (») Okt 2, 2014 /
 
Köszönöm.
(#) usane hozzászólása Okt 2, 2014 /
 
Hello!

Akadt egy kis gondom. Illetve csak kérdés. Ha a főprogramban definiálok valamit (#define) akkor azt nem kellene átvennie a header fájloknak is? Kicsit régen hsználtam a C-t, ha lehet asm-ben programozok, de muszáj leszek visszaszokni. USB kommunikáció macerás asm-ben és az egyéb a projekthez tartozó MC könyvtárak is C-ben vannak.
(#) watt válasza usane hozzászólására (») Okt 2, 2014 /
 
Nem. Ha azt akarod, hogy több helyen is látható legyen, készíts egy közös headert és include-old be mindegyik c-be amiben használni akarod. Ebbe a h-ba mehetnek a PIC-re vonatkozó inc-ek is, ha mindegyikbe becsatolod.
(#) usane válasza watt hozzászólására (») Okt 2, 2014 /
 
Rendben, köszönöm.
(#) potyo válasza usane hozzászólására (») Okt 2, 2014 / 1
 
Alapvetően minden .c fájlt külön fordít a fordító, azért a #define csak az utána következő sortól kezdve létezik. Az include meg kb. úgy működik, hogy az #include "xxx.h" helyére bemásolja a fordító az xxx.h tartalmát, és úgy fordítja a .c fájlt. Ha a .h fájlban ott van a define, akkor a fordító látni fogja, ha nincs, akkor nem. Így már gondolom érthető, hogy miért nem létezik az a define másik forrásfájlokban.

Olyat lehet csinálni, hogy a projekt beállításainál adsz meg define-t, akkor az minden forrásfájlban létezni fog.
(#) usane válasza potyo hozzászólására (») Okt 2, 2014 /
 
Értem. Sajnos a fordító lelkivilágát annyira nem ismerem. Akkor még egy kérdésem van a leírtakkal kapcsolatban. Mi van, ha a #define az #include előtt van? Akkor beleszámolja a headerbe vagy nem, mert ugye akkor a "bemásolt" programlészlet már utána van? Nem próbáltam ki csak kérdezem.
(#) watt válasza usane hozzászólására (») Okt 2, 2014 /
 
Nem értem a kérdést.
(#) usane válasza watt hozzászólására (») Okt 2, 2014 /
 
Idézet:
„Alapvetően minden .c fájlt külön fordít a fordító, azért a #define csak az utána következő sortól kezdve létezik. Az include meg kb. úgy működik, hogy az #include "xxx.h" helyére bemásolja a fordító az xxx.h tartalmát”

Általában az #include-okat szoktuk előre írni. Arra vonatkozott a kérdés, mi van ha fordítva van és a #define előbb van.Közben akadt időm kipróbálni, így működik.
(#) CHrissDock hozzászólása Okt 2, 2014 /
 
Sziasztok!
Tudna nekem valaki segíteni pic16f84-re kellene egy pic16f688-as programot átírni....Megoldható?
(#) Hp41C válasza CHrissDock hozzászólására (») Okt 2, 2014 /
 
Mit is csinál az a program? Kell-e a működéséhez 4k szó program memória, 256 byte RAM és EEprom, A/D átalakító, komparátor és a timer1. A 16F84 1k szó program memóriával, 64 byte RAM -mal és EEprom -mal rendelkezik.
(#) killbill válasza usane hozzászólására (») Okt 2, 2014 /
 
Igen, akkor "beleszamolja". Pontosan, mert elobb van a #define, utana az, ami az include-olt file-ban.
(#) watt válasza usane hozzászólására (») Okt 3, 2014 /
 
A fordító sorban veszi a szövegeket, teljesen érthető módon. Az include semmi mást nem csinál, mint szöveget szúr be, mint ha helyette oda írtad volna ami a fájlban van. Tehát ha ez elé bármit írsz, az hamarabb lessz értelmezve, azaz él.
(#) usane hozzászólása Okt 3, 2014 /
 
Akadt egy újabb kérdésem. Nem szeretem, ha minden össze van ömlesztve ezért külön include könyvtárat használok. Addig nincs is baj amíg főkönyvtáras header fájlt kell behívni, de akadt olyan MC-s ami ujabb könyvtárban van és meghívja egy másik header file. Tudok valamit kezdeni vele, vagy ömlesszem a fő project könyvtárba és ott megtalálja.
Érthetőség kedvéért.
#include "Includes/xy.h" -ezt hívom meg.
De ha ebben van pl: #include "valami/ezmegaz.h" akkor ha a valami könyvtárat az Includes könyvtárba teszem nem találja meg. Hiába adtam meg az MpLab X-nek a header fileokat akkor sem.
(#) watt válasza usane hozzászólására (») Okt 3, 2014 /
 
A beállításoknál kell megadni az összes path-ot! (zöld kis fogaskerék ikon)
(#) usane válasza watt hozzászólására (») Okt 3, 2014 /
 
Hogy ez nem jutott eszembe. Az includes-t megadtam, de az Includes/valamit nem.
Köszönöm, így megtalálja.
(#) watt válasza usane hozzászólására (») Okt 3, 2014 /
 
Minden kezdet nehéz. Nem a C nehéz, hanem ez a sok hűhó!
(#) usane válasza watt hozzászólására (») Okt 3, 2014 /
 
Az bizony. Nem szoktam az MC-s könyvtárakat használni, de most egyszerűbb mint megírni a saját algoritmusaimat, bár már kezdek benne kételkedni , már a hajam égnek áll tőle, hogy hol ebbe hol abba fájlba kell belenyúlni, vagy épp kihámozni mi micsoda.
(#) watt válasza usane hozzászólására (») Okt 3, 2014 / 1
 
Egyetértünk. Nemrég I2C rutinokat írtam meg "újra", mert lazán belefagy a gyáriakba a folyamat, ha leszakad egy eszköz a vonalról. Szinte semmit nem használok a gyáriakból, kivéve a matekos dolgokat, de az más. Így sem érzem, hogy lassabb haladni, mint asm-ben, mert ráadásul gyorsabb!
(#) usane válasza watt hozzászólására (») Okt 3, 2014 /
 
Na most pont azzal szívok. PIC32-re van konfigurációs fájl, de nekem PIC18-ra kellene. Most bogarászom az xc32 i2c headerjeit, hogy hogy tudom átírni PIC18-ra. Azt hiszik mindenki PIC32-re fejleszt beszélni tudó, önjáró, kávét főző, sört odahozó stb.. cuccokat?
(#) watt válasza usane hozzászólására (») Okt 3, 2014 /
 
A gyáriakból indultam ki, csak kiegészítettem timeoutokkal. A gyáriak is működnek, csak fapadosak. Találtam gyári példaprogramot is régebben, előkeresem, ha megvan felteszem...
Meg is van:
A hozzászólás módosítva: Okt 3, 2014

AN991b(1).zip
    
Következő: »»   106 / 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