Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   736 / 1320
(#) icserny válasza zoox hozzászólására (») Máj 7, 2010 /
 
DE direktívával. Lásd MPASM Help

  1. org 0x2100
  2. de "My Program, v1.0", 0
(#) treshold hozzászólása Máj 7, 2010 /
 
Sziasztok!

Segítséget szeretnék kérni egy PIC24HJ64GP206A programozásával kapcsolatban:

Arról szólna, hogy csinálnék egy digitális szűrőt, ami a PIC RF6 bemenetre adott 6 kHz alatti impulzusokra világít az RG12 kimeneten lévő LED, a felettiekre meg nem.

Ha az F_21 késleltetés közben befutna egy lefutó él, akkor a FLAG 0-ra vált, és visszatérünk a startra. Ha nem jön be, akkor LED világít, majd vissza a startra és ismétlődik.

A probléma, hogy folyamatosan világít hiába adok rá akár még 1MHz jelet is.

Ezt megcsináltam pollingozással is, azzal kifogástalanul működött. Viszont a program későbbi bonyolultsága miatt nekem megszakításból kell megoldanom a vezérlést.

Lehet, hogy a FLAG változó deklarálásával, vagy a megszakítás beállításával van a probléma?

PROBA.s
    
(#) vilmosd válasza treshold hozzászólására (») Máj 7, 2010 /
 
Hali
Szerintem a bitvizsgalat nem teljesen jo. Eloszor varod,hogy 1-re valtson:
  1. W_1:
  2.         btss    FLAG,#0         ; Várja, hogy a FLAG0 a megszakításban 1-re váltson
  3.         bra             W_1
Majd varod, hogy 0-ra valtson:
  1. F_21:
  2.         btss    FLAG,#0         ; Ha megszakítás jön FLAG0 0-ra vált, akkor RESET
  3.         goto    start
Ezt ugyanazal az utasitassal nehez megtenni. A masodiknal btsc kellene.
Udv Vili
(#) treshold válasza vilmosd hozzászólására (») Máj 7, 2010 /
 
Szerintem ez jó, mert ha F_21 időzítés közben jön mégegy impulzus ( 6 kHz-nél nagyobb freki) , akkor a megszakításban a FLAG0 visszabillen 0-ra és goto start (RESET).
Ha nem jön impulzus, akkor mindíg átugorja a "goto start"-ot leidőzít és LED világít.
(#) treshold válasza treshold hozzászólására (») Máj 7, 2010 /
 
Olyan, mintha a btg utasítás csak 1-be tudná tenni a FLAG0 bitet, 0-ba nem. Vagy mintha F_21-ben nem is ezt a bitet néznénk. Nem igazán értem, miért nem megy.

Kérdéses még a FLAG deklarálása.
Esetleg a megszakítás rutin ír felül valamit?
(#) vilmosd válasza treshold hozzászólására (») Máj 7, 2010 /
 
Hali
A MPLAB SIM mit mond ? Probald meg szimulalni, hatha rajossz a titok nyitjara. A 24-eket nem ismerem, de lehet hogy az IT-nel van a kutya elasva. Kulonosen nem ismerem az IT rendszeret, de lehet ott nem allitottal be valamit jol.
Udv Vili
(#) treshold válasza vilmosd hozzászólására (») Máj 7, 2010 /
 
MPLAB SIM-nél lehet valahogy megszakításba ugratni, mert W_1-ig lefut és ott ugrál a bitvizsgálatnál
(#) icserny válasza treshold hozzászólására (») Máj 7, 2010 /
 
Lehet, az IFS0 regisztert írd át (1-et írj bele), az beindítja az interruptot. De már rájöttem, hogy mi a probléma: nem inicializáltad a veremtárat, s az automaikusan inicializálódó veremmutató miatt most pont oda tárolja el programmegszakításkor a visszatérési címet (0x800), ahol a FLAG változódat tárolod!

Szerk: Így kellene kezdeni a programkódot:

  1. .text                             ;Start of Code section
  2. __reset:                          ; first instruction located at __reset label
  3.        mov #__SP_init, w15       ;Initalize the Stack Pointer
  4.        mov #__SPLIM_init,W0  
  5.        mov W0, SPLIM             ;Initialize the stack limit register
  6.  ;__SP_init set by linker to be after allocated data
(#) szabics hozzászólása Máj 7, 2010 /
 
Nem találtam forum témát ezzel kapcsolatban, ezért itt kérdezem meg. Kaptam SX28 AC csippet elvileg benne van a basic értelmező, hogyan tudnék meggyőzödni róla? Sx key leírás( utánépítés céljából) vagy hasonló program letöltőről tudna valaki infót adni? Köszi a fárdozásátok!
(#) treshold válasza icserny hozzászólására (») Máj 7, 2010 /
 
Tökéletes!!

Nagyon köszönöm!

Még egy kérdés:
Hogy tudom átírni szimulációnál az IFS0 regisztert?
Mindezt úgy, hogy menetközben fut a szimuláció?
(#) icserny válasza treshold hozzászólására (») Máj 7, 2010 /
 
Idézet:
„Hogy tudom átírni szimulációnál az IFS0 regisztert? Mindezt úgy, hogy menetközben fut a szimuláció?”
Meg kell állítani a szimulációt. Pl. töréspontot kell elhelyezni, vagy eleve csak kézi léptetéssel "hajtod" a programot.

A W2-t visszaszámláló ciklust is be lehet csapni W2 átírásával. A call delay-ból pedig a Run to Cursor opcióval lehet kimászni (egér jobb gombbal kattints a call delay utáni utasításra).

Mellesleg a megoldást a saját honlapomról, a PIC-kwik projekt mintaprogramjaiból puskáztam ki. (6. fejezet: Mutatók, tömbök, szubrutinok)
(#) Attila86 hozzászólása Máj 7, 2010 /
 
Utánaolvasok holnap hogy a 18F2423 adatlapjában az A/D átalakító linearitásáról mit ír, de addig is itt egy videó:
Bővebben: Link

(Ha esetleg valaki kérdezné: az offset be van állítva. Rövidre zárt bemenet esetén gyönyörűen nullákat mutat.)
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Szia!

- Kivárod-e a beállási időt a A/D indítása előtt? Mivel két csatornán mérsz és az egyiken 0 az érték, az A/D bemenetén a mintavevő-tartó minden csatorna váltás esetén viszonylag nagy ugrást kezel.
- A bemeneti feszültség változás szerintem túl gyors - A 8 legkisebb minta kidobása torzíthatja a mérést, ha a bemenet túl gyorsan változik.
- Az átlagolás csak a véletlen, 0 várható értékű zaj (zavarjelek) esetén javítja a felbontást, rendszeres (reprodukálódó) hiba az átlagban is jelentkezik.
- Olvastad- e az 18F2443 család errata - ját?
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
Szia!

Idézet:
„- Kivárod-e a beállási időt a A/D indítása előtt?”

Időzítést nem állítottam be elé, de 1,6us idő eltelik a bemenetválasztás és a mintavétel megkezdése közt. Nem tudom mennyit illik várni, de mindjárt utánaolvasok...
Idézet:
„- A bemeneti feszültség változás szerintem túl gyors - A 8 legkisebb minta kidobása torzíthatja a mérést, ha a bemenet túl gyorsan változik.”

A 80db mintát 550,4us alatt veszi a szimulátor szerint, ez azért elég gyors ahhoz hogy ne számítson szerintem. Egyébként én úgy gondolom hogy egyáltalán nem torzítja a mérést, bár ez egy érdekes elmélet.
Idézet:
„- Az átlagolás csak a véletlen, 0 várható értékű zaj (zavarjelek) esetén javítja a felbontást, rendszeres (reprodukálódó) hiba az átlagban is jelentkezik.”

A felbontást nem növeltem! Az átlagolásból eredő nagyobb felbontást nem használtam fel, csupán csak egyszerű matematikai kerekítésre (hogy mondjuk 30,048V esetén ne 30,04V-ot írjon ki hanem 30,05V-ot).
Idézet:
„- Olvastad- e az 18F2443 család errata - ját?”

Nem, de megnézem! Szerk.: Megnéztem, de nálam szerencsére Fosc/4-re van állítva az A/D.
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Szia!

Idézet:
„...hogy mondjuk 30,048V esetén ne 30,04V-ot írjon ki hanem 30,05V-ot.”


A kerekítés hiánya lehet a programban is. Az értékhez adj hozzá 1/2 LSB-t a BCD átalakítás előtt, használj egy digittel hoszabb konverziós rutint, de a legutolsó jegyet ne jelezd ki..
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
Szia!

Nem értelek. A 64db mintát én összeadom, majd a 64-el való osztás előtt kerekítem, majd utána osztom 64-el és megkaptam az átlagolt és kerekített, 12 bites eredményt amit kijelzek. Ez már két hete benne van a programban, tehát a kerekítés már meg van oldva, ez nem probléma.
(#) Attila86 válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Idézet:
„Időzítést nem állítottam be elé, de 1,6us idő eltelik a bemenetválasztás és a mintavétel megkezdése közt. Nem tudom mennyit illik várni, de mindjárt utánaolvasok...”

TACQ-ra 1,4us-ot ír, szóval nem kell időzítés a bemenetváltás utánra.
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Hogyan kerekíted a 64-gyel történő osztás előtt? Az esetleges átviteleket figyelembe veszed?
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Szia!

A kivárási idő a forrásimpedanciától is függ, az adatlapban van minta számítás is (2.1 fejezet).
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
Úgy, hogy hozzáadok decimális 32-t. Az osztás után nem is lenne értelme kerekíteni.
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
Ezt nem találom sajnos.

Szia!
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
- A/D Acquisition Requirements - DS39755C-page 30.

- Az SMPS -re történt hozzászólás ügyében elolvastam a lapodon a fejlesztés menetét... A nyákon a szivárgó áramok által okozott mérési hibák kivédésének módszere az védő hurok - Guard Ring. A nagyon nagy impedanciás bemeneteken folyó áramok lényegesen kisebbek, mint a párás, koszos nyák felületén folyó áramok. Az áram összegző bemeneteken (műveleti erősítől stb menetei) a felületi áram jelentős hibát okoz. A kivédésére az ilyen érzékeny pontok köré önnmagában záródó vezetéket alakítanak ki, és a bemenettel azonos (vagy lehetőleg ahhoz közeli potenciálon levő) kisimpedanciás pontra kötik. A felületi kúszó áramok ebbe a gyűrűbe fognak folyni, a kisimpedanciás kimenet nem hagyja a potenciált elmászni, a kényes bemenet és a gyűrű között, a közel 0 potenciál különbség miatt, nem fog áram folyni. Ha máshol nincs ilyen kisimpedanciás pont, egy feszültség követő műveleni erősítővel elő lehet állítani...
(#) watt válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
A kisimpedaniás pontot előállító OPA bemenetét gondolom ugyanarra a bemenetre kell kötni, így előállítva ugyanazt a potenciált? Érdekes megoldás, még ilyet nem használtam, de ötletes és logikus!
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
Idézet:
„- A/D Acquisition Requirements - DS39755C-page 30.”

Ja akkor ezért nem találtam én, mert a PIC18F2423 adatlapjában kerestem.
Kb 3us elég lenne, de megnöveltem 17us-ra, ennyi bőven elég lesz. A linearitás-hiba semmit sem változott.

Köszönöm a tanácsodat a szivárgó áramokkal kapcsolatban! Hasonlót már egyszer használtam egy nagy impedanciás mérőbemenet diódás védelmére, ahol a záróirányban lévő dióda szivárgó áramát pontosan így redukáltam nullára. Eszembe sem jutott hogy ez itt is használható lenne...
De amúgy most már mindegy, mert egész másképp fogom megoldani azt a labortápot, és ebben már nem lesznek a mérendő jelek elvezetve talán másfél centiméternyit sem.
(#) watt válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
Idézet:
„és ebben már nem lesznek a mérendő jelek elvezetve talán másfél centiméternyit sem.”

Nem ez számít, hanem a bemeneti impedancia. A mérő vezeték hossza másodlagos. attól legfeljebb további zavarok keletkezhetnek, amit a fent említett megoldással nem lehet csökkenteni.
(#) Attila86 válasza watt hozzászólására (») Máj 8, 2010 /
 
Nem tudom hogy olvastad-e az oldalamon, de a hiba a páratartalom-változás okozta szivárgó áram volt ami a 20-30cm-es jelvezeték és az ezt teljes egészében körbevevő árnyékolás közt jött létre. Tehát minél hosszabb, annál nagyobb a szivárgó áram.
(#) Hp41C válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
- A DS39755C nem az?

DS39755C.JPG
    
(#) Hp41C válasza watt hozzászólására (») Máj 8, 2010 /
 
Szia!

Két mintapélda...

Guard.JPG
    
(#) Attila86 válasza Hp41C hozzászólására (») Máj 8, 2010 /
 
DS39755C
39755A

Én a 39755A-ban kerestem.
(#) icserny válasza Attila86 hozzászólására (») Máj 8, 2010 /
 
PIC18F2423 esetén ezen az oldalon kell megnézni, hogy melyik a legfrissebb kiadású adatlap és ERRATA.
Következő: »»   736 / 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