Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
A hívás előtt a PCLATH regisztert is be kell állítani. Azt is meg kell nézni, hogy a táblázat nem nyúlik-e át a 256-os laphatáron.
A hívás:
Ha nem csak a 0. lapon 2k-s van kód, a megszakítási rutin mentse, közvetlenül a mentés után állítsa be a saját (0.) lapjára és visszatérés előtt állítsa vissza a PCLATH regiszter értékét... Az olyan hívások után, amik nem arra a programlapra hivatkoznak, amelyikről a hívás történik, a hívás előtt a PCLATH-t be kell állítani a cél lapra, a visszatérés után (az első ugrás, más rutinhívás előtt) a PCLATH-t a be kell állítani arra a lapra, amiről a hívás történt. Szia
Elmentek mindent, majd vissza.
A 256-os laphatár, gondolom az azt mutatja meg, hogy maximálisan annyi elemet tartalmazhat (sort). Viszont nekem csak alig van 10-15 sorom. Az mindegy, hogy a 0.ás lapon, hol helyezkedik el a táblázat? Hallottam olyat is, hogy ha 256-nál nagyobbat kell ugrani, akkor valamit be kell állítani. Viszont nekem a programon belül nem volt ilyen problémám. A Te módszeredet ki is próbálom. A lapok közötti váltással nincs gond, megy rendesen
Hihetetlen türelmed van, miután kb. 10-szer leírtad ugyanazokra a kérdésekre ugyanazokat a válaszokat! De lehet, hogy csak rengeteg időd!?
Átírtam erre, viszont pár meghívásig működik, utána viszont megint eltéved, hogy mitől...
És pedig csak 10 elem van a táblában. Befolyásolhat valamit a hely, ahol van? Vagy valami?
Keress rá ebben a témában a PCLATH szóra!
Ez a hozzászólásod végül is megtudta oldani a problémát. a PCLATH, meg hasonlókat hiába állítottam, egy ideig ment, majd eltévedt. Az tudta fixálni, hogy ha ORG-gal megadtam a helyét előtte. Így már megy.
C18-hoz kérnék egy kis segítséget! Ha van egy nagy program, akkor hogy kell szabályosan szétszedni? A CCS C demókban látott forráskód becsatolások pár napja már megkapta a kritikát, ezért azt az utat szeretném elkerülni.
A fő kérdés: hol és hogyan deklaráljam a változókat és tömböket, hogy a több forrásfájlra bontott programban mindenhol látszódjanak, de ne legyenek duplán definiálva? Például az USB Device CDC Basic Demó főprogramjában levő eljárásokat szeretném külön pakolni, hogy a főprogramban csak a main fv. maradjon. Az include-okról és a vektorok itt most nem mutatott áthelyezéséről már van fogalmam, de a változók feladták a leckét... A válaszokat előre is köszönöm!
Szia! Beteszed a változó deklarációkat egy C fileba, azt felteszed a projektbe. Egy .h filet is létre hozol, ahol a változó definíciókat teszed be extern-ként. Ezt a headert inklúdálod be abba a C fileba ahol a változóhoz hozzá akarsz férni. Most nem tudok példát írni mert még mindig csak mobilról vagyok, remélem más majd megteszi helyettem.
Köszönöm, rávezetésnek elég volt az extern kulcsszó! A többi már világos.
Üdv!
Nem tudom, emlékeztek e rá, régebben volt egy kérdésem a PIC hülye viselkedése miatt. Most elővettem megint a témát, mert van egy kis szabadidőm, és megméregettem. Az eredmény: ha a panel a gumilábain áll, akkor a folyamatosan égő ledek elhalványulnak, majd ki is alszanak. Megmértem, és tényleg a lábakon elkezd esni a feszültség, egészen 0V-ra. (7805 atomstabilan 5,02V-ot ad le). Szerintem ez okozta a BOR-t. Na de amikor ráraktam a panelt a radiátorra, helyre jött a dolog, és leddel együtt 4,6V (nélküle 5V) van a lábon. Valakinek valami ötlete esetleg?
Az adapterről a 7805 előtt mindkét esetben 16,02-08V jön le, a 7805 után szintén nem változik semmi.
Vagy ha arra gondoltál, hogy az adapter fizikailag hogy van csatlakoztatva, a drótpár vége fél centin blankolva van, és az van beszorítva abba a csavarós műanyag izébe. A panel fémjétől elvileg el van szigetelve.
5V mindkét oldalon. Az egyik oldalon a hidegítő kondi egy lyukkal félre volt dugva, megigazítottam, de ugyanúgy esik a lábakon a fesz.
Milyen gumi láb meg radiátor? Valami gumi tappancsokat ragasztottal rá? A radiátor az egy fém ami rövidre zárhatja a panelt mert szigetelés nélkül rá tetted? A gumi tappancs vezet? Vagy mekkora a szigetelő képessége? Kontakt hiba nincs ami a panel mozgatása közben vacakol? Kb ezek a kérdések merültek fel bennem.
A radiátor fém, a gumi ellenállásával a multiméter nem boldogult (nagyobb, mint 200M). A mozgatást nem igazán tudom kipróbálni, mert ahhoz túl kaotikusan viselkedik. Múltkor ha közelítettem felé a kezem, már akkor is változott a ledek fényereje.
Sziasztok!
PIC16F628A-val próbáltam egy KS0066-os vezérlővel működő 16x2-es, 5x7-es kijelzőt vezérelni. Eleinte próbáltam beépített C parancsokat használni (mikroC), de végül feladtam és írtam egy 500ms-os késleltetésű parancssort a kijelzőre. Elméletileg a KS0066 és a HD44780 hasonszőrűek. Itt látható róla egy avi is. (piros ledek a D7-D4-ig (sorban), alul sárgával az E villan fel) Egy javas kijelzőszimulátorban is kipróbáltam ezt a parancssort (ami igazából csak inicializálja a 2 sort, és a kurzort villogtatja), és ott működött. Még egy érdekesség, miszerint ha rákötöm az 5V tápot a háttérvilágításra (minden egyéb bekötés nélkül), a két rajta lévő IC felforrósodik. Igazából úgy néz ki, hogy nem vesz semmi parancsot. Holott a LED-eken egyértelműen látni hogy a parancsok haladnak a szálakon (első nekifutásra LED-ek nélkül próbáltam a ledek csak debug-oláskor kerültek be) Előre is
Ne haragudj, már nem emlékszem a projectre, belinkelnéd, vagy leírnád mi akar ez lenni? Esetleg kapcsolási rajz és a forrásfájl is jól jönne, hátha nem kapcsolatad ki az LVP bitet és az PGM lebeg, vagy cibálva van...
Érdemesebb lenne az adatlap szerint inicializálni(ha HD44780U szerint ekerod kezelni)!
Csatoltam az ide vonatkozó képet... Valamint itt van a KS0066 adatlapja is, az is másképp indít, ha jól látom...
Ebből amit most írtál vagy EMI-re gyanakodnek vagy lebegő digitális bemenetekre gondolnék. Hidegitő kondik legyenek minden Vss és Vdd között, és ne lebeglem egyik I/O sem. Vagy húzd fel ill le vagy digitális kimenetre kapcsold amit nem használsz.
A 44780 adatlapban leírt init szigorúbb és bolondbiztosabb, azzal (ha az időzítések be vannak tartva) minden állapotból fel lehet éleszteni a kijelzőt (ezért küldi ki 3-szor az elején a 8 bites módba kapcsolás parancsát). Tapasztalatom szerint minden HD44780 kompatibilis kijelző tökéletesen initelhető az alapján a szekvencia alapján, volt nekem is KS0066-ossal szerelt, nem volt vele gondom (fordítva már valószínűleg nem lenne igaz, a KS0066 doksiban lévő init-tel egy eredeti HD44780 nem biztos, hogy észhez térne).
Amire még érdemes figyelni, hogy bekapcsoláskor a tápfeszültség milyen gyorsan vagy lassan épül fel. Ha a tápegységben nagy puffer van, akkor elképzelhető, hogy viszonylag lassan emelkedik a névleges értékre. Emiatt én inkább szoktam a kijelzőt kezelő programok legelejére tenni egy fél-egy másodperces időzítést, ennyi idő alatt már minden esetben beáll az üzemi feszültség.
Jó lenne látni a kapcsolást is, amivel kísérletezel. Pl. hogy a LED-ek hogy vannak bekötve, az R/W földön van-e, a PORTB bitjei jó sorrendben vannak-e a kijelzőn. Nem utolsó sorban a kijelző lábkiosztása is érdekes lehet, mert láttam már pár trükkös dolgot ilyen téren is. A háttérvilágítás adatait adatlapból kellene kinézni, könnyen lehet, hogy abban csak LED-ek vannak, és kell áramkorlátozó ellenállást sorbakötni vele.
Nekem sem szokott gond lenni az LCD-kel, ha betartom a HD-s leírtakat, és én is sokat szoktam várni a bekapcsoláskor.
Sziasztok!
Kérdezni szeretném hogy mi lehet az oka hogy egy 12F675 ös sleep ben 1,5 mA t fogyaszt? Akárhogy szenvedek vele nem megy lejjebb a fogyasztás. Egy komparátor megszakításra ébred. A többi periféria le van tiltva. A tok előtt csak egy LP2985 low drop stab van, a szokásos szűrésekkel. (47u tant./100n ker) PIC et már cseréltem...ugyanaz a jelenség.
A stab. előtt vagy után mérted az áramfelvételt?
Sziasztok!
Nézegettem a példákat olvasgattam és utána néztem a timer-ek működésének de ötletem nincs ahhoz hogyan kellene beállítani a timer-t illetve hogyan lehetne pic-kel egy impulzus szélességét lemérni. Lehet csak nem jöttem rá és ez a valószínű be kell valljam hogy mostanában ismerkedek a pic-kekkel de szeretném a segítségeteket kérni hogyan kell beállítani a regisztert. Úgy gondoltam hogy amikor beérkezik a négyszögjel felfutó éle elindul a timer majd mikor a lefutóél akkor leáll ezt követően kerül kiolvasásra a timer-ből a eltelt idő. Ez így megvalósítható? Nekem egy 16f690-es pic-el kell megoldanom a dolgot.A négyszögjel vagy 0,5ms széles vagy pedig 1ms széles. Hogyan tudnám ezt megoldani.Ha valaki venné a fáradtságot és segítene nekem annak hálám fejezném ki üdv:Marco_HUN
Szia!
Ezt már olvasgattad?
Hiánytalan rajz nélkül nem lehet mit mondani, de nem a PIC a hibás, ez szinte biztos...
A varázsszó CCP(ECCP), keress rá, ill. nézzd meg az adatlapban, hogy működik!
|
Bejelentkezés
Hirdetés |