English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
PS2 mouse-ul computerului şi BASIC Stamp
Colin Fahey

1. Introducere

Acest articol descrie modul în care o PS/2 mouse-ului poate fi emulat BASIC Stamp de un computer. 

Aceasta explorare este informală. 
ps2_mouse_interior.jpg
Interiorul-un vechi stil (mingea se deplasează) computer mouse-ului: "Microsoft Intellimouse"  (I înlocuieşte optica cu senzori lung fire.)
Un mouse-ul are două axe: "X" şi "Y".  Atunci când mouse-ul este mutat "în plan orizontal," "X" roata in interiorul rotates al mouse-ului.  Atunci când mouse-ul este mutat "pe verticală" (pe o suprafaţă), "Y" roata in interiorul rotates al mouse-ului.  Pentru arbitrare mişcare al mouse-ului, "X" şi "Y" muta în conformitate cu roţi "orizontale" si "verticale" componente ale mouse-ului mişcare. 
ps2_mouse_interruptor_wheels.jpg
Optical interruptor roţi în interiorul mouse-ului
Atenţie la gauri in roti in interiorul mouse-ului.  Când roata rotates, infra-rosu (IR) luminii emise de un emită lumină IR dioda (LED) este întrerupt în mod repetat, la o rată proporţională cu rata de rotatie a rotii.  Astfel, mouse-ul ştie cum multe "incremente" (de asemenea numite "ticks)" axa mouse-ul sa mutat într-o anumită perioadă de timp. 

Determinarea direcţia de mişcare implică utilizarea de 2 senzori de lumina, amplasata foarte aproape împreună, de-a lungul paralel cu o axă de circulaţie a de la volan.  (Ambele senzori sunt într-o singură componentă 3-pin se arată mai jos.) 
mouse_sensor01.jpg
Mouse IR senzor de lumină (are două IR detectoare într-un singur pachet)
Centrul de aderenţă a pachetului, este pozitiv, colector de tensiune; 
Din stânga şi dreapta pin sunt de stânga şi dreapta senzor de ieşire emitters. 

Haideţi, cele două nume de senzori în pachet "A" şi "B".  Presupunem de la volan este iniţial la un unghi de rotaţie, astfel încât IR lumina este blocat de la ambele ajungand la senzori. 

Ca roata rotates, IR lumină de la emitter va fi capabil să treacă printr-un orificiu in roata şi de a ajunge unul dintre cei doi senzori, cum ar fi senzor "A".  Daca roata rotaţie continuă în aceeaşi direcţie, eventual în cel de-al doilea senzor, "B", va fi în măsură să IR primit lumina.  Daca roata rotaţie continuă în aceeaşi direcţie, în cele din urmă de lumină IR va fi blocat de la a ajunge la senzor "A".  Daca roata rotaţie continuă în aceeaşi direcţie, în cele din urmă de lumină IR va fi blocat de la a ajunge la senzor "B". 

Astfel, succesiunea este: 
(A,B):   ..., (0,0), (1,0), (1,1), (0,1), ...
Daca roata rotates în direcţie opusă, în termen de 4 secvenţa de mai sus va fi invers, incepand de la starea curentă.
Cu aceste două semnale de senzor putem determina rata de rotaţie, şi de direcţie.
ps2_mouse_circuit_board.jpg
Circuitul de bord al Microsoft Intellimouse
Pentru a înţelege mai multe despre modul în care interpretează circuitry mouse-ul de lumină şi comunică cu senzori de calculator personal (PC) (prin semnale de PS/2), am studiat circuitul bord. 

De microcip are următoarele nume de imprimat pe el: SPCP05A. 

O căutare de pe internet pentru cuvântul "SPCP05A" indică faptul că chip este produs de o firma cu numele "Sunplus Technology Co.".  Informatii despre "SPCP05A" microcip pot fi achiziţionate de la această companie. 

Aici sunt specificaţiile tehnice ale "SPCP05A" microcip: 
sunplus_ps2_3dmouse_datasheet.pdf
(Specificaţiile tehnice ale "SPCP05A" microcip)
1125022 octeţi
MD5: 359a9210275e021cc19a5e2391499dc5
Următoarea imagine prezintă semnalele de pin din "SPCP05A (PS/2 3D mouse)" microcip.
spcp05a_chip_signals_bmp01.jpg
Semnale de pin din "SPCP05A (PS/2 3D mouse)" microcip
De "SPCP05A" este, de fapt, o mică calculator!  Ea are un set de instrucţiuni, şi RAM, şi ROM, interne şi timp, etc  De fapt, o descriere a "SPCP05A" microcip în informaţiile furnizate de Sunplus Co.  greu se referă la utilizări specifice ale microcip pentru circuite "mouse-ul computerului."  Acest chip este un microcontroler versatil. 

Am studiat circuitul urme de pe circuitul de la bord, pentru a forma Microsoft Intellimouse următoarele aproximative schematic:
ps2_mouse_my_schematic.jpg
Aproximativ schematic a Microsoft Intellimouse  (Mă lipsesc cateva condensatori, dar acest schematic este aproape perfecta.)
Bui Van Chu, în Australia, citiţi articolul meu mi-a trimis şi o mai completă, schematic, care apare în următoarea imagine.
ms_ps2_mouse_schematic.jpg
PS/2 mouse-ul de schematic, mi-a trimis de Bui Van Chu din Australia
O schema este foarte simplă. 

Mouse butoane (stânga, mijloc, dreapta) merge direct la intrările de pe microcip. 

Cele trei perechi de senzori de lumina, (("X", "Y", "Z"), (de circulaţie orizontale, verticale circulaţie, mijloc al mouse-ului si roata)) trimite semnale direct de la alte intrări de pe chip. 

PS/2 de semnale DATA şi CLK (ceas) de asemenea, să corespundă I/O semnalele de pe chip. 

Am înţeles de schematic, de îndată ce am terminat-o de tragere (prin următoarele urme pe circuitul de bord). 

Un lucru nu am început să înţeleagă modul în care a fost IR LEDs au fost conectate la microcip (PIN 16: "PB1"), în loc de terminalele lor negativ (catod) pur şi simplu a fi conectate direct la sol.  Acest lucru este important!

2. Prima mea încercare de a controla mouse-ul de circulaţie

Urmatoarele comentarii se referă la o singură mişcare a lungul axei (cum ar fi "X", sau orizontal, axă). 

Primul lucru am incercat sa se deplasează un obiect între IR LED şi senzor pereche - pentru a simula efectul de rotaţie a roţilor cu mouse-ul.  Aceasta a lucrat.  I ar putea cauza mouse-ul pentru a muta cursorul în jurul ecran prin simpla miscare un obstacol prin IR lumina beam in mod repetat, în aceeaşi direcţie. 

Apoi, am înlăturat 3-pin senzor parte de la mouse-ul circuitului de bord, şi ataşat de sârmă pentru a circuitului de bord, în loc de senzor.  I manual conectat o sârmă de la pozitiv de tensiune pentru a simula senzor de activitate.  Am conectat cele două semnale de la putere în conformitate cu următorul model ("0" că o astfel de "reducere" reprezintă, şi reprezintă, "în" "1"):
(0,0), (1,0), (1,1), (0,1), ...
Aceasta a lucrat.  N-am putut muta cursorul mouse-ului pe ecran de prezenta tedious conectarea şi deconectarea de la sârme în modelul arătat mai sus.  Reversing modelul de la starea actuală, în secvenţa va muta cursorul în direcţie opusă. 

Pentru ca lucrurile au mers aşa de bine, am decis să vă conectaţi la cablurile de relee (controlate de RS-232).  Aceasta ar fi în esenţă, permiteţi-mi să fac exact ceea ce am făcut cu sârme pierdut: conectaţi senzorul de semnale de la putere terminale corespunzătoare, în succesiune.  Singura diferenţă ar fi faptul că omului (ma) nu ar trebui să facă tedious conectarea şi deconectarea. 

Dar ...  ea nu funcţiona! 

După o mulţime de adaptare de rezistente si condensatori, etc, am facut o descoperire stranie: Dacă am fost atinge anumite terminale în circuit, acesta a funcţionat perfect!  Solutia pentru a prezenta misterul apare în secţiunea următoare. 

3. The infra-rosu (IR) lumină trebuie să fie modulate

In urma unor experimente frustrant, am avut o nouă gândire: IR lumina ar putea fi pulsing la o frecvenţă înaltă, precum şi chip ar putea să aşteptaţi să primiţi această frecvenţă.  Constant lumina (mea sau simulate constanta senzor de ieşire) ar putea fi respinse.  Am fost oarecum perplexed de faptul ca lumina ambientală dintr-o lampă halogen etaj a fost acceptabil, dar am ştiut că, chiar şi lămpi incandescente au detectabile modulării. 

Am încercat pulsing o IR LED la înaltă frecvenţă şi blocarea senzori de aşteptat în funcţie de model.  Ea a lucrat! 

Asta a fost o!  De IR LEDs mouse-ul în circuitul bord trebuie să fie clipeste la mare viteză, şi trebuie să aşteptăm acest microcip clipeste, în plus faţă de rata relativ scăzută de lumină întrerupere de rotaţie roata (cu gauri). 

Prin pulsing de IR LEDs, şi aşteaptă, în acest pulsing deblocat un senzor de ieşire semnal, chip poate respinge orice ambiant IR semnale de la mouse-ul interferează cu funcţionarea.  De exemplu, lumina de la alte stray (constanta) nu va IR surse interefere cu mouse-ul. 

Am conectat un amplificator audio de la senzorul de ieşire, şi apoi atunci I a lăsa să ia în senzor de lumina ambientală exprimate de cuvântul meu de lampă halogen.  Am auzit un ton (60 Hz) distincte.  Când am estompate de lampă, tonul a crescut cum mulţi şi, în final, când sa oprit lumina a fost închisă.  Deci, acest senzor preia uşor de 60 Hz modulării în incandescenţă cu halogen bulb de podea lampa mea! 

Privind, acum, la schematic al mouse-ului PS/2 circuitul bord, semnificaţia de IR LEDs fiind conectat la un pin de pe microcip (în loc de la curent) este evident.  De microprocesor controlează clipeste de IR LEDs prin I/O de aderenţă, şi microcip pot corela intenţia sa de a flash de ID LEDs primit cu senzor de factori de producţie şi, astfel, respinge orice stray semnale (din cauza non-IR lumina clipeste).  (Cu toate acestea, nu este necesară corespondenţă.  Detectarea Pur şi simplu un număr minim de clipeste conteaza, ar putea fi un prag pentru a accepta senzor de intrare.) 

4. IR senzori bandpass cu filtre

Puteţi găsi IR senzori speciale, ambalate în tranzistor-ca forma cu trei conduce, care sunt "reglate" la anumite frecvenţe modulate IR lumină (de exemplu, 38 kHz). 
tuned_sensor01.jpg
Reglat IR senzor de lumina (maxim sensibilitate la lumină 38 kHz modulării)
Bandpass circuitry este conţinută în dispozitiv, impreuna cu IR foto-tranzistori. 

Deci, IR LED Pulsed poate fi, în general, la o frecvenţă de 38 kHz, astfel încât vor primi senzor de lumină şi lăsaţi electrice semnal merge la senzorul de iesiri. 

Pentru a transmite informaţii, ţinând seama de la IR LED poate fi întreruptă, la o rată relativ scăzută (de exemplu, 1 până la 100 de ori pe secundă).  Această frecvenţă redusă, pulsing este coroborat cu regim de înaltă frecvenţă pulsing; adică, de mică frecvenţă pulsing poate fi privită ca modulating de înaltă frecvenţă pulsing.  De înaltă frecvenţă pulsing este ca un "transportator val," la care informaţiile semnal (relativ scăzut-frequency modulation) este transportată. 

Cu toate acestea, am verificat că IR senzori în Microsoft Intellimouse nu au astfel de modulări de filtrare.  Cu toate acestea, circuitul are nevoie de lumină ca IR fi modulate într-o anumită măsură, în plus faţă de întreruperile de frecvenţă scăzută de lumină de la volan cu gauri. 

Urmatoarea schita ilustreaza diferenta de senzor de semnale pentru constanta IR LED lumina si clipeste IR LED lumina pentru diferite faze ale mouse-ului roata de cotitură.
ps2_mouse_quadrature_sketch.jpg
Senzor de semnale de ieşire pentru constanta IR caz şi în lumina clipeste IR funcţie de caz.

5. Simularea mouse-ul de intrare, folosind un computer BASIC Stamp

"BASIC Stamp 2" de calculator a programmability suficiente pentru punerea în aplicare a PS/2 de protocol.  Prin urmare, "BASIC Stamp 2" computerul poate fi conectat direct la PS/2 port al unui computer personal şi poate (PC) emulate PS/2 un mouse sau o tastatură. 

5.1 PS/2 de protocol

În anii 1998 prin 2003, majoritatea calculatoarelor personale a avut PS/2 porturi pentru mouse şi tastatură. 

PS/2 de port are 4 semnale: (1) CLOCK; (2) DATA; (3) +5V; (4) GROUND. 

PS/2 permite portul de dispozitive pentru a trimite date de la gazdă, şi gazdă pot transmite datele de dispozitive.  Toate părţile PS/2 pe un port (de obicei doar un dispozitiv şi gazdă) trebuie să aibă şi trebuie să detecteze semnale de altă parte, dacă este prezent, folosind semnale. 

Cum poate fi partajat de semnale?  Un semnal (cum ar fi CLOCK sau DATA) este, de obicei, "plutitoare" de mare, ceea ce înseamnă că semnalul este conectat la o tensiune pozitiv, printr-o rezistenţă, cu o inalta rezistenta (de exemplu, 4 kilo-Ohms).  Astfel semnalul este interpretată ca o logică "de mare" de ascultare de către toate părţile.  Orice parte poate trage linia scăzut (prin TTL logica), atunci când partea în intenţia de a trimite date.  Când se termină o parte a trimite un pachet, aceasta vă permite merg de semnalele nelimitat, astfel încât acestea să float ridicat din nou. 

Pentru a trimite date de la un dispozitiv (de exemplu, tastatura sau mouse) la computer personal (PC), trebuie să trimiteţi date în 11 de biţi de pachete, constând din următoarele biţi: (1) încep de biţi ("0"); (2) 8 biţi de date (LSB primul); (3) bit de paritate (paritate "nui adevărat);" (4) bit de stop "(1)."  Reţineţi că, atunci când este "parity" numărul total de biţi de "1" din biţii de date şi de paritate de biţi combinată este un număr nui adevărat. 

Următoarea diagramă ilustrează de transmitere a datelor dintr-un singur pachet: 
ps2_clock_data_dev2pc01_adj.jpg
PS/2 de protocol: dispozitiv pentru a găzdui (PC) pachet
DATA de linie ar trebui să fie setată la valoarea corectă, înainte de a alinia CLOCK linie de mici.  DATA de valoare ar trebui să rămână stabilit până la CLOCK linie este returnat inapoi la mare.  Când CLOCK linie este confirmată de a fi ridicat, DATA valoare poate fi schimbat la următoarea valoare de biţi. 

Tipice de viteza de ceas este relativ lent, despre 10 kHz la 17 kHz.  Asta este de 100 microsecunde de până la 70 microsecunde, pentru fiecare perioadă de ceas. 

De scenariu de gazdă (PC) a trimite date pe un dispozitiv asemănător cu dispozitiv de trimiterea datelor la gazdă, dar în toate cazurile, dispozitiv controlează CLOCK semnal în timpul de transmisie de date în sine.  De asemenea, un bit de date trimise de la gazdă (dispozitiv de la stabilirea CLOCK scăzut) ar trebui să fie latched, atunci când vă permite dispozitivului de semnal CLOCK face o tranziţie de la mare. 

O căutare Internet va dezvălui mai multe descrieri ale PS/2 semnale si detalii despre protocolul. 

5.2 PS/2 mouse-ul de pachete de date

Când computerul porneşte, sistemul de operare porneşte şi, eventual, comunică cu mouse-ul pentru a determina tipul de maus.  În mod implicit mouse-ul mai comporte ca un generic PS/2 mouse-ului.  Cu toate acestea, în cazul în care sistemul de operare stabileşte că mouse-ul este, de fapt, o "3D PS/2" mouse-ului (de exemplu, un mouse cu o roată), se poate spune mouse-ul pentru a schimba la 3D PS/2 protocol de mouse. 

Când vă mutaţi mouse-ul, sau apăsaţi eliberarea mouse-ului sau butoane, mouse-ul circuitry pentru a trimite date gazdă (PC), indicând ceea ce s-au produs modificări de stat din anul precedent indicaţie de stat. 

Generale PS/2 mouse-ul trimite următoarele trei pachetele la gazdă: 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  0  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)

L  = Left  Button State (1 = pressed down)
R  = Right Button State (1 = pressed down)
XS = Direction of X movement (1 = LEFT)
YS = Direction of Y movement (1 = UP)
XV = Overflow of X movement value (1 = X overflow occured)
YV = Overflow of Y movement value (1 = Y overflow occured)
X7,...,X0 : X movement; 8-bit 2's-complement signed byte (-128 to +127)
Y7,...,Y0 : Y movement; 8-bit 2's-complement signed byte (-128 to +127)

Here are examples of data sent to the host (PC):
------------------------------------------------
(The least-significant bit of each data byte is sent first.)
Move Left  1 unit    :  0x18, 0xFF, 0x00
Move Right 1 unit    :  0x08, 0x01, 0x00
Move Down  1 unit    :  0x28, 0x00, 0xFF
Move Up    1 unit    :  0x08, 0x00, 0x01
Press   Left  Button :  0x09, 0x00, 0x00
Release Left  Button :  0x08, 0x00, 0x00
Press   Right Button :  0x0C, 0x00, 0x00
Release Right Button :  0x08, 0x00, 0x00
Este foarte comun de a avea o "3D PS/2" mouse-ului (de exemplu, cu o roata mouse-ului pe care de asemenea actioneaza ca un mijloc buton).  Aceste patru trimite un mouse de date pachetele la (PC) gazdă. 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  M  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)
(4) Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0  (Z movement; -128 to +127)

