Fórum témák     
 
 » Több friss téma  | 
			
				Helló Mindenki! 
				
		Szeretnék PS2-es billentyűzetet PIC-hez illeszteni. A Google-ben csak angol leírást találtam és az angol nem az erősségem, gondoltam előbb megkérdezem itt az okos kollégákat, tudnak-e segíteni (talán így gyorsabb). - Szóval, valamilyen konkrét protokoll-ra lenne szükségem, ami alapján fel tudom programozni a PIC-et. Köszönöm! 
				Hát a protokoll az a PS2 protokoll. Szerintem nem kell sok angol tudás a megértéséhez, én legalábbis az alábbi két oldal alapján összehoztam egy PS2 dekódoló rutint C-ben egy 18F2550-hez. Nem bonyolult a C kód sem, nem nagy dolog átírni asm-re. Ha érdekel a kód, amit írtam, megoszthatom. Mondjuk egyenlőre csak a billentyűzet által küldött adatok fogadása van meg, a billentyűzet felé még nincs kész a kommunikáció, de az gondolom nemis annyira lényeges számodra. 
				
		A lényeg, hogy az órajel láb lefutó élére kell reagálni, és ebben a pillanatban megnézni az adatlábat. Az adatlábon megjelenő jel ugyanolyan, mint a soros porton megjelenő, csak itt 9 adatbit van, és a sebességet az órajel láb határozza meg, nincs szabványos sebesség. http://www.electronic-engineering.ch/microchip/projects/keyboard/v1...x.html http://www.networktechinc.com/ps2-prots.html 
				Találtam magyar linkeket: 
				
		http://vfx.freeweb.hu/info/index.html http://www.vfx.hu/info/atkeyboard.html 
				Szerintem érdekel bennünket a kód.  
				
		  Miért kell ezt mindig megkérdezni? Kódot föl, oszt' kész...  
				Jóvan, csak ráncba kell szedni, meg némi kommentet hozzáadni, hogy érthető legyen más számára is.  
				
		 						
				Nagyon örülnék a programnak, de azt hiszem más ide látogatók is... 
				
		Imába foglalom a neved, ha megkapom      Előre is nagyon köszönöm 
				Na itt kód. Csak ami magyarul van kommentezve, az kell a PS2 feldolgozásához. Nem megszakításból van az egész kezelve, mert az valamiért bezavar az usb-nek, de ezt remélem nem gond átírni, ha úgy kell. 
				
				
		Várom a kérdéseket.  						
				Most nézem, benn maradt két sor: 
				
		if (kod==0x22) LATCbits.LATC2^=1; Ez szintén csak egy ledet kapcsolt ki-be, amikor a bejövő kód 0x22 volt. Csak a teszteléshez kellett, amúgy nincs rá szükség. 
				Jól használható a mikroe compiler-ei is. Mindegyik ismeri a PS2-t. 
				
		Bővebben: Link 
				Hello! 
				
		Egy dolgot nem értek. Miért akar (kell) a számítógép adatot küldeni a billentyűzet felé? 
				Pl. ha két billentyűzet van egy gépre kötve, akkor egyiken benyomon a NumLock-ot és a másikon is bekapcsol a led. Ezért kell például. De sok olyan dolog van amiért még szükség van rá. Nem egy billentyű van, ahol néhány működési paramétert gépen tudsz szetupolni. 
				
		Továbbá fel kell szólítani a billentyűt indulásnál, és el kell indítani az init folyamatot. 
				vagy pl a gép azt mondja, hogy én most energiatakarékos állapotba kapcsolok, te is kapcsold ki magad, esetleg figyeld X billentyű lenyomását... 
				
		(bár nem tudom hogy létezik-e ilyen, de nem lenne hülyeség) 
				Az egyik ilyen látható dolog, az a ledek állapotának beállítása. A num lock az egy ugyanolyan gomb, mint pl. a C betű. Generál egy kódot a lenyomás pillanatában, amit elküld a gépnek. A ledet a gombnyomás közvetlenül nem állítja. A gép amikor vett egy Num Lock jelet, akkor sajátmagának eldönti, hogy most a be vagy kikapcsolt állapotban legyen-e a num lock funkció, és küld egy parancsot a billentyűzet felé, hogy kapcsold már be (vagy ki) a num lock ledet. 
				
		A másik, hogy az adatátvitel során van hibaellenőrzés is, paritásbit segítségével. Ha a gép hibásnak érzékeli a vett adatot, akkor küld parancsot a billentyűzet felé, hogy ismételd már meg az előzőt. Azután van olyan is, hogy a gép periódikusan lekérdezheti, hogy a billentyűzet jelen van-e. Küld egy Echo parancsot (asszem EEh), amire a billentyűzet szintén Echo-val (EEh) válaszol. Ha nincs válasz, akkor valami probléma van, ebben az esetben megpróbálhatja resetelni a billentyűzetet. PS2 billentyűzetnél az ismétlés sebességét is szintén egy paranccsal lehet állítani. (USB billentyűnél az ismétlés is szoftveresen van megoldva, csak a billentyű lenyomásakor és felengedésekor van kódgenerálás.) Viszont a billentyűk funkciója nem módosítható. Ha lenyomtál valamit, az mindig ugyanazt a kódot generálja. Az állíthatóság (pl. multimédiás billentyűzeteknél) szoftveresen van megoldva. Persze elvileg nem lehetetlen megoldani, hogy az adott gomb másik kódot generáljon, de idáig még nem láttam erről szóló leírást a neten. Az indításnál igazából nem lenne lényeges a kétirányú kommunikáció. Bekapcsoláskor a billentyűzet küld egy BAT jelet (Basic Assurance Test), amivel jelzi a gépnek, hogy jelen van, és hogy készen áll a működésre. 
				Értem. És mi van akkor, hogyha, mint a címben is szerepel, mikrokontrollerhez akarom csatlakoztatni a billentyűzetet. Akkor is feltétlen szükség van az oda - vissza kommunikációra?						 
				
		
				az csak egy fícsör... vagy használod vagy nem...						 
				
		
				Úgy értem, hogy ha a num lock LED-jet nem használom. Nekem csak a billentyűk kellenet. A billentyűn nem kell semmiféle visszajelzés. Ekkor elég csak a egy irányú komunikáció, nem?						 
				
		
				Akkor elég. Bekapcsolás után 7-800ms múlva kapsz a billentyűzettől egy BAT jelet, és azután készen áll a működésre.						 
				
		
 
				Egy PS/2 billentyűzetet szeretnék bekötni PIC16F88-hoz, hogy a RA2 lábra data, RA3 pedig clock menjen. A kód már kész, csupán a bekötéshez kellene segítség: piros, sárga, zöld és barna erek jönnek a billentyűzettől, és ha a sárgát negatívra húzom, akkor folyamatosan villog a billentyűzet, viszont ha a barna(?) és zöld(?) a tápfesz, akkor pedig folyamatosan világít. Azt kellene elérni, hogy ugyanúgy, mint rendes számítógépnél egyet villanjon, majd lehessen használni. Tehát mit hova kössek? 
				
		(?)Nem vagyok benne biztos... 
 
 
				Köszi, a billentyűzeten eredetileg DIN csatlakozó volt, csak kérdés, hogy annak hasonlítanak-e az ér-színei PS/2-höz... Viszont holnap ez alapján megpróbálom kimérni...						 
				
		
				PS2 felületet implementáltam PIC-re (F883) és egy PS2/USB átalakítón 
				
		át viszek be adatokat egy PC-be,t.k. billentyűzetet emulálok. A "NUMLOCK" állapotát ki lehet olvasni a PS2 felületen? Kösz. a válaszokat előre is. 
				A billentyűzet nem foglalkozik a numlock állapotával, mindössze scan kódokat küld a billentyű lenyomásakor és felengedésekor. A scan kódok nem függnek a módosító billentyűktől (shift, ctrl, capsloc, numlock stb). A scan kódok asc2 kóddá történő átalakítása már a PC (illetve a te esetedben a kontroller) feladata. Magyarul ha lenyomod a numlock billenytűt, elküldi a numlock billentyű scan kódját. A kontrollered feladata lesz, hogy ekkor küldjön a billentyűnek egy led állapot parancsot (amiben a numlock led már ellentétes állapotban lesz), és másik kódlapot használj az asc2 kóddá alakításhoz. ARM-hez itt egy ps2 billentyű és egér driver, ebből kibogarászható a működése.						 
				
		
				Én a kontrollerről küldöm a scan kódokat a PC-re, de a billentyűzettel beállított NUMLOCK állapotától függ, hogy pl. a numerikus gombok "4"-es gombja scan kódjának küldése  egy excel cellába a "4" -es számjegyet ír vagy a kurzort mozgatja egy cellával balra. 
				
		A PC h'60'-as címen található R/W regisztere mutatja a NUMLOCK állapotát.Ehhez akartam hozzáférni a PS2 felületről. Most esett le a húszfilléres. Küldök egy NUMLOCK scan kódot és beolvasom a PC-ről jövő, a LED-eket kapcsolgató választ. Ha nem jó,küldök még egyet. Kösz hogy foglalkoztál a dologgal. A hozzászólás módosítva: Nov 8, 2021 
						
				Igen, a numlock scan kód küldés és led állapot parancs figyelése is jó, vagy akár használhatod a különálló nyíl gombok scan kódjait is. Ezek ugyan két bájtosak, de nem hiszem, hogy ez problémát jelentene.						 
				
		 | 
			Bejelentkezés     
    Hirdetés      | 
			




 
 Előre is köszönjük, Mester! 




