Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   704 / 1320
(#) watt válasza spepe hozzászólására (») Márc 18, 2010 /
 
Hidd el nem a nyelven áll, vagy bukik a dolog!
(#) dudzsi hozzászólása Márc 18, 2010 /
 
Sziasztok.
Van nekem egy 16F676 picem. 4,5V hajtom de csak az RC5-ös lábon jön ki az a feszültség. Az RC4,RC3,RA1-es lábakon csak 3,3V jön ki. Ez mitöl lehet?
(#) Hp41C válasza dudzsi hozzászólására (») Márc 18, 2010 /
 
Szia!

A lábak terhelésétől... Illetve, ha voltmérővel méred, akkor a kimenőjel átlagértékét méred. Mi van az RC4, RC3 és az RA1 lábakra kötve? Milyen jellel vezérled őket?

Szia
(#) szilva válasza spepe hozzászólására (») Márc 18, 2010 /
 
Én SDCC-ztem mostanában, és rögtön az első ilyen projektemben futottam bele érdekes fordítási eredménybe. Logikai értékekkel és bitekkel mintha nem jól bánt volna. A konkrét esetre most nem emlékszem, de trudnai-val nézegettük a C forrást és a lefordult asm kódot, és sehogy sem stimmelt. Szóval vannak fenntartásaim vele kapcsolatban, annak ellenére, hogy valóban használhatónak tűnik.
(#) dudzsi válasza Hp41C hozzászólására (») Márc 18, 2010 /
 
Az RC4-re egy 1k ellenálláson keresztül egy BD139 tranzisztor. Igy probáltam ki RC3és RA1 lábon is. Azok üresek.
(#) Hp41C válasza dudzsi hozzászólására (») Márc 18, 2010 /
 
Szia!

Milyen program van benne? Az RA1 és RC3 analóg funkcióját letiltottad?

Szia
(#) vilmosd válasza dudzsi hozzászólására (») Márc 18, 2010 /
 
Hali
Nem esetleg valami PWM? Szkoppal kellene megnezni, vagy esetleg a forrast ha lehetne latni. Lehet hogy ott van a problema (SW) ? Ha siman bekapcsol hosszu idore, akkor biztos a tap erteket tudod merni. Ha magasabb frekvenciaju valtozo kitoltesu jel van a labon akkor tudsz feszmerovel kevesebbet merni a kitoltesnek megfeleloen. A tapfesz az nem erdekes mert 2 -5.5 voltig uzemkepes.
Udv Vili
(#) dudzsi válasza vilmosd hozzászólására (») Márc 18, 2010 /
 
Sziasztok!
Simán csak kapcsol az a láb. Az RC5 és az RC4-el akarok vezérelni egy h-hídat.Olyat ami itt a kapcsolásokba van. Eddig csak egy led volt a lábakon. Nincs elméletileg pwm. A programot flowcodeval csináltam. Annak felrakom a C és Asm-jét. Nemtudom, hogy a RA1 és a RC3 analogja tiltva van e. De az RC4-en nincs analog. Vagy van?
(#) dudzsi válasza vilmosd hozzászólására (») Márc 18, 2010 /
 
Na kiprobáltam ugy hogy simán csak adok a RC4 és RC5-nek 1-et. Igy tök jol megy. Ki is jön a feszültség. Az eredeti programban is egyhelyen vannak, ott meg nem megy.
(#) vilmosd válasza dudzsi hozzászólására (») Márc 18, 2010 /
 
Hali
Haat ? Ezeket a programokat sajnos eleg nehez ertelmezni. Probalj meg esetleg asm-ben faragni egy bit-billegteto programot es azzal kiprobalni a kapcsolast. Talalsz sokat itt a forumon. Lehet hogy nem HW problema lesz. Ezek az ilyen-olyan ugymond grafikus programozo valamik (parsic, Flowcode, etc. ) tesznek am bele mindenfele csavarokat a programba. Visszaneztem mar sok leforditott listat. Hat erdekes dolgokat csinalnak.
Probald ki a PIC-et egy LED_villogtato.asm progival MPLAB-ban leforditva, lehet hogy rajossz a hibara.
Udv Vili
(#) steev hozzászólása Márc 18, 2010 /
 
Sziasztok

Ha az:

  1. INTCON1bits.NSTDIS=1;


bitet beállítom, az azt jelenti, hogy ha folyamatban van egy megszakítás kiszolgálása, akkor a közben beérkező megszakításokat figyelmen kívül hagyja és nem is dolgozódik fel?
(#) szilva válasza dudzsi hozzászólására (») Márc 18, 2010 /
 
A flowcode file-t nem tudom megnyitni, így a C-t néztem. Jól látom, hogy az interruptban van benne az RC4 és RC5 beállítgatása? A portbit állítása előtt a tris-t is állítja a kód. Ha túl sűrűn kerül ide a vezérlés (akár még ugyanazzal a kiírandó állapottal is), akkor elképzelhetőnek tartom, hogy ezek miatt tüskék vannak a kieneteken és nem folyamatos DC szint.
(#) watt válasza steev hozzászólására (») Márc 18, 2010 /
 
Melyik az a PIC, amelyikben INTCON1 van?
(#) potyo válasza watt hozzászólására (») Márc 18, 2010 /
 
Valami 24F vagy nagyobb számú lehet, azokban van. Viszont én meg nemtudom, hogy mit jelent a Nested Interrupt...
(#) cNobody válasza potyo hozzászólására (») Márc 18, 2010 /
 
An interrupt can happen while executing an ISR. This is called a nested interrupt.

ISR - interrupt service routine


hirtelen ezt találtam google-ban

ha jól értelmezem a dolgokat akkor a nested interrupt, az az amikor egy megszakítás kiszolgálás közben bekövetkezik egy másik megszakítás

(vagy költői kérdés volt?)
innen: Bővebben: Link

szerk:
bár ez lehet egyértelműbb: Bővebben: Link
(#) potyo válasza cNobody hozzászólására (») Márc 18, 2010 /
 
Én is ezt találtam közben, de akkor sem értem. Van több prioritásra lehetőség, akkor ha magasabb prioritású megszakítás jön, akkor az alacsonyabb szintű kiszolgálása felfüggesztődik. Nekem ez már önmagában eléggé erre a nestedre hasonlít. Vagy ez az lehet, hogy ha ugyanazon forrásból jön be több? Pl. soros porton bejött valami, de még tart a feldolgozása, és ha közben jön mégegy, akkor az előző felfüggesztődik és a frissen beérkezett kezelője fut le? Ez meg elég sok problémát okozhat...
(#) Hujikolp válasza vilmosd hozzászólására (») Márc 18, 2010 /
 
Üdv!

Nagyon szépen köszönöm, jól működik! MPLABbal vissza is olvasta, most jöhet a programos olvasás, remélem az is azzal nem lesz gond
(#) vilmosd válasza Hujikolp hozzászólására (») Márc 18, 2010 /
 
Hali
Szivesen. Ez sokszor elofordul a PIC doksikban, hogy a peldak nem teljesen jok. En is sokszor szivtam emiatt.
Udv Vili
(#) szilva válasza potyo hozzászólására (») Márc 18, 2010 /
 
Valószínűleg a nested-nél azonos prioritásszinten lévő interruptok is megszakíthatják az interrupt kiszolgálást. Sőt, extrém esetben ugyanaz az esemény is kiválthat újabb interruptot még az előző ugyanilyen eseményt feldolgozó interrupt közben. Ilyenkor az interrupt-kiszolgáló rutinokat már muszáj reentránsan megírni, különben fejreáll az egész az első "nested" interrupt beesésénél.
(#) cNobody válasza potyo hozzászólására (») Márc 18, 2010 /
 
A 18F-eknél a kétszintű prioritásban a magas prioritású megszakíthatja az alacsonyat, fordítva nem, és azonos prioritásúak sem szakítják meg egymást.

viszont szilva hozzászólása elgondolkodtató...
(#) icserny válasza steev hozzászólására (») Márc 18, 2010 / 1
 
Idézet:
„Ha az INTCON1bits.NSTDIS=1; bitet beállítom...”

Az Interneten már minden le van írva, csak meg kell találni!
Lásd pl. itt: http://esca.atomki.hu/PIC24/interrupts.html, az általam összeállított oldalon:
Idézet:
„Ha egy programmegszakítási kérelem érkezik, akkor annak prioritása magasabb kell, hogy legyen, mint az éppen futó program aktuális prioritása (IPL<3:0>), hogy érvényesüljön. Ha egyidejűleg több, azonos prioritású programmegszakítási kérelem érkezik, akkor közülük az alacsonyabb sorszámú vektorhoz tartozó (lásd az 1. táblázat VEC oszlopát!) érvényesül elsőként.

Mielőtt a programmegszakítást kiszolgáló programrészre kerülne a vezérlés, az aktuális IPL elmentésre kerül a veremtárban a visszatérési címmel együtt, s az IPL<3:0> bitekre beíródik az elfogadott programmegszakítási kérelemhez tartozó prioritásszint. Ez megakadályozza, hogy a programmegszakítás kiszolgálását hasonló vagy kisebb prioritású interrupt félbeszakítsa. Magasabb prioritású interrupt azonban megszakíthatja, s ezt az interruptok egymásba ágyazásának (nesting) nevezzük, ami egyébként letiltható az INTCON regiszter NSTDIS bitjének (INTCON1<15>) '1'-be állításával. C nyelven ez _NSTDIS = 1; formában írható.”
(#) watt válasza cNobody hozzászólására (») Márc 18, 2010 /
 
Igen, ez így van, és valószínű, hogy amit szilva és potyo ír az is, de igazán jó lenne, ha steev leírná melyik PIC-ről van szó, mert akkor nem kéne annyit találgatni.
(#) trudnai válasza szilva hozzászólására (») Márc 18, 2010 /
 
Juhej, vegre van netem, tudok valaszolni

Igen, mindegy, hogy a szilikon altal tamogatott tobb szintu interrupt-rol, vagy a szoftveresen megvalositott "bele szakithato" ISR-rol beszelunk, a nested az nested (egymasba agyazott magyaran).

Tehat ha ugy irod meg az ISR-t, hogy manualisan ujra engedelyezed az interruptot, vagy stack manipulacioval ered ugyanazt a hatast el, a lenyeg, hogy ha az ISR felbe szakithato egy masik megszakitasi kerelemmel, akkor az nestednek minosul.
(#) icserny válasza potyo hozzászólására (») Márc 18, 2010 /
 
Idézet:
„Van több prioritásra lehetőség, akkor ha magasabb prioritású megszakítás jön, akkor az alacsonyabb szintű kiszolgálása felfüggesztődik.”
Igen, PIC24/dsPIC33 esetén az interupt prioritások szintje 0-tól 15-ig terjed (ebből a 0-7 terjedő szinteket lehet programozottan beállítani, a magasabb szintek a kivételeknek vannak fenntartva (pl. nullával történő osztás stb.).

Megszakítani mindig csak csak magasabb prioritású kérelem tud (tehát az azonos szintű kérelem nem érvényesül, amíg a kiszolgálás be nem fejeződik).
(#) watt válasza trudnai hozzászólására (») Márc 18, 2010 /
 
Már hiányoltalak!
(#) potyo válasza icserny hozzászólására (») Márc 18, 2010 /
 
Ezekszerint az NSTDIS bittel gyakorlatilag a prioritásos megszakításokat lehet tiltani/engedélyezni. De ez miért jó így pluszban? Nem lenne bonyolult mutatvány az IPCx regisztereket sem végigírni induláskor egy ciklusban ugyanazzal a tartalommal.


watt: én a PIC24FJ128GA010 adatlapot néztem, de szerintem ebből a szempontból bármelyik 24F lehet.
(#) trudnai válasza watt hozzászólására (») Márc 18, 2010 /
 
[OFF]Aaa, ezt Te sem mondtad komolyan Idaig tartott mire a British Telecom meg az O2 ossze hozta, hogy legyen ADSL-em... Itt sem kapkodjak el, sot!
(#) potyo válasza szilva hozzászólására (») Márc 18, 2010 /
 
Idézet:
„Sőt, extrém esetben ugyanaz az esemény is kiválthat újabb interruptot még az előző ugyanilyen eseményt feldolgozó interrupt közben. Ilyenkor az interrupt-kiszolgáló rutinokat már muszáj reentránsan megírni, különben fejreáll az egész az első "nested" interrupt beesésénél.”


Azért ez elég veszélyes mutatvány szerintem Bejön egy soros portos adat, majd jön mégegy, még mielőtt az előzőt lekezeltem, az újabb beíródik a bejövő pufferbe, majd utána beíródik az előzőleg jött bájt, és máris van két fordított sorrendben letárolt adatom. Inkább nem kérek ilyesmiből
(#) watt válasza potyo hozzászólására (») Márc 18, 2010 /
 
Persze, ezért nincs is ilyen. Vagy ha van, akkor azt Overrun Errornak nevezik!
(#) szilva válasza potyo hozzászólására (») Márc 18, 2010 /
 
Veszélyes, bizony
Következő: »»   704 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem