Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Mostmár tényleg segítsen valaki. Többször megpróbáltam már kijavítani és lefordítani a programot. Mindig hibaüzenetként irja kia a force HW-t. Próbáltam SW vel de ugy meg nem müködött az órám. Feltöltöm az összes fájt, kérlek valaki nézze már meg és ha tudja fordítsa le. Annyi változtatás kellene, hogy a main.c-ben a 197 sorban a hőmérsékletnél nem -5 hanem csak -3 kellene. Ez nem is lenne gond, de a ccs complierrel nem tudom lefordítani.
Üdv,
Parancsolj, a mellékletben megtalálod a lefordított projectet, ja és a 197. sorban kijavítottam az 5-öt 3-ra. A hozzászólás módosítva: Júl 30, 2013
nagyon köszönöm!!!
És el tudnád mondani, hogyan kellett?
Force_HW-hoz azokat a lábakat kell beállítáni, amin a PIC SCL, SDA vonalai vannak (C3 és C4 nem B4, B5!)
Üdv,
Nem volt vele sok tennivaló, annyit kellett beiktatnom, hogy FORCE_SW, ez megoldja a problémát.
A FORCE_SW-t én is próbáltam, de akkor nem irta ki a hőmérsékletet. Azért kipróbálom ezt ami le lett fordítva. Tudom, hogy a PIC lábai nem azok de azokat javítva sem müködött az óra próbáltam (sőt egy sor hibaüzenetet irt ki forditás közben ha megváltoztattam a lábakat). Nekem ez teljesen rejtély.
Megtudod mondani a fordító verzió számát? Nekem nem jelzett hibát fordítás közben, igaz, hogy még elvégeztem egy módosítást, ugyanis az include fájloknál azokat amiket te hoztál létre nem <> így jelöltem, hanem idézőjelek közé tettem, vannak fordítók amik csak ezt hajlandók elfogadni.
Csatolom a beégetett hex fájlt, ami tökéletesen müködik, csak 2 fokkal többet mutat a hőmérséklet kijelzésnél
Ezek szerint azzal a hex-el amit fordítottam már megy az óra?
nem azzal még nem tudtam kipróbálni, csak délután égetem be , mert dolgozok. Majd 4 után kipróbálom és irok, De FORCE_SW-vel nem müködött, bár lehet az include fáljoknál való módosítással menni fog. majd irok
Üdv Gyimate!
Köszi a fordítást, remekül müködik!!! Tényleg csak a "" jel volt a probléma? Nem tudom elhinni, hogy ennyi az egész. Nekem a FORCE_SW-vel nem müködött, de lehet ez az idézőjeles probléma miatt. Mivel fordítottad? Még egyszer kösz: Ati
Üdv,
Örülök, hogy segíthettem, én a CCS 4.130-as verziót használom, nekem eddig remekül bevált. Az igazság az, hogy ahogy megláttam azt, hogy az #include-okban ilyen jeleket használtál : <>, rögtön átírtam idézőjelekre reflexből, volt már pár érdekes tapasztalatom hasonlóval, igaz, hogy akkor windowsra írtam a programot és ott jött elő a hiba, de gondoltam ez is C az is C volt... Ha esetleg másban is tudok segíteni, csak szólj! A hozzászólás módosítva: Júl 31, 2013
Kipróbáltam a CCS 4.130 -al. Tényleg jobb. Minden további nélkül lefordította. Azért az idézőjeles tanácsodat megfogadtam.
Kösz mégegyszer!
Helló mindnenki!
Egy PIC et szeretnék összekötni a PC -vel. USB-HID kapcsolathoz kellene egy vid meg egy hid. Ha minden igaz ezt a CCS -ben kell valahol beállítani. Valaki meg tudná mondani hol lehet ezt megtenni? Előre is köszi!
Üdv,
A példaprogramok között találhatsz példaprogramokat USB HID eszközök létrehozásához, én is annó onnan vettem az alap függvényeket, csak átalakítottam az igényeimhez. Ha szükséged van rá, akkor elküldhetek neked egy egyszerű programot, amit a számítógép sorosportként fog értelmezni.
Gyimatae!
Ez engem is érdekelne! Előre is köszönöm.
Sokat segítenél ,ha elküldenéd!
A példa programokkal az a gondom ,hogy nagyon sok összevisszaságot látok mindnek az elején, amivel nem tudok mit kezdeni. Esetleg a HID megoldáshoz nincs példád?
Ez egy virtuális COM portot hoz létre a számítógépben, szükséges a működéséhez, hogy telepítsük a drivert, amelyet a C:\Program Files (x86)\PICC\Drivers\NT,2000,XP,VISTA,7 mappában találunk meg. Nem megyek bele most a részletekbe, de ha érdekel titeket, hogy lehet átírni a kódot úgy, hogy például egy egeret lásson a gép szívesen elmondom azt is, csak sajnos most nincs túl sok időm belemenni a részletekbe.
Sziasztok!
PIC18F46K22 pic be szeretnék két soros portot használni.Ez elvileg nem nagy cucc mivel van benne 2 hardveres port. Müködk is ISR-t használok a két olvasására ,de idönként az egyik uart port befagy azaz nem fut ki az ő IT vektorára ,de a mésik az jól müködik és nem tudom hogy hol keresgessem a problémát. Ujra inditom a PIC-et(reset) akkor megint jó 1 darabig.(akkor jön elő a hiba ha tul sok adatot küldök neki a PC-ről) ....
Nem az a gond, hogy itt
túlindexeled a tömböt és ezzel felülírsz valami mást? Kicsit lejjebb akkor nullázod a tomb_pointert, amikor az már hattal egyenlő, viszont a buffer_PC csak 0..4 között indexelhető. A hozzászólás módosítva: Aug 15, 2013
Igen törlöm a tomb_pointer_PC hogy ne tudjam tultölteni,de meg van a probléma,vagy is" én vagyok"mert ugye a C6 C7 porton van a uart pin-je és ugy gondoltam hogy a TRIS regisztert automatikusan beállitja a CCSC ha dekralálom az uart portot .Ez igaz is lehet csak közben a C0-C5-ig használom kimenetnek és ha irok a C PORTRA akkor byte(8 bit maszkolva) formában irok rá és a CCSC automatikusan átirja a TRIS regisztert kimenetre .Vissza kellett állitani bemenetre és már is jól müködik.:bonkOkulásul másoknak ).Csak 2 napot szenvedtem vele és pont az alapokat nem néztem meg.
Sziasztok!
Van egy egyszerű programom. Az lenne a kérdésem hogy miért van az, hogy néha a RB1 es kimenetem magas szinten marad. Ez a jelenség nagyon ritkán de előfordul. Annyi a lényeg hogy a progi egy gombnyomás után nagyjából 20s-ig magas szinten tartja az RB1 et aztán kikapcsolja.
Próbáltam switch helyett if(i==38)......, akkor is maradt már magas szinten. Van valakinek ötlete, hogy mitől van ez a bizonytalanság? A hozzászólás módosítva: Aug 15, 2013
Szia
Írd azt hogy
A hozzászólás módosítva: Aug 16, 2013
Olyankor lehet, amikor még a vizsgálat és j=false előtt beesik a timer megszakítás.
Szia!
Meg kell nézni az assembly kódot. Ez csak akkor lehet, ha a switch(i) és a case 38: vagy az if(i==38) többször olvassa ki a i értékét. Az i változó egy többértékű szemafor, amit két folyamat állít / vizsgál. A vizgálatnak és a beállításnak primitív műveletnek kell lennie - azaz a megszakítás nem választhatja szét a művelet lépéseit. A megszakítási rutinban ez automatikusan teljesül, de a főprogramban lehet, hogy nem teljesül. Ha a fordított assembly listában nem teljesül a megszakíthatatlanság, akkor ezt a részletet GIE = 0 és GIE = 1 közé kell tenni. Egyszerűbb az élet, ha i helyett egy bináris szabafort / jelzőbitet használsz, amit a megszakítási rutin állít be, ha i == 38. A főprogram figyeli a jelzőbitet, ha 1, akkor kikapcsol és törli a jelzőbitet. A törlést egy BCF utasításra kellene fordítani... A hozzászólás módosítva: Aug 16, 2013
Szia!
Sajnos lövésem sincs az ASM-hez. Csatolom a ASM es output fájlt ebbe találtam olyasmit amit írtál. Nézd már meg légyszíves hogy az van e benne aminek kell?. De mindenesetre megpróbálom amit mondtál hogy i helyett mást rakok be. Ha esetleg leírnád hogy CCS nyelven hogyan írjam át úgy hogy a GIE=0 és GIE=1 közé essen az is jó lenne, mert legalább tanulnék belőle. Mert tényleg ritkán fordul elő hogy beragad a kimenetem, de sose szabadna neki mert ha egyszer is beragad az baj lesz . Köszi a segítséget.
Sziasztok! Most kezdtem el a C-nyelvű PIC programozást, eddig assemblerben programoztam, de most elakadtam a C-vel. Azt hogyan tudom C-ben megvalósítani, hogyha vizsgálok egy gombnyomást if-fel, akkor ha nem nyomták le a gombot, akkor visszaugorjon az if-hez, és ezt addig csinálja, amíg a gomb meg nem lessz nyomva? Assemblerben ezt egy egyszerű Goto $-2 utasítással elintéztem, de C-ben nem tudom, hogy ezt hogyan tudnám megoldani. Előre is köszönöm a segítséget.
Ne if-el vizsgáld a gombot, hanem egy "while" ciklussal! Így addig nem megy tovább a program, míg meg nem lett nyomva a gomb.
Köszönöm a segítségedet, tökéletesen működik a progi
|
Bejelentkezés
Hirdetés |