This is very similar to the generic PS/2 mouse,
with a few additions:

M = Middle Button State (1 = pressed down)
Z7,...,Z0 : Mouse wheel movement; 8-bit 2's-complement signed byte
    (The Z value is forced to a range of -8 to +7)

5.3 Primul meu de circuit pentru a simula o PS/2 mouse-ului

Următoarele schematic a fost prima mea tehnica de lucru pentru a lua meu "BASIC Stamp 2" computer PS/2 mouse-ul pentru a trimite date către gazdă (PC).
2002june03_basicstamp_to_ps2mouse_circuit.jpg
Schematic a circuitului pentru a permite BASIC Stamp computerul pentru a trimite PS/2 pachetele la (PC) gazdă.
Reţineţi că acest circuit electric izola meu BASIC Stamp computerul de pe computerul gazdă (PC).  De asemenea, reţineţi că acest circuit este doar pentru a satisface cerinţele de PS/2 electrice de transmisie de date (de la dispozitiv la gazdă).  Astfel, am posibilitatea de a trimite mesaje folosind tastatura PS/2 aceeaşi circuitul dacă am conectaţi la portul de pe tastatură PS/2 gazdă (PC)! 

Din moment ce primesc semnale este, în general, non-invaziva (adică, de ascultare nu interfera cu semnale electrice), singurul lucru necesar pentru a permite "BASIC Stamp" computer pentru a primi PS/2 CLOCK şi DATA semnale este o conexiune directă de la acele semnale de la alte BASIC Stamp I/O pin (configurat pentru a fi factori de producţie).  Aş încerca un fel de buffering - dar eu cu siguranţă nu poate utiliza o opto-isolator direct, deoarece ar putea pune în care o încărcătură pe semnale "plutitoare (Sinking" astfel le!).  Am fi putut utiliza +5V la putere un tampon, apoi apoi utilizaţi tampon de ieşire de a conduce vehicule opto-isolators că în ultimă instanţă, pentru a trimite semnale de BASIC Stamp I/O PINS (configurat ca factori de producţie). 

