Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   88 / 153
(#) kissi válasza icserny hozzászólására (») Jan 6, 2014 /
 
Csatlakozva icserny kollégához : Nálam MPLAB 8.88-as W7 alatt, de a W7 32bites ( viszont úgy emlékszem használták már tanítványaim 64 bites alatt is! ), az MPLABX is megy az én W7-emen, azzal kapcsolatban nincs infóm a 64 bitesre!
(#) cua válasza kissi hozzászólására (») Jan 7, 2014 /
 
MPLABX megy 64bites W7 alatt is.
(#) Prendick válasza vasy85 hozzászólására (») Jan 7, 2014 / 1
 
C-hez javaslom a MikroC demo-t, kismillió mintaprogram van hozzá és bőséges leírás a parancsokhoz. Ha kinövöd a demo limitet (sok idő), könnyedén válthatsz másra is.

A C-hez ez az alapmű: "A C programozási nyelv B. W. Kernighan - D. M. Ritchie"
Szerintem már hússzor belinkelték ebben a témában, de a neten is pillanatok alatt megtalálható.

Pic16-os assembly utasításkészlet magyarul:
(#) bbb válasza kissi hozzászólására (») Jan 7, 2014 /
 
Sziasztok!

Nálam a 8.88-as MPLAB és a mostani MPLABX is vígan futkározik win7x64 alatt. Felraktam hozzá az XC8 aktuális verzióját és meg vagyok vele elégedve (most speciel PIC12F629-esre írok benne programocskát). Oktatóanyagnak én a gooligum oldalát használom, s eddig meg kell hagyni kiválónak bizonyult.
(#) watt válasza vasy85 hozzászólására (») Jan 7, 2014 /
 
Ki lehet mondani, hogy nálad valami galiba van, mert normál esetben az MPLAB fut minden win7-en.
Másik, hogy a PIC-het a gyári C javasolt. Minden más csak problémát fog okozni! Kérdezni se tudsz, csak olyantól, aki azt használja, olyan meg alig akad...
(#) vasy85 válasza Prendick hozzászólására (») Jan 7, 2014 /
 
Kössz a pdf-et.Nagyon Hasznos!MPLAB 5.7-es nem akart futni nálam. 32bites w7 alatt.Többieknek is kössz a hozzászólást!
(#) watt válasza vasy85 hozzászólására (») Jan 7, 2014 /
 
Miért ilyen kövülettel próbálkozol? Ingyen letölthető a 8.92!
(#) icserny válasza watt hozzászólására (») Jan 7, 2014 /
 
Szerintem azzal próbálkozott, ami a PICkit2-höz kapott telepítő CD-n van.
De alighanem elírás, mert az inkább ver7.5, nem pedig 5.7.
(Abban egyetértünk, hogy nem azzal kellene próbálkozni, mert a PICkit2 mellé adott CD már 7 évvel ezelőtt is elavult volt, amikor én kezdtem foglalkozni vele)
(#) Prendick válasza vasy85 hozzászólására (») Jan 7, 2014 /
 
5.7-est még én se láttam, az még 16 bites Windowshoz készült. Pont lekéstem és a 6.20-assal indult a PIC vonatom.

Inkább ezt kéne leszedni: MPLAB 8.92 Ez menni fog.
(#) kit6263 hozzászólása Jan 9, 2014 /
 
Üdv

HI-TECH C PRO for the PIC18 MCU Family V9.65

Ilyesmivel találkozott már valaki ?
Ha struktúrát akarok inicializálni kiakad !!!
a = { 1,2,3,...}; nélkül működik !

  1. typedef struct
  2. {
  3.         U16 Output;
  4.         U16 Setpoint;
  5.         U16 outMin;
  6.         U16 outMax;
  7. } BANDGAP_CTRL;
  8.  
  9. BANDGAP_CTRL BGap1 = { 1,2,3,4 };       // Error   [800] C:\Users\RENDSZ~1\AppData\Local\Temp\s10s.; 263. undefined symbol "null"
  10. // BANDGAP_CTRL BGap1;
  11.  
  12. void BandGap_Init( BANDGAP_CTRL *p, U16 sp, U16 out, U16 min, U16 max )
  13. {
  14.         p-> Setpoint = sp;
  15.         p-> Output = out;
  16.         p-> outMin = min;
  17.         p-> outMax = max;
  18. }
  19.  
  20. void BandGap( BANDGAP_CTRL *p, U16 in )
  21. {
  22.         if( in <= p-> Setpoint )
  23.                 p-> Output = p-> outMin;
  24.         else
  25.                 p-> Output = p-> outMax;
  26. }
  27.  
  28. void main( void )
  29. {
  30.         BandGap_Init( &BGap1, 100, 0, 0, 100 );
  31.         BandGap( &BGap1, 99 );
  32. }


Ha nem hívok semmit a struct-ra.
Hozzáférek a mezőkhöz, watch is jól mutatja !
A volatile sem segít !
A hozzászólás módosítva: Jan 9, 2014
(#) foxi63 válasza kit6263 hozzászólására (») Jan 9, 2014 /
 
Szia!
Struktúra adattagjait egyesével lehet inicializálni, amit el is végez a " BandGap_Init" függvény.
Tehát elég csak a BANDGAP_CTRL BGap1;
viszont a main függvénybek igy kéne lenneie:

  1. void main( void )
  2. {
  3.         BandGap_Init( &BGap1, 100, 0, 0, 100 );
  4.      while (1)
  5.      {
  6.         BandGap( &BGap1, 99 );
  7.      }
  8. }



üdv. Foxi
(#) kit6263 válasza foxi63 hozzászólására (») Jan 9, 2014 /
 
Ok...tudom...
Minden működik, ha 9. sor helyett a 10. van !
Azért kellene a fordítónak is tudnia inicializálni...nem ???
A fenti kód csak hiba illusztráció !
Piszkálja csőrömet, hogy miért nem tudom lefordítani.
Az a lényeg hogy van egy bonyolult függvény egy csomó paraméterrel (PID szabályozó) 8 féle beállítással. A függvény az átadott paraméter készlet címe szerint kellene, hogy dolgozzon.
Végül is ez a quick and dirty megoldás :

  1. BANDGAP_1_CTRL BGap1[2] = { {1,2,3,4 }, {11,12,13,14} };
  2.  
  3. void BandGap_Init( U8 idx, S16 sp, S16 out, S16 h, S16 l )
  4. {
  5.         BGap1[ idx ].outH = h;
  6.         BGap1[ idx ].Setpoint = sp;
  7.         BGap1[ idx ].Output = out;
  8.         BGap1[ idx ].outL = l;
  9. }
  10.  
  11. void main( void )
  12. {
  13.         BandGap_Init( 0, 100, 0, 0, 100 );
  14. ....
  15. ....
  16. ....
  17. }



Milyen fordítót használsz ?
Próbáld már ki légyszi, hogy nálad feldobja e a Error [800] -at;
(#) kit6263 hozzászólása Jan 10, 2014 /
 
Ilyen a csak mesében van !!!
*
  1. BANDGAP_1_CTRL arrBandGap_1[2] = { { 0, 180, 77, 55 }, { 0, 180, 100, 12 } };
  2.  
  3. void main( void )
  4. {
  5. while( 1 )
  6. {
  7.         BandGap_1( 0, 99 );    
  8. }  // while( 1 )
  9.  
  10. }  // main()

A csatolt képen jól látható, hogy a strukura tömb 0.elemét *ul, mig 1.-t jól inicializélja.
Minden ami cég Micro-val kezdődik ilyen *r ?

Annyi rengeteg szinonima van:
rossz, silány, vacak, csapnivaló, hitvány, gagyi, értéktelen, avétos, gyatra, ergya, ótvar, ócska, pocsék, kommersz, bóvli, borzalmas, borzadály, satnya, fabatkát sem ér, hibás. használhatatlan
stb...
-moderátor-
A hozzászólás módosítva: Jan 10, 2014
(#) potyo válasza kit6263 hozzászólására (») Jan 10, 2014 /
 
Ez pontosan melyik fordító? Már az XC8 néven kiadott, vagy még a régi, Hi-Tech által kiadott?
(#) kit6263 válasza potyo hozzászólására (») Jan 10, 2014 /
 
HI-TECH C PRO for the PIC18 MCU Family V9.65
(#) kit6263 hozzászólása Jan 10, 2014 /
 
Most jól működik...írtam pár változót a struct tömb után és egyszer csak jó lett.
Megáll az eszem !
A múltkor egy call hívás helyett jump-ot fordított. Az egymásba ágyazott if-eket is néha elcsesz, olyan kor összevonom és jó lesz.
Jó kis cucc.
(#) potyo válasza kit6263 hozzászólására (») Jan 10, 2014 /
 
Nekem olyan gondom van az XC8-al, hogy van egy ilyen tömbön:
  1. signed char hiszt[4][2]={ {0, 15}, {2, 10}, {1, 10}, {1, 10} };

Ez csupán arra szolgál, hogy négy hőmérőszenzornál megadja a hiszterézis beállításának alsó és felső határát. Elvileg tehát ezek konstansok, ezért gondoltam, hogy minek foglaljanak ramot, oda tettem elé a const szócskát, hogy tárolja a flash-en. De sajnos rosszul kezeli ezt is, nem analizáltam az asm listát nagyon, de úgy néztem, rosszul kezeli a kódmemória lapozását, amikor innen kellene olvasnia - most jutott eszembe, hogy meg kellene nézni, melyik lapon szerepel ez, és melyiken a kód, ami használná. Jó ideig, nem értettem, mi a gond, aztán levettem a const szócskát, egyből működött az egész. Legjobb lenne define-t használni, viszont ciklusban használom, ezért nem tökéletes megoldás a define sem.
(#) watt válasza potyo hozzászólására (») Jan 10, 2014 /
 
EEPROM-ba esetleg?
(#) potyo válasza watt hozzászólására (») Jan 10, 2014 /
 
Egyelőre nem piszkálom, működik így, ez a nyolc bájt ram foglalás még belefér. Majd ha szűkös lesz a ram, akkor reszelek rajta - most csak kb. 280 bájt foglalt a 368-ból
A hozzászólás módosítva: Jan 10, 2014
(#) watt válasza potyo hozzászólására (») Jan 10, 2014 /
 
Azért szoktam EEPROM-ba tenni ilyesmit, mert kommunikációval átírható. De ha nincs kommunikáció és menü sincs és elég a memória, akkor pont jó ahogy van!
(#) potyo válasza watt hozzászólására (») Jan 10, 2014 /
 
Ezek csak azok az értékek, amik a beállítás alsó és felső határai. Maga a beállított érték az természetesen EEPROM-ban van tárolva. Hiszterézis kicsit hülye példa volt, de pl. padlófűtésből visszatérő víz hőmérséklete ugyanígy van megadva, hogy 20 és 40 fok közé állítható, hogy a felhasználó ne tudjon 70 fokos vizet kérni a hőpumpától.
(#) usane válasza potyo hozzászólására (») Jan 10, 2014 /
 
Hát én már nem tudom mit kellene használni.
A minap a mikroc-t néztem, interrupt leírásban az van, hogy elmenti wreget meg statust, meg még egyebet a különböző PIC típusnál. Belenéztem az asm-be, hát egy darab mentést nem láttam, sem wreg-ről, sem statusról.
(#) potyo válasza usane hozzászólására (») Jan 10, 2014 /
 
Csak nem 18F és magas prioritású megszakítást néztél?
(#) usane válasza potyo hozzászólására (») Jan 10, 2014 /
 
Azt bizony.
(#) potyo válasza usane hozzászólására (») Jan 10, 2014 /
 
Akkor nézd meg az alacsony prioritású megszakításnál is a mentést. A magas prioritásúnál hardveresen van mentve a WREG, STATUS meg azthiszem a BSR - már ahol nem szúrták el a hardvert, és mégis kézzel muszáj menteni, mint pl. a 18F4550-nél.
(#) usane válasza potyo hozzászólására (») Jan 10, 2014 /
 
Pont 18F4550-et néztem
(#) watt válasza potyo hozzászólására (») Jan 10, 2014 /
 
És gondolom a gyári fordító tudja ezt(vagy nem) és úgy fordít, a többi meg nem és akkor mindenki csak néz!
(#) usane válasza potyo hozzászólására (») Jan 10, 2014 /
 
Alacsonyban valóban befordítja a mentést, de hogy magas priotitásban mit csinál hardveresen, az még kérdéses.
(#) potyo válasza watt hozzászólására (») Jan 10, 2014 /
 
Igen, az XC8 pl. tudja, fordítás közben írja, hogy a hiba miatt kerülő megoldást használ. Többi fordítót nem tudom, esetleg lehet, hogy ki lehet választani, mert ez csak az első verziójú chipben volt benne, második verzióban már javítva volt. C18-ban viszont úgy rémlik, hogy úgy kellett megadni a fordítónak kézzel, hogy ezt is alacsony prioritásúként kezelje, és akkor az gondolom nem alkalmazta az errataban megadott gyorsabb megoldást. Bár mondjuk a C18 megszakítási rutin megadása elég ocsmány volt önmagában is azzal az asm betéttel...
A hozzászólás módosítva: Jan 10, 2014
(#) potyo válasza usane hozzászólására (») Jan 10, 2014 /
 
Nézd meg ezt, nem muszáj magas prioritásnál sem menteni direkt a regisztereket, van gyorsabb mód is: Link 4. pont
Következő: »»   88 / 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