Fórum témák
» Több friss téma |
Szia.
A program eredetileg pic16f873-asra íródott. Megnéztem az adatlapját és a 877-essel ugyan az csak ez nagyobb. Így átírtam az includokat mindenhol 877-re. Mellékelem a fájlokat. Idézet: „szimpla rutinnal 20-30mSec-re beállok, de most alacsonyabb rutin idővel kellene dolgoznom. Valahol a 8mSec már a legvégső határ. Inkább 5-6mSec kellene olvasási ciklus időnek.” Ebből nem érthető, hogy mi a problémád! 8 ms-onként garantáltan nem fogod tudni nyomkodni a gombot...
CCS fordító kell hozzá. Arra figyelj, hogy a PIC16F877-nek van egy 'A' betűs változata - mint a 873-nak is - és ezt az include-ban is meg kell különböztetni!
Tudom úgy is írtam át.
CCS-t tartalmaz az mplab? Hi Tech-et azt találtam rajta.
CCS-t nem ismerem(csak gyári fordítókat használok), de azt tudom, hogy az MPLAB nem tartalmazza, külön kell letöltened, telepítened. Nem tudom, hogy felajánlja-e telepítés közben, hogy integrálódjon-e az MPLAB alá, lehet. De ha nem, akkor is biztosan le tudod fordítani a programot a saját szerkesztőjével(már ha van neki olyan, és nem parancssoros).
Szedtem le a progit ami a ccs-t berakja az mplab-ba, meg is jelenik mikor a project-> set language tool location-> ccs c compiler for pic12/14/16/18.
Hát, szerintem több lesz mint 2 kb. Az eredeti ami 873-asra van az 5,23 kb.
Olyan áramkört gyártok éppen, amire nem csak kapcsolót kötnék. Rákerülhet valamilyen elektronikus kütyü is, és oda jó lenne, ha max 10mSec széles impulzust már biztonságosan regisztrálni tudnék. Ergo bármilyen is az emberi mutatóújj tehetetlensége, most kicsit gyorsabbra kellene szabni a dolgokat.
Prellmentesítéshez kellene ciklus időt választani. Nem az a kérdés, tudom-e nyomkodni 8mSec időnként a gombot, mert azt nyilván nem. A kérdés az, hogy miután lenyomtam, és úgy hagytam, mennyi lehet az az idő, amíg a kapcsoló mechanika sajátosságai miatt (fémoxid, beszikrázás, ilyesmik) lifeg a ténylegesen mérhető szint? Vajon megmarad uSec nagyságrendben, vagy elérheti a mSec nagyságrendet is? Ilyesmi a problémám.
Szia!
Mechanikai probléma... Minden kapcsló máshogy viselkedik ebből a szempontból (prell-nek nevezik a jelenséget) néhány tized ms és pár ms között lehet. A jobb gyártói katalógusok megadják ezt az időt. Azokban érdemes utánanézni... P István
Szia!
Ha ennyire kritikus a helyet, miért nem használsz hardver prellmentesítést - 1 db 74HC00 -ból két kapcsolóhoz való aszinkron flip-flop kijön... A programba már nem kell prell-mentesítés... Szia. Idézet: Nyilván a kapcsoló felépítésétől és a kontaktusok felületi állapotától függenek a pergés jellemző paraméterei. Tudomásom szerint inkább ms mint us...„Vajon megmarad uSec nagyságrendben, vagy elérheti a mSec nagyságrendet is?” - Lehet a nyomógombhoz elektronikus pergésmentesítést használni (vagy Hall generátoros nyomógombot használni). - Lehet az elektronikusan keltett (rövid) impulzushoz imulzusnyújtót (pl. monostabil multivibrátor) használni. - Lehet a bementre kapcsolt vezérléstől függő (nyomógomb vagy alaktronika) különböző késleltetést használni (ekkor jumperrel vagy más módon tudatni kell a mikrovezérlőt az átállásról.
Van egy olyan megoldás, ahol nem csak a gomb lenyomását figyeled, hanem azt is, hogy el lett-e engedve. Bármeddig lenyomva tarthatod(így bármilyen hosszú, máshonnan származó impulzust is tudsz kezelni), de egy ideig le kell nyomva lennie, hogy a prellmentesítés meglegyen.
Ezt jelzőbitekkel és időzített ciklusban való vizsgálattal lehet megoldani. Nekem a legegyszerűbbnek a megszakításban való lekezelés tűnik, ahol adott időnként(pl. 1ms timer megszakítás) megviszgálod, hogy a gomb le van-e nyomva, ha igen beállítasz egy jelzőt, majd azt vizsgálod néhány cilus ideig(te határozod meg, hogy hágy ms legyen a prellmentesítés), hogy elengedted-e. Ha igen, akkor beállítod a gomb lenyomva jelzést(amit a fő ciklusban vizsgálhatsz), és a többi segédjelzőt törlöd.
Letöltöttem, le is fordítottam a projektet. a hex fájl beégetése már nem megy.
Auto-connect not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.) Connecting to MPLAB ICD 2 ...Connected Setting Vdd source to MPLAB ICD 2 ICDWarn0020: Invalid target device id (expected=0x71, read=0x4D) ...Reading ICD Product ID Running ICD Self Test ...Passed MPLAB ICD 2 Ready Programming Target... ...Validating configuration fields ...Erasing Part ...Programming Program Memory (0x0 - 0x3AF) ...Loading DebugExecutive ...Programming DebugExecutive ...Programming Debug Vector Verifying... ...Program Memory ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x3002, Val Read = 0x158A) ICD0275: Programming failed. MPLAB ICD 2 Ready Idézet: „ICDWarn0020: Invalid target device id (expected=0x71, read=0x4D)” Valahogy ezen a problémán kellene segíteni. Ehhez az tud tanácsot adni, aki tudja, hogy mit mivel dugtál össze...
PIC-et nem tudta azonosítani, mert nem jól van kiválasztva (Configure-> Select Device...)
Kotorásztam éppenséggel kapcsoló katalógusokban, de ilyesmi adatot nem találtam.
Legrészletesebb katalóguslapot még Omronék adtak, van benne minden más, épp csak ez nincs. Tudsz linket adni akármilyen kapcsoló katalógus lapjára, amiben ilyen adatot láttál?
Jelenleg azt csináltam. 4 bites fifo buffer analízise, olvasási ciklus idő 640 uSec. Amit ujjacskámmal nyomogatok, ennek így kutya baja. Viszont jól jön mások tapasztalata is, mert nem csak ilyen apró mikrokapcsolóval kell majd működnie.
Hp41C, icserny:
A prellmentesítő áramköröknek mind az a logikájuk, hogy behúztak, és külön ki kell oldani őket. Száz meg ezer szónak is egy a vége: meg kell húzni egy időlimitet, mikortól fogadom el a kapcsolás tényét, és nullázom ki a flopot. Akár program, akár elektronika, az időlimit meghúzása a kulcs. Az 1 secundum esete pld nem áll rendelkezésemre. Kerestetik az a legkevesebb idő, ami a gyakorlatban már stabilan működhet. Az elmélet más tészta, azt most hagyjuk. Jobb híjján amikor stabilan visszaáll az élet, és kinyitnak végre a villanyszerelő boltok, elhúzok majd és veszek vagy 8-10 féle kapcsolót, amiket fellelni tudok, aztán kipróbálom mindegyivel. De ez így egy kicsit drága lesz Valami jobb ötlet?
Neked kell meghatároznod a maximális időt, amennyit a döntéshez ki tudsz várni. Ezután fogsz egy drótot és összeérinted. Ha működik, akkor minden kapcsolóval fog.
Szia!
A hw prellmentesítő flip-flop kimenetét nyugodtan viheted egy élvezérelt megszakítás bemenetre. A program a megszakítás okából tudni fogja, hogy melyik gomb volt megnyomva. A flip-flop pedig a felengedéskor magától vissza fog állni. Szia
Nekem még nem volt gondom kapcsoló pergéssel, hacsak nem drótot húzkodok ide-oda valahol...
Van egy topic itt a fórumon ami egy kicsit "leírt" bizonyos körökben, de ott nem pergett még senki kapcsolója a PIC bemenetén, ezt a rutint használjuk, akár minden bemenetre is, (itt pl: RB.0 bemenet az S0.0 a kimenti bitje a "rutinnak") az ..."inv" file -invertált PIC bemenetre. Ideje néhány ms, ha gyorsabb quartzot használsz még jobb!!! ime...
Ezek nem túl részletes adatlapok de benne van:
omron és micro switch Az angolok "bounce time" nek hívják a németek meg "zprellzeit"-nek: pulse switch
helyesen: prellzeit
A debounce, debouncing kulcsszóval további anyagok kerülnek elő
Isten vagy! Az az anyag csúcsszuper!
Már nyelem is, mint kacsa a vizet.
Tényleg, nem figyeltem és a simát választottam nem az A jelűt.
Köszi a tippet.
Sziasztok!
Olyan kérdésem lenne, hogy a Pickit2, ha Check Communication-t nyomok, miért törli a PIC tartalmát?
Nem tudom miért, mert én nem merném a PIC-emet rátenni addig, amíg nem vette fel a kommunikációt a PC-vel. Ezt nem próbáltam még ki, és nem is fogom. Ez nem normális működtetés.
Nem is úgy csinálom. A géppel össze van dugva, aztán elindítom a PK2 programot. Az kiírja, hogy Pickit2 Connected. Ezután rádugom az áramkörre, ezután Check Communication. Minden OK, felismeri a PICet, csak törli a tartalmát. Mi ezzel a nem normális?
Biztos hogy törli. A read-es dolgot meg pont most néztem én is. Ez a megoldás, csak elég hülyén néz ki, hogy kiolvassuk a ''még nem tudjuk milyen'' PIC tartalmát és csak utána tudjuk meg a típusát. Szerintem.
|
Bejelentkezés
Hirdetés |