Următoarele imagine arată-mi BASIC Stamp 2 computerul conectat la un circuit de potrivire de schematic mai sus. 
2002june03_basicstamp_mousecircuit01_adj.jpg
BASIC Stamp 2 computerul conectat la un port PS/2 mouse-ului, printr-o opto-isolator circuit.
Următoarele BASIC Stamp 2 program, scris în limbajul de programare PBASIC, a fost prima mea reuşită încercare de a controla mouse-ul PS/2 prin intermediul BASIC Stamp 2 computerul. 

Programul face pur şi simplu mutaţi cursorul mouse-a lungul unei linii diagonale mici. 
'====================================================================
'{$STAMP  BS2} 'STAMP directive (specifies a BS2)

    DIR0 = %1 'Set pin 0 to OUTPUT
    DIR1 = %1 'Set pin 1 to OUTPUT
    OUT0 = %0 'Set DATA line high (pin low)
    OUT1 = %0 'Set CLOCK line high (pin low)
    tempData    VAR  BYTE
    tempParity  VAR  BYTE

'--------------------------------------------------------------------

MainLoop:

    tempCounter  VAR  WORD

    FOR tempCounter = 0 TO 10
    tempData = $28
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    FOR tempCounter = 0 TO 10
    tempData = $18
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    GOTO MainLoop

