Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Húha, Topi te ilyen részletekbe akarsz belemenni? Már a gondolattól is szédülök, de biztosan nagy haszna lesz, ha elkészülsz vele! Ez már nem is a PIC-ről szól, hanem inkább az elekronikáról mint olyan. Egyébként ezért szoktam azt mondani, hogy a PIC nem programozási felület, hanem inkább hardver! nemo kérdései is ezt támasztják alá! Természetesen ezt nem neked címzem, hiszen ezt már mi lecsekkoltuk egyszer!
Kitartást a cikkhez! Idézet: „Erről eszembe jutott, hogy van-e jelentősége, melyiket használom?” Itt végülis nincs igazán jelentősége a dolognak, ott van, ha ledeket kapcsolgatunk, akkor jobb, ha a led a táp és a láb között van.
Helló. Most foglalkozom a gombok illesztésével én is, pontosabban mondva a pergéssel. Azt szeretném mérni, hogy hány gombnyomás után pereg a gomb 255-öt. A gomb a PORTA,3 -ra van kötve, a beállítások jók, a "megvan" üzenet a PORTC 4 bitjének 1-re állítása lenne. De valami miatt ez egyből megtörténik. Szeretném, ha megvizsgálná valaki ezt a kódot, mi lehet a hiba:
...(beállítás) movlw b'11111111 movwf darab movlw b'00000000 varakozik: decfsz Delay1,f ; same delay as above goto varakozik decfsz Delay2,f goto varakozik vizsgal: btfss PORTA,3 decfsz darab goto vizsgal movlw b'00001111 movwf PORTC goto vege vege: nop goto vege end tehát a hiba az, hogy a négy bit alapból 1-re vált, gombnyomás nélkül.
A decfsz akkor ugrik, ha a csökkentett bájt 0-ra vált. Mivel a 'darab' kezdő értéke b'11111111' ezért ez egyből bekövetkezik.
Az nem az incfsz lenne?
A decfsz az csökkent a regiszter értékből, az incfsz pedig növeli, azaz túlcsordulva nullázódik, közben a Carry-ben 1-es jelenik meg... tszaboo! Egyébként elegánsabban úgy szokták a "nagyok" csinálni, hogyha csak egyetlen kimenetet kell ki-be kapcsolgatni, akkor az egész portot nem állítgatják... Tehát a következő utasítást célszerűbb lenne majd a későbbiekben használni: bsf PORTC,4 <<< magas szinten lesz a PORTC 4-es kimenete bcf PORTC,4 <<< alacsony szinten lesz ez a kivezetés>>>>>>
csökkenteni akarom, ha a b'11111111-at csökkentem 255 ször, akkor lesz 0 és akkor jut ki a "vizsgal" ciklusból. A csökkentésnek meg csak akkor szabadna bekövetkeznie, ha PORTA,3 magas értéket vesz fel, tehát gombnyomás közben. Az elejére biztonság kedvéért tettem be a várakoztató rutint, de az sem segített.
Van egy sejtésem...
Szerintem itt nem btfss-t kéne használni, hanem btfsc-t PORTA vizsgálatára Ugyanis jelen esetben az van, hogy btfss-nél átugorja a program a darab regisztert csökkentő utasítást... Azaz, akkor számlál, ha nincs lenyomva a gomb
DECFSZ azért DECFSZ, mert Decrementál, tehát csökkent.
Az INCFSZ azért INCFSZ, mert inkrementál, tehát növel. b'11111111'-at a DECFSZ b'11111110'-ra fogja csökkenteni.
Ha felhúzó ellenállás van akkor BTFSS-t. Mert akkor lesz nulla ha le van nyomva és a gomb a bemenetet földre húzza.
Akkor "Skippel" ha Set (vagyis 1). De mivel a lenyomott gombic miatt 0, ezért nem skippel tehát végrehajtja a DECFSZ-t.
Nincs felhúzó-ellenállás, ez kiolvasható az elmondottakból :yes:
Idézet: „A csökkentésnek meg csak akkor szabadna bekövetkeznie, ha PORTA,3 magas értéket vesz fel, tehát gombnyomás közben.” by tszaboo
Gombokat nem szabad rendesen bekötni, zavarérzékenység miatt. A zavar általában pozitív feszültség lökés. Ha ellenállással nem tápra hanem földre van húzva, a feszültség lökés megemeli a bemenetet és hamis lenyomást érzékel.
Míg ha tápra van húzva a bemenet a pozitív feszültség lökés nem zavarja. Sőt. A negatív sem, mivel a 2,7V-ig nem esik le. Ezért kötik a gombicokat mindig fordítva. Ha lefelé húzza a bemenetet az ellenállás még akkor is bekapcsolást érzékel ha hozzáérsz a bemenethez. Hála a jó kis fetes konstrukciónak, ami egyébként mindenhol előny
Szerintem nem derül ki, hogy van e felhúzó, de az sem, hogy nincs. Sőt az sem derül ki, hogy a gomb megnyomására milyen szint lesz a bemeneten.
tszaboo! Leírnád hogy van megoldva a gomb bekötése?
Igen, de itt jelen esetben teljesen más volt az előírt feladat :yes:
Idézet: „Azt szeretném mérni, hogy hány gombnyomás után pereg a gomb 255-öt.” by tszaboo
Teljesen mindegy. Leírása alapján pont a fordítottját csinálja a program, mint amit kellene. Ennek oka lehet a PORTA bemenet invertáltsága.
Idézet: „tszaboo! Leírnád hogy van megoldva a gomb bekötése?” Igen, ez is lényeges a feladat megoldásához! tszaboo! Jelentkezz!!! Egyébként jelen feladatot úgy a legcélszerűbb mérni, hogy a PORTA 3-as le van kötve pl. 1k-val a földre... A nyomógomb pedig a PORTA 3-as és a tápfesz között van bekötve...párhuzamosan nincs semmilyen kondi sehol! Így lehet legreálisabban megmérni a tényleges pergések számát...
mivel még lusta voltam saját panelt csinálni, ezért a gyári LPC próbapanelon programozgatok. Mondjuk lassan kinövöm. Csatoltam a leírását, van felhúzó ellenállás (kapcs.rajz az utolsó oldalon). Próbáltam a BTFSC PORTA,3-mat, azzal sem működött.
És a cél a pergés mérése lenne. Tehát ha 1 gombnyomás közben pereg mondjuk 20-at, akkor 12 gombnyomás alatt gyullanda föl a 4 darab led.
„Azt szeretném mérni, hogy hány gombnyomás után pereg a gomb 255-öt.”
Erre ez a program nem alkalmas. Először azt kéne megnézni, hogy a gombot egyáltalán lenyomták e, majd ha igen akkor azt, hogy hányszor "engedték el". Itt még az is érdekes lenne, hogy az "elengedés" időtartama egy prellnek, vagy egy valós elengedésnek felel e meg. Egyébként nem is értem miért érdekes, hogy egy gomb mennyit prellel? Simán ki lehet védeni mindenféle prellt programból.
Most hogy mondod, valami van abban, hogy nem nézem a felengedést. A Jumpereket erről már lehagyták, nem lehet lekötni a dologkat, minden fixen rá van kötve a PIC-re ezekett lehetett megszakítani egy korábbi revízióban. De tényleg hibás a programom, elmegyek átdolgozni.
Topi: A cikked nagyon hasznos, várom a folytatását, tényleg a gombokkal kéne foglalkoznod.
Oké. Azért érdekelne miért akarod tudni a prellt?
Ha sikerül megmérned, feltehetnéd hogyan sikerült! Idézet: „Azért érdekelne miért akarod tudni a prellt?” Szerény véleményem szerint csak a kíváncsiság hajtja ebben az ügyben tszaboo-t... Mármint mindenhol az van írva, hogy "programból mindig kezeljük le", mert nem ad biztos működést a véletlenszerűségének köszönhetően... Ez eddig szerintem mindenkinek világos is... Viszont szerintem tszaboo szeretne utánajárni, hogy valójában mi is az a "folyamat", amit a prellmentes programmal kiszűrünk...hogy zajlik le, és valóban hányat "szokott" prellezni egy-egy lenyomáskor az átlagos gomb-lenyomás... Végülis alapok tanulgatásához ez se rossz "kezdő"-feladat
Nagyonis igazad van. Kíváncsiság.
Megírtam a kódot, ami működik, és számolja a pergést. (Prell, ez szakkifejezés?) így néz pontossan ki: vizsgal: lenyom: bsf PORTC,2 btfsc PORTA,3 goto felenged goto lenyom felenged: bcf PORTC,2 btfss PORTA,3 goto atment goto felenged atment: ... (számolás, végén jelzés) A PORTA,3-at ellenőrzésképp világíttatom meg. A mérési eredményeim, 50 zárás-nyitás mérése: 25, 39, 34, 24, 37, 31, 30, 31, 35, 34 A mérések átlaga: 31,9 A mérések szórása: 4,53 terjedelme: 24 - 39 1 gombnyomás értéke: 1,28 gombnyomás Az esetek 48%-ában következik be pergés, ha 1 pergéssel számolunk. Ez csak az én elrendezésemre igaz, de -tekintve hogy máshol több százas pergésről olvashatunk- elég stabilnak mondható.
Nagyon érdekes statisztika! Nem sokan álltak neki ilyen mérésnek, ezért csak gratulálni tudok!
Egyébként neked ez miért volt hasznos? A perellmentesítéshez nem kell tudni mennyit prellel. De viszont gombnyomásra véletlenszám generálásra igen kíváló megoldás!
Hibát követtem el. A számlálásnál 50-et adtam meg, ami ugye nem egyenlő a .50-el vagy a D'50 -el amit én akartam (Idióta kezdő ). Tehát a mérések 80 gombnyomást jelentenek. Ezek után nem olyan jó a statisztika, mint gondoltam:
1 gombnyomás= 2,50 gombnyomás a pergés szinte mindig megjelenik, 1 gombnyomásnál többször is. Most a minimális időt próbálom ami a pergés megszüntetéséhez kell.
Sziazstok!!!!
Tudna vki ajanlani egy helyet, ahol olcson tudnek venni PIC egetot. USB-s kene, mert a gepemen sajnos mar nincs RS232. Koszi a segitsget! udv.: hpc Idézet: „a minimális időt próbálom ami a pergés megszüntetéséhez kell.” Á, szerintem nincs értelme ennyire kihegyezni ezt a dolgot Az a legjobb, ha az átlagos pergési idő sokszorosát várod meg...és akkor biztosan nincs már pergés...nameg ezért is szoktak néha a figyelni kívánt bemenetekre (amik ugye fel vannnak húzva tápra Topi által fentebb is említett okok miatt) egy kisebb kondit tenni a föld felé...
Igazad van, nincs értrelme. 1 millisec-nél már alig volt, de még érzékelhető volt! Aki bombát akar építeni , vagy valami más fontos dolog miatt akarja megszüntetni, az használjon többet. Kössz a segítséget mindenkinek.
hpc: A pickit 2-t ajánlom, itt van egy az orrom előtt, olcsóbbat nem találsz. watt: véletlenszám generálás? Nos igen, észrevettem, hogy ilyen parancs nem létezik a pic-eknél, és lehet hogy hiányozni is fog, de én inkább a timer0-ra gondoltam. De csak gondolkodom rajta, megoldásom még nincs. |
Bejelentkezés
Hirdetés |