„Elég kicsi a pozíciók eltérése, tehát egy nagy hiba okozhat eltérést, mivel a beolvasási hiba bennemarad (igaz, csak 16-a).”
Próbálok 2 egyforma értéket megvárni.
Meglátom menyire lassúl le?
Kösz!
Végre már az én projectem is halad.
Kód: Egész kijelölése
Touch_yp = 0
Waitms 20 ' Wait until the port is stable
For I = 1 To 16 ’16* Olvasás összege
Waitus 100
Touch_yp = Touch_yp + Getadc(touchp_yp) ' Read the ad value for the y
Next I
Shift Touch_yp , Right , 4 ’Osztás 16-al
Kód: Egész kijelölése
/*
IIR szűrő konvolúciót megvalósító részlete
Bemenetek:
m: <konvhossz> hosszú minta vektor
a: <konvhossz> hosszú együttható vektor
eredm: <konvhossz> hosszú előző eredményekből álló vektor
b: <konvhossz> hosszú együttható vektor a visszacsatoláshoz
Kimenet: a konvolúció eredménye
A kimenetet ne felejtsük el a főprogramban az eredm vektorhoz hozzáilleszteni,
hiszen az alábbi szűrő esetén felhasználjuk a következő számításhoz.
*/
float konvolval_iir(float short *m, const float *a, const float *eredm, const float *b, int konvhossz) {
int i;
float er=0;
for (i=0; i<konvhossz; i++) er += m[i] * a[i] + eredm[i] * b[i];
return er;
}
Kód: Egész kijelölése
$crystal = 16000000
$hwstack = 174
$swstack = 174
$framesize = 174
$baud = 19200
Const Konvhossz = 16
Dim M(konvhossz) As Word ' minta vektor
Dim A(konvhossz) As Word 'együttható vektor
Dim Eredm(konvhossz) As Word 'előző eredményekből álló vektor
Dim B(konvhossz) As Word 'együttható vektor a visszacsatoláshoz
Declare Function Konvolval_fir()as Word
Declare Function Konvolval_iir()as Word
Do
Loop
End 'end program
Function Konvolval_fir()as Word
Local I As Byte
Local Er As Word
For I = 1 To Konvhossz
Er = M(i) * A(i)
Konvolval_fir = Konvolval_fir + Er
Next I
End Function
Function Konvolval_iir()as Word
Local I As Byte
Local Er As Word
Local Er2 As Word
For I = 1 To Konvhossz
Er2 = Eredm(i) * B(i)
Er = M(i) * A(i)
Er2 = Er2 + Er
Konvolval_iir = Konvolval_iir + Er2
Next I
End Function
Kód: Egész kijelölése
'----------------------- Dekodolás 3 Oszlop / 5 Sor -----------------------------------------------------------
Sub Touch3x5()
' Oszlopok szelektálása
Select Case Touch_xp ' For the x value
Case 160 To 375 : Touchx_col = 1 '
Case 376 To 595 : Touchx_col = 2 '
Case 596 To 820 : Touchx_col = 3
Case Else Touchx_col = 0
End Select
' Sorok szelektálása
Select Case Touch_yp ' For the y value
Case 300 To 360 : Touchy_row = 1 '
Case 361 To 450 : Touchy_row = 2 '
Case 451 To 560 : Touchy_row = 3
Case 561 To 650 : Touchy_row = 4 '
Case 651 To 690 : Touchy_row = 5
Case Else Touchy_row = 0
End Select
End Sub