STOP

'--------------------------------------------------------------------

TransmitPacket:

    GOSUB ComputeParity       'First, compute parity

    tempData   = ~tempData    'Invert data bits
    tempParity = ~tempParity  'Invert parity bit

    '==== Start Bit ====
    OUT0 = %1 'Set data line low (output high)
    PULSOUT 1, 25   ' Pulse line 1 for (25*2) = 50 usec

    '==== Data Bits ====
    OUT0 = tempData.BIT0
    PULSOUT 1, 25
    OUT0 = tempData.BIT1
    PULSOUT 1, 25
    OUT0 = tempData.BIT2
    PULSOUT 1, 25
    OUT0 = tempData.BIT3
    PULSOUT 1, 25
    OUT0 = tempData.BIT4
    PULSOUT 1, 25
    OUT0 = tempData.BIT5
    PULSOUT 1, 25
    OUT0 = tempData.BIT6
    PULSOUT 1, 25
    OUT0 = tempData.BIT7
    PULSOUT 1, 25

    '==== Parity Bit ====
    OUT0 = tempParity.BIT0
    PULSOUT 1, 25

    '==== Stop Bit (high) ====
    OUT0 = %0  ' pin low is DATA high
    PULSOUT 1, 25

    PAUSE 1 ' Necessary? Provides 1 msec gap between packets...

