Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
DE direktívával. Lásd MPASM Help
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?
Hali
Szerintem a bitvizsgalat nem teljesen jo. Eloszor varod,hogy 1-re valtson:
Udv Vili
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.
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?
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
MPLAB SIM-nél lehet valahogy megszakításba ugratni, mert W_1-ig lefut és ott ugrál a bitvizsgálatnál
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:
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!
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ó? Idézet: 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. „Hogy tudom átírni szimulációnál az IFS0 regisztert? Mindezt úgy, hogy menetközben fut a szimuláció?” 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)
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.)
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?
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.
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..
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. 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.
Hogyan kerekíted a 64-gyel történő osztás előtt? Az esetleges átviteleket figyelembe veszed?
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).
Úgy, hogy hozzáadok decimális 32-t. Az osztás után nem is lenne értelme kerekíteni.
- 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...
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!
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. 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.
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.
PIC18F2423 esetén ezen az oldalon kell megnézni, hogy melyik a legfrissebb kiadású adatlap és ERRATA.
|
Bejelentkezés
Hirdetés |