Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Használd a #separate direktívát.
Nagyon hasznos.
Üdv mindenkinek!
Már fél napja kinézem a szemem és nem látom mi a hiba. Topi mester féle dcf dekódolóval küzdök, de a paritás ellenőrzés valahogy nem kakar összeállni.
és a kimenet: DCF bit 19 - 0 DCF bit 20 - 1 --- start --- Start bit OK DCF bit 21 - 0 DCF bit 22 - 1 DCF bit 23 - 1 DCF bit 24 - 0 DCF bit 25 - 1 DCF bit 26 - 0 DCF bit 27 - 0 DCF bit 28 - 1 ParityOK = 0 Min CRC ERROR - 4 (b+parity_cou) mod 2 = 0, b = 1, parity_cou = 3 DCF bit 29 - 1 DCF bit 30 - 0 Valamit nem látok..... de mit?
OK, ne keressétek, meggyógyult.
![]() Hogy mitől azt ne kérdezzétek, mert fogalmam nincs, a sokadik build után egyszercsak jó lett.. ![]()
Annak ellenére, hogy neked működik, sajnos a Topi mester féle dekódoló nem jó. Innen látszik, hogy a paritásbitet nem jól kezeli. Topi mester szerintem nem próbálta ki a függvényét és sajnos így lökte oda a koncnak a többieknek. De hát, mint tudjuk, minden ingyen programban van legalább egy hiba szívatásnak.
Hali mindenkinek!
Segítséget szeretnék kérni. Pic 16f88 programozok ccs compillerrel. A fordítás a programozás minden rendben megy, azonban bármilyen .h fájlt hozzáadok a projecthez egyből hibaüzeneteket ordibál a fordító. PL stdlib.h csatolása is hibát okoz.
A project ablakban töröld ki a 16F88.h filét, mert kétszer akarja includolni a programodba.
Ugyanez a hibája a stdlib.h esetében is. Elég ha te includolsz.
Sziasztok!
A Topi féle DCF77 dekódoló rutin szerintem ötletes, elegáns. Egy kis átfésülés után nekem a teljes adatfolyamot kifogástalanul visszafejti. Íme:
sysy!
A válasz gomb sajna nem működik... Tehát : Töröltem a projectből az include fájlokat, de sajna így sem jó... Az MPLAB 8.1 van fenn, meg a plugin, és a 4.108-as verzió
Küld el magánban a projectet, mert annak működnie kell.
(ha nem titkos)
Köszönöm válaszod ki tudnád nekem kicsit fejteni, hogy mit is jelent ez a parancs és hogyan kell használni?
A C fordító szegmensekben helyezi el a ROM-ban a programot. Ha valamelyik (vagy több) függvényed nem fér már bele az adott szegmensbe, akkor szokott ilyen hibákat írni, hogy nincs elég memória. A #separate utáni függvényt áthelyezi egy másik szegmensbe. Sajana ez több stackot igényel, de szokott működni. A hibaüzenetből néha rá lehet jönni, hogy melyik függvénye(i)d nem fér bele a memóriába. A prototipusoknál is a direktívával együtt kell leírni a függvény nevét, ha prototipust használsz. A hatásköre arra a függvényre vonatkozik, ami rögtön alatta van. Engem néha kihúzott a sz@rból. Ha ez sem segít, akkor fogadd meg az icserny fórumtársunk javaslatait.
Használata: #separate void függvény() { ... ... ... }
Köszönöm, már megfogadtam kicsit össze nyomtam a programot így már bele-bele fér, de ezt is nagyon jó tudni amit ti javasoltatok biztosan alkalmazni fogom.
Sziasztok!
Szeretnék egy LED fényerejét PWM-el vezérelni, úgy hogy folyamatosan növekedjen a fényerő. Tudnátok segíteni, hogy hogyan csináljam? Már írtam egy keveset, de nem tudom hogyan hivatkozzak egy kimenetre.
Köszönöm a segítséget!
Jelenleg csak 25% -ig növeled a kitöltési tényezőt. A változó legyen "unsigned int16" és a ciklusban 1024-ig engedd fel. Ha a delay túl nagy, lehet hogy túl lassan fut fel, ha túl kicsi, akkor nem is látod mi történik. A FOR ciklus elé írj egy olyat, hogy "i=0;" különben csak egyszer fog lefutni. Egyéb hibát én nem látok, itt máshogy nem kell a kimenetre hivatkozni -csak biztosan azon legyen a LED.
Köszi a segítséget, de még mindig nem tudom, hogy hogyan hivatkozzak a LED-re mondjuk ha azt a D0-ás portra akarom tenni?
A ledet muszáj a CCP1 lábra tenned, ha a hardveres pwm-et akarod használni. Vagy esetleg CCP2 láb, de akkor azt a modult kell a kódban beállítanod (gondolom setup_ccp2 és set_pwm2_duty kellene)
Köszi szépen a segítséget mindkettőtöknek működik!
Ha lineárisan növeled a kitöltést, az nem lesz jó, mert a szemünk nem lineárisan növekvőnek érzékeli a fényerőt. Bár nem PIC, de az MSP430 mikrovezérlőkről szóló cikksorozatomba érdemes belenézni, mert a PWM hardveres támogatással c. részben ismertetek olyan algoritmust (Rusty Haddock nyomán), ami négyzetesen növekvő/csökkenő kitöltést állít elő szorzás és osztás nélkül (a négyzetszámokat a páratlan számok felösszegzésével, a skálázást pedig léptetéssel oldjuk meg).
Szia!
Ebben igazad van mert elég furcsa lett a fényerő növekedése, ilyen ugrálás szerű. Belenézek abba amit küldtél. Igazából RGB LED vezérlést szeretnék csinálni, találtam is egy példaprogramot hozzá (szoftveres PWM) ezzel kínlódok. Köszi a segítséget.
Üdv!
Nekem is lenne egy kezdő kérdésem. Tegyük fel a uC 4MHz-en ketyeg. Nekem van egy pl. 50 soros kódom ami tartalmaz pl. egy 1 másodperces "delay"-t valahol és mondjuk növelek 1-el mindig egy változót ez a késleltetés után majd a program fut tovább. Ki lehet jelenteni, hogy a változó az eltelt másodpercek számát fogja számolni vagy rá fog ere tevődni még az az idő is amíg a program többi részével "végez" a uC. Pl. 10 napja fut a program és "i"-nek 60*60*24*10 másodpercnek kéne lennie. Ennyi lesz vagy nem? Előre is köszi és elnézést az esetlen kérdésért. További kellemes ünnepeket.
Rá fog tevődni. Szimulátorban meg birod nézni, hogy mennyi tevődik rá, de úgy általában ilyen célra a timerek valók, azok hardverből futnak, és mindig pontosan ugyanannyi idő alatt csordulnak túl, nem befolyásolja a futásukat az épp futtatott kód.
Szóval akkor mindenképpen timer alkalmazása javasolt és nem érdemes "függvényt" írni ennek kikalibrálására
![]()
Elgondolkozva a dolgon. Ha timer-t használok akkor ott is nem számítódnak rá pl a túlcsordulásért felelős részek vagy a változókkal való dolgozás? Elég kezdő vagyok.
CCS könyvből lett kivágva.
Sziasztok.
Nagyon kezdő vagyok. Segítsetek! Hohyan és milyen progival lehet átkonvertálni .c (main.c) állományt beégethető hex-é. Ha valaki tud segítsen?
Szia! Gondolom az MPLAB alatt írtad. Nos, itt a menőbar - Project fület lenyitva találod a Build All parancsot. Ezzel készíthetsz hex -t.
Ja, és még a forrásba bele nézve, kellenek az include filek is mellé.
Még egy kis segítség. Szóval, ha jó include filoket találtam, akkor itt küldöm lefordítva a main-t.
Lehetőleg csak egy topikban tedd fel a kérdésedet!
|
Bejelentkezés
Hirdetés |