Vizitator mirtes_99 Postat Iunie 6, 2010 Partajează Postat Iunie 6, 2010 am incercat sa implementez codul de pe pagina http://hades.mech.northwestern.edu/index.php/Interfacing_with_a_mouse pe un PIC16F876A, dar se blocheaza PIC-ul atunci cand este conectat adaptorul de ps/2(de pe aceeasi pagina, cel cu 2 tranzistori si 2 rezistente). am folosit rezistente de 10K, iar porturile folosite sunt: PIN_B2 = data input/output PIN_B0 = clock input/output PIN_B1 = clock control PIN_B3 = data control are cineva idee ce-ar putea fi? Link spre comentariu
srdjan Postat Iunie 6, 2010 Partajează Postat Iunie 6, 2010 eu cred ca ti se blocheaza programul in bucla asta (ramane infinita) while(enabled == 0) //mouse data sending initially disabled{ if (i > 9) { enabled = 1; //sending from mouse should be enabled at this point output_low(PIN_B3); }}pe motiv ca codul intreruperii asteia nu se executa (probleme cu intreruperea)#INT_EXT1 // designates that this is the routine to call //when pin RB1/INT1 changes statevoid INT1isr() {lcd_init(); // initialize lcd if (enabled == 0) //outputs a data bit to mouse { if(enabledata[i] == 1) { output_low(PIN_B3); } if(enabledata[i] == 0) { output_high(PIN_B3); } i++; } if (enabled == 1) { delay_us(20); data[i] = input(PIN_B0); //read a logical high or low into array interrupt = 1; } //to break out of infinite while loop}eu aici as peria in primul rand... adica as improviza niste metode sa vad unde se blocheaza programul si de ce...Unresolved IssuesOur group was unable to display the motion of an optical mouse on an LCD screen. After a great deal of troubleshooting, we have come to the conclusion that our interrupt service routine algorithm or microcontroller is simply not fast enough to receive and send data in time with clock signal generated by the mouse. The mouse clock signal is essentially a 10-16.7 kHz square wave. Each high and each low on the clock signal would last roughly 40 microseconds and our interrupt service routine (which was supposed to trigger every time the clock went from high to low) tended to miss or skip several signals at a time. This problem prevented the mouse from ever receiving an “Enable Data Reporting” from the PIC and thus the mouse never outputted data to the PIC.Suggested solution: Use a faster microcontroller or develop a more efficient interface program. Link spre comentariu
Vizitator mirtes_99 Postat Iunie 7, 2010 Partajează Postat Iunie 7, 2010 In main() pun o functie care sa-mi trimita serial un cuvant de fiecare data cand pornesc sau fac reset la PIC. Daca nu conectez adaptorul merge...primesc acel cuvant si la pornire si la reset. Dupa conectarea adaptorului, primesc doar cand pornesc si uneori nu primesc tot cuvantul, iar la reset nu mai primesc nimic. Link spre comentariu
srdjan Postat Iunie 7, 2010 Partajează Postat Iunie 7, 2010 mai... ce suspectez eu ca se intampla adica traduc ce-am scris mai sus.MCU trimite semnal mouse-ului ca poate sa trimita date dupa care intra intr-o bucla pana cand mouse-ul raspunde ceva. problema e ca MCU "nu asculta unde trebuie sau nu intelege ce ii spune mouse-ul" si atunci ramane in acea bucla fara sa treaca mai departe cu executia programului.Recomandare: testeaza functionalitatea intreruperii atat manual cat si cu un semnal generat la frecventa clock-ului mouse-ului. Link spre comentariu
Vizitator mirtes_99 Postat Iunie 7, 2010 Partajează Postat Iunie 7, 2010 am pus rezistente de 330 ohmi intre porturile pic-ului si baza tranzistorului si "s-a modificat schimbarea". nu se mai blocheaza...sper sa ma descurc mai departe:Dmultumesc pentru ajutor Link spre comentariu
Vizitator mirtes_99 Postat Iunie 9, 2010 Partajează Postat Iunie 9, 2010 imi citeste mereu un bit 0 si in rest doar 1... primesc mereu cate un pachet de 0 urmat de 32 de 1 cand misc mouse-ul... e de la electronica? nu mai coboara in 0? Link spre comentariu
Liviu M Postat Iunie 10, 2010 Partajează Postat Iunie 10, 2010 PIN_B2 = data input/outputPIN_B0 = clock input/outputPIN_B1 = clock control PIN_B3 = data control Ai modificat si codul corespunzator, da? Nu de alta, da' pinii folositi de tine difera putin de cei folositi in codul de pe site: //PIN_B0 = data input/output//PIN_B1 = clock input/output//PIN_B2 = clock control output high sets clock low//PIN_B3 = data control output high sets data low Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum