Fórum témák
» Több friss téma |
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!
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:
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.
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...
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!
Miért ilyen kövülettel próbálkozol? Ingyen letölthető a 8.92!
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)
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.
Ü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 !
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
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:
üdv. Foxi
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 :
Milyen fordítót használsz ? Próbáld már ki légyszi, hogy nálad feldobja e a Error [800] -at;
Ilyen a csak mesében van !!!
*
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
Ez pontosan melyik fordító? Már az XC8 néven kiadott, vagy még a régi, Hi-Tech által kiadott?
HI-TECH C PRO for the PIC18 MCU Family V9.65
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.
Nekem olyan gondom van az XC8-al, hogy van egy ilyen tömbön:
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.
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
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!
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.
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.
Csak nem 18F és magas prioritású megszakítást néztél?
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.
É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!
Alacsonyban valóban befordítja a mentést, de hogy magas priotitásban mit csinál hardveresen, az még kérdéses.
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
Nézd meg ezt, nem muszáj magas prioritásnál sem menteni direkt a regisztereket, van gyorsabb mód is: Link 4. pont
|
Bejelentkezés
Hirdetés |