Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Itt a kód. Kissé kusza lehet de ha kérdés van akkor válaszolok...
A verify szerint minden rendben
Észrevettem most, hogy ha sokat próbálgatom akkor néha stimmel a bekapcsolási állapot úgyhogy lehet mégis a porgram ***. Mindenesetre ha debug-olom akkor mindíg tökéletes. Csak amikor felprogramozom és real-time futna akkor ***ódik el Vulgáris szavak használata problémáktól feldúlt idegállapotban is tilos. -- kobold
Az sw_on cimkénél van a lényeg elvileg, bár nem tudom melyik programrész lehet még rá kihatással.
20K a felhúzóellenállás a kapcsolók lábain. Lehet, hogy túl sok és bizonytalanul tartja fenn?
A kapcsolók testre húzzák a bemenetet megnyomáskor.
No, előkotortam a mentésből a C kódot (még mindig nem kaptam vissza a laptopomat). Lehet, hogy elsőre kicsit bonyolultnak tűnik, de ha jobban megnézi az ember, akkor a dolgok jó része csak definiálgatás. A lényeget a doevents() függvény csinálja az állapottábla alapján.
Egyébként azért tértem át az állapottáblára, mert a legelső verziós óra teljesen asm-ben volt megírva és nem állapottáblával. A kijelzőre történő rajzolás, meg az éppen a kijelzőn látható kijelzés és a nyomógombok jelentésének összerendelése viszont olyan iszonyatos if-rengeteget eredményezett, hogy szinte teljesen átláthatatlan lett a kód. Ráadásul szeretnék majd ébresztést beleépíteni, ami abban a felépítésben lehetetlen lett volna. Az állapotgépes megoldásnál majd az állapottáblát kell kiegészítenem az ébresztéses ágakkal, és meg kell írni pár primitív függvényt az ébresztési idő növelésére/csökkentésére/kijelzésére. Maga a program szerkezetileg egyáltalán nem fog változni.
mi van a MCLR lábbal?
Azon is van felhúzó bár most fejből meg nem mondom mekkora.
Hu de karacsonyi szinek vannak itt a HE-n, csupa piros minden
En nem hinnem, hogy a program memoria csak ugy atirodna, azt meg ha akarod is eleg korulmenyes atirni - erre vigyaztak a Microchip-ek. Hol van a kapcsolas? Teljesen ugy hangzik mintha lenne valami jokora buffer kondi amitol a chip-ed nem resetalodik - probaltad MCLR reset gombbal?
Picit raneztem a kodra, az interrupt kezeles nem tetszik! Egyreszt nincs context savings egyaltalan, masreszt piszkalod interrupton belul a GIE bitet aminek nincs teteje. Azt elintezi neked a hardware, de ha elkezded piszkalni akkor elveszithetsz interruptokat! Context savings-el kapcsolatban jo hir, hogy 18F-en dologzol es nem hasznalsz ketszintu interruptokat ha jol latom, tehat elegendo, ha beteszed a 'RETFIE' moge, hogy 'FAST':
RETFIE, FAST Ez kezdetnek elegseges context savings, ha nem hasznalsz indirekt cimzest pl. Amugy nem ertem miert timerrel nezegeted, hogy az AD vegzett-e mar, mikor az AD-nek is van megszakitasa? Ezeket a reszeket gondold at ujra, es probald meg lepesrol lepesre felepiteni, ne kapkodj mert akkor minden sokkal tovabb tart!
Köszönöm a tanácsot, megpróbálom megfogadni.
hogyan kell pontosan leírni a "retfie fast" parancsot?
'retfie, fast' --> "illegal character(,)" 'retfie fast' --> "symbol not previously defined (fast)" Mi a helyes írási mód? Kapcsolás csatolva... Idézet: „hogyan kell pontosan leírni a "retfie fast" parancsot?” Nahat nem is tudom most, mert en csak az adatlapbol neztem ezt, 5.3 fejezet/bekezdes: Idézet: „A “fast return” option is available for interrupts. A fast register stack is provided for the Status, WREG and BSR registers and is only one in depth. The stack is not readable or writable and is loaded with the current value of the corresponding register when the processor vectors for an interrupt. The values in the registers are then loaded back into the working registers, if the RETFIE, FAST instruction is used to return from the interrupt.” De kesobb az utasitasnal meg ezt irja: Idézet: „RETFIE Return from Interrupt Syntax: [ label ] RETFIE [s] Operands: s ∈ [0,1] Operation: (TOS) → PC, 1 → GIE/GIEH or PEIE/GIEL, if s = 1 (WS) → W, (STATUSS) → Status, (BSRS) → BSR, PCLATU, PCLATH are unchanged” Egyszoval probald meg igy: RETFIE 1 Lehet az INC file-ban nincs definialva a 'FAST' kulcsszo...
hogyan kell pontosan leírni a "retfie fast" parancsot?
'retfie, fast' --> "illegal character(,)" 'retfie fast' --> "symbol not previously defined (fast)" retfie FAST Lásd pl. a PICBOOK.COM honlapon! (másért is érdemes ott körülnézni...)
A kovetkezoben kernem tanácsotokat:Épitettem egy aramkort egy pic16f877a-val, ami sajnos nem indul el, vagyis bekapcsolaskor egy negysoros kijelzon az elso es harmadik sor minden szegmense világit, a 2MHz-es kvarc nem oscilal, pedig probáltam 10p es 33 pF egyaránt.Szkoppal neztem.
Mit tanácsoltok ? Udv:Hermann Zoltán
Szia!
A konfigurációs biteknél HS oszcillátort választottál ki? A szkóppal törénő mérésnél használd az 1:10-es osztófejet, mert ettől is leállhat az oszcillátor! Steve
Valóban helyettesíthető 1-gyel. Az inc fájlban így van definiálva:
A HS az biztos igen a szkop 1:10 biztos nem, ezert ki fogom probálni.
A következőben kérnem tanácsotokat.
Hogy lehet olyat csinálni, hogy a program leresetelje a pic-t. Olyasmire gondoltam, hogy a pic programjában fut valami, és az eljut egy adott pontra akkor lereseteli magát. Olyasmi kéne csak nem ilyen eszement módon, mintha az egyik kimenetet rákötném a reset lábra és ha resetelni akarok akkor azt a lábat 0-ra húznám.
Pedig az is jó lenne.
A 18F-eknél van egy RESET utasítás. A 16F-eknél elég macerás, mert ilyen nincs. Én úgy oldanám meg, hogy goto 0x0. Természetesen ez szoftveres RESET mindkét esetben. Hardveres csak a külső lábas lehúzással menne, de az ritkán szükséges...
Szia!
Hát kár, hogy a 16f-ben nincs ilyen utasítás. Jó lenne a szoftveres reset is. A goto 0-t probáltam, de az a gond, hogy egy megszakítást követően kéne létrejöjjön a reset és akkor a megszakításbol való visszatérés elmaradása miatt a veremtár összekuszálodik az mplab szerint.
Közben kipróbáltam élesben is a goto 0-t és működik rendesen. Csak nem értem, hogy az mplab miért nem tudja lereagálni, hogy túlcsordul veremtár.
Király vagy!
Átírtam retfie 1-re, és most 95%-ban működik a dolog. A maradék 5%-ot még mindíg nem értem de már ez is komoly haladás! De lehet valami a MCLR pufferrel is, mert többször azt vettem észre, hogy ha hamar nyomom vissza akkor rossz. Mégis hogyan lehetne ezt kiküszöbölni?
Megvan a dolog!!!
Én voltam a hülye. A két kapcsoló felhúzó ellenállásai közül az egyiket rossz helyre kötöttem. Méghozzá a sorosan volt a másik felhúzó után, így annak 2x akkora volt az eredő értéke, viszont az amperek is így érdekesen oszlottak meg gondolom a két láb között... Ha valaki azért meg tudná magyarázni, hogy ilyenkor mi történhet pontosan az jó lenne. A lényeg, hogy most tökéletesen megy.
Hi!
Néhány napja rendeltem PIC égetőt,de a próbapanelon nem akarózik működni,a program jó,de a bekötéssel gond van,valaki le tudná írni hogy kell bekötni?(16F690) -7805 van -minden lábat le kell kötni és ha igen milyen potenciálra? Köszi!
Adatlapot nézd meg. MLRC VDD VSS kell valamint debughoz a PGC PGD lábak is. Ilyet keress az adatlapon. Az MLRC általában az 1-es a pgc pgd meg szemben vele (persze ez utóbbi nem mindenhol lehet így)
A 690 adatlapjában elég fura elnevezésekkel szerepel a két programozóláb (nem ez az elterjedt): ICSPDAT és ICSPCLK (ez megfelel a PGD-nek és a PGC-nek), ezen kívül az MCLR-t, a Vdd-t és a Vss-t kell bekötni a programozáshoz.
Idézet: „valaki le tudná írni hogy kell bekötni?(16F690)” A Microchip már leírta, lásd a PICkit2 Starter kit-ben is szereplő Low Pin Count demókártya felhasználói kézikönyvében levő kapcsolási rajzot! Kép: Hivatkozás Kép: Hivatkozás Idézet: „valamint debughoz a PGC PGD lábak is.” Sajnos, csak programozáshoz! A debugolást a mezei PIC16F690 nem támogatja. Debughoz van neki egy speciális változata, amit az AC162061 header board formájában lehet megvásárolni (lásd az alábbi képen). Kép: Hivatkozás
Sziasztok!
Tudnátok olyan kpcsolási rajzot küldeni ami jó szinte minden pic-hez és biztosan működik és nem olyan bonyolult? Idézet: „Adatlapot nézd meg. MLRC VDD VSS kell valamint debughoz a PGC PGD lábak is.” Már egyszer finoman jeleztem, hogy ne írj zöldségeket! Úgy állítod be a fenti mondatodban a dolgot, mintha csak a debuggoláshoz kéne bekötni a PGD,PGC lábakat! Tévedsz, azok a programozáshoz kellenek, és a debuggolás is azokon keresztül működik(előbb volt a programozás...). Mielőtt tanácsokat adsz másoknak, jobban fontold meg amiket leírsz! Köszönöm! |
Bejelentkezés
Hirdetés |