Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   741 / 1320
(#) vilmosd válasza Attila86 hozzászólására (») Máj 14, 2010 /
 
Tehat akkor csak a stack a ludas. Probald meg egyszerusiteni a programodat pl osszevonni tobb osszetartozo szubrutint, es amit emlitettem IT-s delayt. Esetleg meg lehet valami keresztbeugralas is, pl meghivsz egy szubrutint, es goto-val kiugrasz belole. Ez tud erdekes es rapszodikus hibakat okozni.
(#) Attila86 válasza vicsys hozzászólására (») Máj 14, 2010 /
 
Valószínűleg ez lehet a gond mert most a szimulátorban látom ahogyan pakolja szépen egymás alá a 0006FE címeket. Egyenlőre nem jöttem rá hogy mi okozza, nem is tudom még pontosan hogy hogyan kellene kideríteni.
(#) icserny válasza tamibandy hozzászólására (») Máj 14, 2010 /
 
Idézet:
„ez a jó megoldás”
Vagy legalábbis működőképes. Csak egy kicsit ágyúval verébre...
A formátum értelmezgetésével a printf, sprintf sok erőforrást felzabál.
(#) vilmosd válasza Attila86 hozzászólására (») Máj 14, 2010 /
 
Beraksz Break-et a megfelelo helyekre es ott megallitod a szimulaciot. Biztos valami ilyen lehet, hogy meghivsz egy szubrutin es kiugrasz belole, majd meg megismetled egy parszor. A STKPTR pedi csak no"l de nem csokken soha. Igy hamar megtelik es mar ott is a baj.
(#) icserny válasza Attila86 hozzászólására (») Máj 14, 2010 /
 
Első körben nézd meg, hogy mi van a 06FE címen, és mi szakítja meg ott a futást!
(#) Hp41C válasza Attila86 hozzászólására (») Máj 14, 2010 /
 
Szia!

Van még néhány lehetőség a stack hiba előállítására, a call / return hibán kívűl is, amit nehéz észrevenni:
- Olyan változót használsz egy bankban, aminek a címe az ACCESS bankban megegyezik a STKPTR címével, és nem BANKED elérést fordítottál (az ACCESS a default).
- Indirekt elérés pont a STKPTR -be ír.
- A BSR a 15 lapra mutat és ezen a lapon végzel BANKED műveletet a STKPTR címére.
- Elfogyott a stack: Az első hívás lemegy, mert véletlenül nem volt megszakítás a futása alatt, de a három késleltető rutin ideje alatt biztosan bejön a kérés. Lehet, hogy a megszakítási cím még belefér, de a rutin további subrutinokat hív... A magas megszakítási szinthez tartozó rutin megszakíthatja az alacsonyét, további stack felhasználást jelent.
- push ill pop utasítások használatában hiba.
(#) Attila86 hozzászólása Máj 14, 2010 /
 
Megvan! A TMR3 túlcsordulás-jelző flag bitjét nem töröltem a megszakításból való kilépéskor.
(#) Hp41C válasza Attila86 hozzászólására (») Máj 15, 2010 /
 
Szia!

A tmr3 megszakítás törlése csak tüneti megoldás lesz... A stack hiba a törléstől nem szünt meg, csak ritkult. A programot érdemes átnézni, mert a hiba a legváratlanabb helyzetben újra elő fog jönni...
View / Hardware Stack megmutatja a stack tartalmát, és azt is hogy mennyi hely van még benne.
(#) Attila86 válasza Hp41C hozzászólására (») Máj 15, 2010 /
 
Szia!

Ez nem csak tüneti megoldás. A GIE bit 1-be állítása után jön a retfie parancs amivel a megszakításból visszalépne a PIC. De mivel a jelzőbitet nem töröltem, ezért a
  1. bsf   INTCON, GIE

sorról azonnal a megszakításvektorra ugrik, úgy hogy ki sem lép belőle.
(#) Hp41C válasza Attila86 hozzászólására (») Máj 15, 2010 /
 
Szia!

Nem kételkedtem benne...
A megszatítás engedélyezése okozza a problémát. A megszakítás beérkezésekor a szinthez tartozó engedélyezés bit (nem prioritásos módban a GIE / prioritásos módban a GIEH vagy GIEL a prioritástól függően) törlődik, a kilépéskor a RETFIE állítja vissza automatikusan. A sok egymásutáni megszakítás így nem növeli a stack -et.
(Más kontollerekben a megszakítás engedélyezésének érvényre jutását késleltetik egy utasítás végrehajtásával.)
(#) tamibandy hozzászólása Máj 15, 2010 /
 
Hello,

Hogyan lehet PIC32-ben egyszerre több, szám szerint 4 motórt kontrollálni PWM->HBridge-el?
(#) Attila86 hozzászólása Máj 15, 2010 /
 
A karakteres LCD-kijelzőknek van valami általánosan elterjedt lábkiosztása? Vagy össze-vissza mindegyiknek egész más?
(#) gydanee válasza Attila86 hozzászólására (») Máj 15, 2010 /
 
Hali! Bővebben: Link
Én eddig csak ilyen lábkiosztással találkoztam.
(#) Hp41C válasza gydanee hozzászólására (») Máj 15, 2010 /
 
Szia!

A háttérvilágítással lehet még bővíteni, de a megoldás már nem egységes. Van olyan típus, ahol a csatlakozó egyik és olyan is, ahol a másik végére toldották be a két kivezetést. Sok típushoz külön beépíthető háttérvilágítás is kapható - a polaritás is változhat...
(#) gydanee válasza Hp41C hozzászólására (») Máj 15, 2010 /
 
Lehet hogy szerencsém volt akkor, mert én már találkoztam néhány régebbi bontottal is, és azokhoz is passzolt a linken található lábkiosztás, még a háttérvilágítás is. Olyannal már én is találkoztam, ahol az LCD kijelző egyik végén ott volt a háttérvilágítás, de azt általában megtaláltam a többi csatlakozó között is.
(#) szilva válasza Hp41C hozzászólására (») Máj 15, 2010 /
 
Én találkoztam egy-két elfajzott példánnyal, ahol az első három láb (Vss, Vdd és Vlcd) sorrendje volt kicsit megkavarva. Ha van rá mód, érdemes az adott típus adatlapjában megnézni a bekötést, mert a tápfeszültségek csere-beréje akár károsodást is okozhat a kijelzőben.
(#) watt válasza tamibandy hozzászólására (») Máj 15, 2010 /
 
Már régóta feláll a szőr a hátamon, ma nem bírtam tovább:

Ezeket rövid magánhanzóval írják:
akkór
mikór
motórt

Ezeket pedig hosszú magánhangzóval:
müködik
bohockodjak
irni
egyszerüen
itéli
öket

Az adatapon ezt olvasom:
Technikum egyetemre jarok...

Kérlek, legalább ezeket írd ezután helyesen. (Talán akkor többen fognak válaszoni a kérdéseidre...)
(#) lidi válasza watt hozzászólására (») Máj 15, 2010 /
 
(#) treshold válasza icserny hozzászólására (») Máj 15, 2010 /
 
Köszönöm, működik és szépen szimulálja a progimat.


Lenne még egy kérdésem, hogy a PIC24HJ64GP206A esetén belső oszcillátort (FOSCSEL) 80MHz-et használva mennyire stabil az órajel?

Nekem nem fontos, hogy pontosan 80MHz legyen, viszont az már igen, hogy az egymást követő 5db 30mS-os időtarmban ugyanaz legyen az órajel (max +/- 2 impulzus eltérés).
(#) cape-t hozzászólása Máj 15, 2010 /
 
Sziasztok!

Kezdő PIC-es vagyok, és lenne egy kérdésem (inkább kettő). Jól sejtem, hogy a PIC-ek bemenetein van pergésmentesítő ák. ?
Mert írtam ezt a kis programocskát, ami elvileg egy futófényt valósít meg. Az RB0/INT lábra kötött nyomógomb megnyomásakor (mely GND-re van húzva 2,2k-val, és megnyomásra Vdd-re kapcsol) a futófény megáll, majd újboli megnyomásra a másik irányba elindul. A LED-ek 330ohm-al GND felé. Az a probléma, hogy a gomb megnyomására néha csak irányt vált, mintha a megállást átugorná, máskor meg megáll, de nem vált irányt. Néha meg a tervezettnek megfelelően működik.
Azt szeretném kérni, nézzétek meg a programot, hogy szoftveresen van-e benne bibi, vagy a hardwer lehet hibás? MPLAB szimulátoron a sw.-t én tesztelgettem, ott szerintem hibátlan.
Két napja kezdtem, úgyhogy a forráskód lehet, hogy kusza, de azért nagyjából működik.

Előre is köszönöm!

futofeny.asm
    
(#) Hp41C válasza cape-t hozzászólására (») Máj 15, 2010 /
 
Szia!

Sajnos nincs, a programba kell beletenni...
(#) Attila86 hozzászólása Máj 15, 2010 /
 
A watch ablakban miért azt írja mindenhez hogy "Out of Scope"?
(#) icserny válasza treshold hozzászólására (») Máj 15, 2010 /
 
Idézet:
„belső oszcillátort (FOSCSEL) 80MHz-et használva mennyire stabil az órajel?”
Semennyire. Százalék vagy tizedszázalék? Az adatlap jobban tudja.

Idézet:
„az egymást követő 5db 30mS-os időtarmban ugyanaz legyen az órajel (max +/- 2 impulzus eltérés).”
Kvarcoszcillátorral sem könnyű ilyet csinálni, pláne, hogy PLL is van az oszcillátorban.
(#) trudnai válasza cape-t hozzászólására (») Máj 15, 2010 /
 
Sok PIC-nek van schmitt triggeres bemenete -- azzal egy egyszeru alulatereszto szurovel lehet hardveres perges mentesitest csinalni.
(#) icserny válasza cape-t hozzászólására (») Máj 15, 2010 /
 
Idézet:
„Jól sejtem, hogy a PIC-ek bemenetein van pergésmentesítő ák. ?”
Schmitt-triggeres bemenet van, de ez önmagában kevés a pergésmentesítéshez. Hardveresen rá lehet segíteni egy R-C körrel. Erről részletesebben olvashatsz ezen az oldalon. Szívesen ajánlanám a saját oldalamat is (PIC-kwik I/O portok fejezet), de technikai okokból (optikai újrakábelezés) most vasárnap estig nem elérhető.
(#) treshold válasza icserny hozzászólására (») Máj 15, 2010 /
 
Arról lenne szó, hogy egy bejövő impulzus kb néhány utasításidő késleltetéssel elindít egy TIMER-t, majd a 3. megállítja és "visszafelé " kezd el számolni és kb 4-8 utasításidővel az 5. impulzus beérkezése elött kiad egy impulzust.

A szimuláció szerint tökéletesen működik.
A gyakorlatban magasíbb frekiken (kb 700hz felett) is tökéletesen működik, de alatta, ahogy csökkentem a frekit időnként újtra indul a szinkronizálás (nem PIC RESET-ről van szó), Ez csak úgy lehet, ha az 5. impulzus elöbb beérkezik.
Sajnos tárolós szkópot még nem sikerült szereznem

Tehát akkor felejtsem el a belső oszcillátort.
Lehet, hogy kvarcoszcillátorral sem biztos hogy működni fog?
(#) watt válasza Attila86 hozzászólására (») Máj 15, 2010 /
 
Azok a változók, amik csak egy rutinon belül léteznek, azok csak akkor látszanak, ha éppen a rutinban állítod meg a szimulációt. Ez leginkább C-ben tapasztalható. Ezért érdekes, hogy ASM-ban is ezt tapasztalod(bár nem írod milyen nyelvben tapasztalod ezt). Kód nélkül nem nagyon lehet mit mondani.
(#) trudnai válasza treshold hozzászólására (») Máj 15, 2010 /
 
A belso orajel erosen fog fuggeni a tapodtol -- ha az nem stabil, akkor nem lesz az ora sem stabil.

Amugy a jelenseg amit leirtal inkabb arra enged kovetkeztetni, hogy a szamogatasoknal tulcsordulasod van es mikor eppan a tulcsordulast kezeled le, akkor jonne az az iimpulzus amit le kellene kezelned, de lekesel rola. Ez persze akkor lenne igaz, ha pollozassal kezeled le a bemeneteket nem pedig interrupttal.
(#) treshold válasza trudnai hozzászólására (») Máj 15, 2010 /
 
Lehet olyan, hogy a szimolácó szerint OK ez és a gyakorlatban nem?

2db 16 bites TIMER van összefogva 32 bitessé.
Ha mgetörtént a megszakítás, akkor a progiban meg van adva, hogy álljon meg a számláló. a szimuláció szerint ez meg is történik.

Hol lehet akkor túlcsordulás?
(#) jdani hozzászólása Máj 15, 2010 /
 
hali. olyan kezdő kérdésem lenne, hogy a 16f877A melyik lábait nem lehet ki-be menetre használni? (1 , 11 , 12 , 13 , 14 , 31 , 32) Ezeken kívül bármelyik lábra írhatok mondjuk egy LED kimenetét?
Következő: »»   741 / 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