Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Kérdezni szeretném hogy komparátor esetében a hol állítható hogy a kimenet mely állapot változására következzen be az interrupt? Beállítható ez valahol? Vagy bármilyen állapotváltozásra (H - L / L - H ) bekövetkezik a megszakítás?
Hű, ez komolyan hangzik..Nem fizettek ki egy projectedet? Jártam már én is így csak nekem könnyebb dolgom volt. A 2,4 gigás ISM sáv egy részét kellett sweepelnem 5 mhz szélesen 100 mW al, és mindjárt sírva könyörögtek a megoldásért...
Francokat! Egyszerűen csak le szeretném próbálni megismételhető hibákkal a hálózatomat!
Ezt nekem is meg kéne néznem az adatlapban, de ha jól emlékszem bármelyik változás megszakítást okoz.
Szerintem is így lehet, mert a bemeneteket tudom állítgatni, a kimenetet tudom invertálni...stb. És bárhogyan állítom egy L - H / H - L (vagy az inverzére) átmenetre 2X fut le a megszakítás...Ezen még agyalnom kell hogyan oldjam meg. vagy még az is jó lenne ha a két interrupt közé be lehetne préselni egy 0,5 sec es várakoztatást.
OFF: Szemely szerint nem szeretem mikor valaki direkt hibat csinal ilyen esetben. Eddig a legjobb amit ki nem fizetett munkara hallottam: Az egyik ismerosom mar nem tudom hany levelen, telefnon stb tul volt, ceg meg mindig nem fizetett, hat beallt a ceg parkolojaba a vezerigazgato kocsijat elallta a sajatjaval es ugy hallgatta a zenet. Jon a vezer, mondja neki "Uram, elallna a kocsijaval, szeretnek kiallni", mire o lazan, "Persze"... de tovabbra is ott ul es hallgatja a zenet. Vezer kicsit idegesebben "Ne haragudjon de sietek, elallna az utbol?!" Mire o megint: "Persze". Harmadszorra az urge mar igencsak mergesen orditott, hogy "Azt igerte elall az utbol, miert nem all el?!?!?", mire o: "Hat maga is igerte, hogy kifizeti a munkam..." Na, 10 perc mulva mar utalodott a penz a szamlajara... :ON
OFF
Hát esete válogatja a megoldást. Az én esetemben az adós egy (mint utóbb kiderült ) "elúszott" kis Bt volt, vezérigazgató nélkül. Én sem vagyok híve az ilyen megoldásoknak, de még előleget sem kaptam és az anyagköltségben is az én pénzem állt. Elszakadt a cérna...De ez is bejött! ON
OFF
Ha már előre van némi gyanú arra vonatkozóan, hogy nem lesz kifizetve, akkor eleve be kell tenni valami időzítést, hogy mikor álljon le a cucc. Pl. három hónap múlva. Kontrollernél nem egy nagy dolog egy számlálót növelni, és időnként elmentenni az eepromba a kikapcsolás esetére. Ha megtörtént a kifizetés, akkor 1-2 hét múlva elmenni, és az időzítést kivenni egy "csak leellenőrzök valamit" szöveggel. Ha meg nem fizettek, akkor majd fognak... ON
Mindkettőre megtörténik a megszakítás, de a rutinod elején le tudod ellenőrizni, hogy most épp milyen a komparátor kimenete, ebből pedig következik az, hogy milyen irányú volt a változás.
Nem az a gondom hogy nem tudom melyik állapot adja a megszakítást, ez az adott alkalmazásban mindegy, nomeg a komparátor kimenetét is tudom invertálni ha akarom. A gond az hogy nekem csak az egyik állapot bekövetkezésekor kéne lefusson az interrupt, a másiknál nem. Ennek megoldásaként arra gondoltam hogy figyelni kellene a komparátor kimenetet és ha átmegy mondjuk H ba akkor letiltani a komparátor interruptot, mikor visszabillen akkor engedélyezni.
Régebben írtad hogy egy megszakításba nem szerencsés várakozást rakni. Mi is volt ennek az oka? Kerestem, de nem találom az erre vonatkozó hozzászólásokat...
Látom a ki nem fizetést már tök jól megoldottátok, de mi van a hibagenerálással!?
Ember, ha az egyik állapotot érzékeled, akkor egyszerűen kilépsz a megszakításból az olyan, mint ha meg se történt volna!
Esetleg ha half-duplex módban az éppen küldő Master mellett egy másik egység is küldene, vagy egyszerűen csak "ráül" a két vezetékre adott ideig...
Átviteli hibát szeretnél, vagy valami mást?
Nem igazán látom, milyen hibagenerálásra van szükséged.
Mintha azt írtad volna, hogy ugyanazt a hibát kellene előállítani megismételhetően, erre csak egy elég bonyolult, de biztosan működő ötletem lenne: a hibát tartalmazó jelsorozat jelváltásai közti időket eltárolni, és ennek segítségével később ugyanezt vissza lehet játszani bármikor. Egy megfelelő RS485 illesztőre kell vezetni a visszajátszott jelet. Vagy nem valami ilyesmire gondoltál?
igaz... Akkor nincs erre megoldás? Valaminek biztosan lennie kell, csak megint nem látom a fától az erdőt.
Mire kellene megoldás? Miért lenne Neked annyira fontos, hogy fizikailag ne következzen be a megszakítás?
Az nem jó, ha úgymond kettővel osztod az interrupt-ok számát? Feltételezem, hogy tudod, melyik szintváltás következik be legelőször, ez alapján egy bitet beírsz-kitörölsz minden megszakításnál, és csak akkor hajtod végre a teljes ISR-t, ha épp a kívánt szintet azonosítja az a bit (egyébként meg bit negálása, és RETFIE).
Mert így a megszakításban lévő program 2 X fut le amikor át/viszza billen a komparátor. A komparátor referenciája "X" V ra állítva a N+ bemeneten. A N- bemenetre érkezik egy folyamatosan és esetlegesen változó DC fesz. Amikor ez a fesz. eléri a N+ értékét akkor átbillen a komparátor és lefut a megszakításprogram. idáig rendben. De mikor a fesz. vissza esik az N+ értéke alá akkor is lefut a megszakításprogram, és ez a baj.
Ezt most nem nagyon értem...egy éppen futó megszakításból ki lehet lépni? Én azt hittem ha egyszer bekövetkezett akkor az már mindenképpen lefut teljesen. A megszakításba is rakhatok ezek szerint pl. egy bemenet pollozást és mondjuk adott esetben GOTO val kiléphetek belőle? Mert akkor ez egészen más megvilágításba helyezi a dolgokat és nekiállok egy új programnak.
Hülyeséget írtam, nem is kell plusz bitet állítgatni, ott a COUT. Ha nem a megfelelő szintet jelzi, visszatérsz a megszakításból, és nem hajtod végre a rutint.
Tehát arra gondolsz, hogy egy PIC-ben kéne írni egy soros jelet előállító progit, ami egy RS485 illesztővel rádumálna a portra, szoftveresen generálva a kívánt jelsorozatot, ill. szándékosan elrontva azt, akkor amikor kell?
Ha igen, ez egész jó ötlet, most már csak a programot kéne megírni. Kérdés milyen jellegű hibákat kéne generálni. pl. 1. jelfolyam megszakad(végleg, vagy részlegesen) 2. bit sérülés 3... Itt azért akadtam el, mert a többi hiba e kettőből levezethető. Vagy tévednék?
Lehet hogy hülyeségeket kérdezek, de a mondás szerint "egy csecsemőnek minden új"...
Nem GOTO-val, hanem RETFIE-vel kell kilépned, különben túlcsordul a verem. A GOTO-t csak a megszakítási rutinon belüli ugrásra használd, így elugorhatsz oda, ahol a regiszterek visszaállítása, és a visszatérés a normál ISR alatt egyébként is történne, és úgy hajtod végre, hogy átlépted az összes többit.
Most az tényleg baj, hogy lefut kb. 15 utasítás? Mert a rutin elején beteszed, hogy
Esetleg vártnál hosszabb adatcsomag. Az LG frekiváltónk egyszer produkált ilyet valamiért, egy válaszban 1 byte pluszt is küldött, meg is akadt tőle az adatfeldolgozó progi...
Hú nagyon nagyok a hiányosságok!
Azt gondoltad, hogy csak egy dolgot lehet megszakításban elvégezni? Aztán azt hiszed, hogy a megszakításban folyó program más mint egy szubrutin? Tévedsz! Bármit meglehet csinálni, de nyílván nem goto-val kell kiszánkázni a megszakításból, hanem egy goto-val kell a kilépési pontra ugrani, ahol visszatöltöd a fontos regisztereket, majd RETFIE-vel kilépsz. A megszakításkor el kell tudni dönteni mi okozta(BTFSS, stb). Ekkor azt is el lehet dönteni, hogy a komparátor okozta-e. Ha igen, akkor azt is el lehet dönteni, hogy a komparátor bemenete éppen L, vagy H. Ha felfutó él érdekel csak, akkor csak a H esetén végzed el a műveletet, L esetén nem, mert L esetén nyílván lefutó él okozott INT-et! potyo beelőzött, rövid volt és zseniális, mint mindig!
Ezzel a más is küld a Master mellé, az a gond, hogy félek, hogy amikor egymásra ugatnak a driverek, akkor megsérülhet a kimenetük. Igazából az adatlapból nem derül ki(vagy én nem értem), hogy beszélhetnek-e egyszerre a vonalak. Ja igen az SN75176BP a vonaldriver. Aztán az is gond lehet, hogy így nagyon nehéz lenne a hibát megismételni, mivel szinkronizálni kéne a fő adatfolyammal. Persze lehetne figyelni a vonalat, és úgy beleugatni. Ez egyébként nem is rossz, csak a fő kérdés fennál, hogy sérülne e a kimenet?
Ez jó, meg lehet rövidebb is! Köszi!
1. jelfolyam megszakad(végleg, vagy részlegesen) 2. bit sérülés 3. várnál hosszabb csomag 4. vártnál rövidebb csomag 5... ? |
Bejelentkezés
Hirdetés |