RETURN

'--------------------------------------------------------------------

ComputeParity:

    tempParity = $01
    tempParity = tempParity + tempData.BIT0
    tempParity = tempParity + tempData.BIT1
    tempParity = tempParity + tempData.BIT2
    tempParity = tempParity + tempData.BIT3
    tempParity = tempParity + tempData.BIT4
    tempParity = tempParity + tempData.BIT5
    tempParity = tempParity + tempData.BIT6
    tempParity = tempParity + tempData.BIT7
    tempParity = tempParity & $01

RETURN

'====================================================================
Acest program funcţionează perfect.  Am lasa-l pentru alerga ore, care este şi flawlessly făcut muta cursorul mouse-ului între două locaţii exacte de pe ecran.  Acesta este ce I was privire pentru: precise de control al mouse-ului, astfel încât să pot interacţiona cu software-ul. 

După ce caută pe Internet am descoperit că altcineva a utilizat o BASIC Stamp computer pentru a interfeţei PS/2 (simularea unei tastatură).  Această persoană folosit PBASIC instruire SHIFTOUT să se ocupe de CLOCK şi DATA de semnale, care este foarte mare.  Acest lucru ar face-mi "TransmitPacket" subroutine mult mai scurtă, poate 5 linii de cod în total! 

De asemenea, am văzut că alte persoane folosesc TTL buffers, cu intrări conectate direct de la PS/2 semnale (CLOCK şi DATA), şi ieşirile conectate direct la microcontroler-pin pe chip.  În acelaşi circuit, linii de ieşire de la microcontroler-a mers direct la baza de pin pe tranzistori care a avut lor de colecţie conectate direct la PS/2 semnale.  Toate acestea cuplare directă a diferitelor circuite pare rau ca o idee pentru mine, un lest de circuit fry de altă parte.  Nu stiu de ce mi-ar face dacă am fried de PS/2 port la mine pe PC.  Cumpăr un nou placa de bază, cred!  O scuză pentru a face upgrade.  Eu nu cred ca un port PS/2 Meltdown placa de bază este, probabil, dar am facut-instantaneu de închidere computerul meu când am accidental scurt-circuited de +5V şi GROUND semnale de a merge la PS/2 a mouse-ului.  Poate este o caracteristică!  Aş putea adăuga un nou buton la mouse-ul pe care tocmai scurt-circuite mouse-ul pentru putere instantanee de închidere a PC.  ;-) 

Iată link-ul de la informaţii privind utilizarea SHIFTOUT pentru PS/2 de protocol:
http://ourworld.compuserve.com/homepages/steve_lawther/keybinfo.htm
Uita-te pentru link-ul următor:
KEYBTST.ZIP   gives a very basic program for the parallax
-----------
BASIC stamp II, to send key-codes to the PC's keyboard port.
It also gives a write-up of the XT and AT keyboard interfaces
(although IMO some details could be wrong / different to the
keyboards I've looked at).
Local-copie memorată în cache de fişier:
keybtst.zip

10655 octeţi
MD5: c5667557f96db53fb878bd11bfbe4f74
Următoarele link-ul oferă mai multe informaţii cu privire la PS/2 interfaţare mouse-ului:
http://panda.cs.ndsu.nodak.edu/ ~ achapwes/PICmicro/PS2/ps2.htm
colinfahey.com
informaţii de contact
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية