Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Néhány gondolat, bocs, ha valaki már írta:
- a bootloader alapból villogtat 2 ledet a különböző állapotainak megfelelően - a pic Vusb lába és a föld között ott a 470nF tantál (nálam fóliával is jó volt) kondenzátor? Rémlik, mintha a CDC firmware-el lett volna hasonló problémám, a win nem ismerte fel elsőre. De sajnos már nem emlékszem, hogyan oldottam meg. Azóta újabb verziójú framework-öt használok.
Igen, végül is a protect nem arra van hogy azt a területet üresen kell hagyni (ennek semmi értelme nem lenne), hanem arra hogy csak explicit módon olyan programot tegyünk oda amit szándékosan oda terveztünk, és implicit módon ne tudja más elfoglalni.
Huhú!
![]() Ez aztán rohadt nehéz szülés volt, de hála Nektek, sikerült! ![]() 0800-tól kezdi el írni a programot, és tudom is törölni. ![]() Köszönöm a sok segítséget, és türelmet! A felkiáltójelezéses balhé még áll, de legalább folytathatom a fejlesztést...
Hurrá!
![]() A kapcsolás hogy néz ki? Ugye, mindkét VDD és VSS be van kötve? Csak azért kérdezem, mert a hivatkozott cikkben szereplő rajzon nincs bekötve a 11. és a 12. láb (DIP tokozás szerint számozás).
Nincs túlbonyolítva, lényegében az mint ami a cikkben van, csak be van kötve mindkét Vdd és Vss láb, a többi pedig tüskékre van kivezetve, és hogy gyengusnak is válaszoljak, a Vusb, föld között ott a kondi.
A tanulság az, hogy legközelebb a gyári demo-t (pl. demo02) kell először kipróbálni, mert azzal elsőre jó lett volna. Mi viszont szegényebbek lettünk volna egy jó kis rejtvényfejtéssel
![]()
Sziasztok!
c30-ban szeretnék konvertálni számokat string-re. A _itoaQ15 függvény alkalmas is lenne rá, de alkalmazva ezt a hibát kapom: undefined reference to `_itoaQ15' Link step failed. Na most így hívom meg: #include ...... char strings[10]; _itoaQ15(1,strings); A helyzet, hogy megtaláltam a függvény deklarációját a libq.h file-ban, de a definícióját viszont sehol. Szerintetek mi a probléma?
Be include-olod a szükséges fájlt? (Ez biztosan nem alapértelmezett.) A helpben a függvény leírásánál meg kéne legyen, hogy milyen fájl kell.
A forrásfájlba kell egy #include "libq.h", a linkernek meg kell adni egy -lq opciót, ami belinkeli a libq-coff.a könyvtárból a megfelelő függvényeket.
Gondolom, hogy a linker keresési útvonalában pedig benne kell, hogy legyen a ...\C30\lib\PIC24F (vagy amilyen mikrovezérlő családot használsz) mellett a ....\C30\lib útvonal is, ahol a libq-coff.a lakozik. Végül is a Helpben nagyjából le van írva, csak egy kicsit sokáig tartott, mire megértettem...
Sziasztok!
Most ismerkedek a Winpic800 programmal, és a port I/O bit konfigurációnál van egy olyan lehetőség hogy használjon Mclr-t. Gondolom ez a lehetőség a MCLR/Vpp lábat hivatott földre kapcsolni, ezzel resetelve a PIC-et, de ezt mikor követi el a program? A Vpp rákapcsolása előtt, vagy a program feltöltése után. A másik kérdésem csak annyi lenne, hogy programozás közben a programozásban nem érintett port lábak milyen állapotba kerülnek? Előre is köszönöm a válaszokat! Banday
Egy dolog kimaradt a megfontolásból/kérdésből! Hogy milyen égetőt használsz....
A WINPIC800 ugyanis egy PC-n futó szoftver, tehát nem fog semmit sem földre húzni,anélkül, hogy valami hardvert oda ne tennél a PC és a PIC közé. Na, ettől a hardvertől sok minden függ! Ha pl. a Watt-féle mini LPT égetőt rakod oda, akkor az MCLR lábra te kapcsolod kézzel a VPP feszültséget, az áramkörben tehát nincs olyan resetelő funkció, amit a WINPIC800 kapcsolgatni tudna. (még szerencse!) Más égetőben lehet ilyen funkció, s akkor gondolom,beállítható, hogy alacsony vagy magas legyen az alapállapot (amikor éppen nem programoz). Tehát előtte és utána is - gondolom én. Idézet: „A másik kérdésem csak annyi lenne, hogy programozás közben a programozásban nem érintett port lábak milyen állapotba kerülnek?” Elvileg "lebegő" állapotba.
Kösz a választ, de nem jutottam tovább. Amit leírtál én nem találtam meg a help-ben, egy-két helyen valami kis morzsát max. -lq opcióról meg semmit. Elmagyaráznád nekem mit kell csinálnom pontosan, vagy hogy a help-ben hol van ez? Köszi!
Elmondom mit csináltam. Felmentem a microchip oldalára, beírtam a keresőbe, hogy C30. Az első találatot kinyitottam, és a doksik között ráböktem a 16-Bit Language Tools Libraries pdf-re. Beírtam a keresőjébe hogy itoaQ15. Azt hiszem minden le van írva, ami kell, pl. az, hogy azt a libq.h-t kell include-olni a program elején. Esetleg még ez elérési utat érdemes beállítani a projectben(zöld fogaskerék ikon), és ha kell, akkor a headerekhez felvenni a project ablakba a fájlt, de ha jól emlékszem, oda már nem kellett, de ártani nem árt.
Kicsit több önállóságot javaslok! ![]()
Ezt én is meg tudtam magamtól csinálni. Ha beteszem include-ba a header-t akkor is ugyanazt a hibát írja ki. Ja és az elérési útvonalakat is beállítottam.
Próbáld ki!
Pontosan nem tudom elmagyarázni, mert azóta máshol, más számítógép és operációs rendszer előtt ülök. A lényeg nagy vonalakban:
#include "libq.h" a forráskódba kell. Az -lq opció a Project Options/Project menüben a linkernek kell. A lapján alul be lehet pipálni, hogy egyéni opciók (is) legyenek, s akkor abba a sorba, amit automatikusan feltölt és szerkeszthetővé tesz, írd be a sor végére. Ha netán nem találná meg a libq-coff.a könyvtári állományt, akkor ugyancsak a project options/project menüben az elérési útvonalak között a linker számára a C:\Program Files\Microchip\C30\lib útvonalat is hozzá kell adni. (Vagy ahhová nálad telepítve van). A Help természetesen a C30 telepítési könyvtárában van a doc alkönyvtárban. Fixpontos könyvtár vagy valami ehhez hasonló a Help tartalomjegyzékében a kötet (lila könyvecske) neve. Idézet: „Ha beteszem include-ba a header-t akkor is ugyanazt a hibát írja ki.” Mondom: -lq is kell!!!
Köszi ez az! Az -lq hiányzott. Ezek szerint az előbb rossz helyre tettem be. Hol olvastál erről a -lq-ról? A helpekben rákerestem, de nem talált rá semmit.
Nálam nem volt ilyen gond egyszer sem, gondolom másképp sikerült a telepítés, vagy ilyesmi. De látom közben megoldódott...
Az előbb említett help írja, hogy -l vagy --library opcióval csatolni kell a könyvtárakat (kivíve a helpben felsoroltakat, amelyek hivatalból csatolódnak).
GCC-nél pedig (a C30 is GCC-re épül) alap dolog, hogy libxxx könyvtárat -lxxx opció megadásával lehet csatolni.
hali! Valaki tudna segíteni nekem, pic16f871-el hogyan tudnék egy ledet villogtatni, de úgy értem, hogy halványítani, aztán meg erősíteni. Remélem érthető. Azt kéne tudnom, milyen modullal kéne ezt megvalósítani, meg a beállításokat hozzá nagyából. Ha jól tudom ccp modullal lehet valahogy
![]()
Nézd meg az adatlapban a PWM körüli regisztereket.
Ráértem és megnéztem, neked volt igazad, nekem sem ment -lq nélkül! Ne haragudj, nem volt igazam!
Hali! Kezd összeállni a kép, csak egy dolgot nem találok (lehet már túl fáradt vagyok), hogy hol kell beállítani azt, melyik port hányas lába legyen a kimenet?
Leírom, hogy hogyan néztem meg, hogy hol jön ki. Elgörgettem az adatlapot a PWM modulról szóló részhez. Ott megnéztem a blokksémát, amin be van jelölve, hogy CCP1 jelzésű lábon megy ki a PWM kimenet. Ezután elmentem a Pin Diagram nevű részhez, ott pedig megnéztem, hogy a CCP1 láb az melyik a tokon.
Sziasztok!
Ha benne vagyok a megszakítási rutinban, akkor, ha törlöm az INTF flag-et, és utána bejön a megszakítási rutin alatt még egy felfutó él (arra érzékeny). Akkor beáll újra az INTF flag, csak értelemszerűen nem generál még egy megszakítást? Blint
A flag beáll, és amikor vége a megszakításnak, újra megszakít. Az nem túl jó, ha állandósul ez a folyamat.
Persze, nem akarok egy szép végtelen ciklust csinálni, a végén gondoskodom a flag újbóli törléséről.
Köszönöm a választ! Blint
Igen, beáll, és amikor lefut a megszakítási rutin (tehát elér a RETFIE utasításig), akkor ismét ugrik a megszakítási vektorra, tehát belép a rutinba, és lereagálja a következő alkalmat is. De ha azelőtt jön újabb felfutó él, mielőtt törölnéd az előzőhöz tartozó INTF bitet, akkor már a következőt nem fogja lereagálni, mert INTF törlésével megszüntetted az okot, ami miatt ismét belépne a megszakítási rutinba.
A megszakítási rutin ezért a lehető legrövidebb kell, hogy legyen, csak amit muszáj abban csinálni, azt kell abban csinálni. |
Bejelentkezés
Hirdetés |