 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jerny Član


Pridružen-a: Čet 17 Apr 2008 11:27 Prispevkov: 414 Aktiv.: 1.98 Kraj: Dravograd
|
Objavljeno: Ned Maj 15, 2011 6:45 pm Naslov sporočila: PIC18F4550 - 2x12 matrika problem |
|
|
Lep pozdrav!
Prijatelj ima problem s preglejevanjem tipk na matrični tipkovnici velikosti 2x12. Ta tipkovnica je iz starega sintisajzerja in ima 2 vhoda in 24 tipk.
Zaenkrat so vhodi na portu B, izhoda pa na D2 in D3. Preglejuje se s pomočjo for zanke:
Koda: |
for (i = 0;i<=1;i++)
{
PORTD = 4 * (i+1); //izmenično preklaplja med D3 in D4
if(sw_c==0) //ta primer preglejuje eno noto na dveh oktavah
{
SendMIDI(pitch + (i*12),127,&nO[i][0],On);
}
else if (sw_c==1)
{
SendMIDI(pitch + (i*12),0,&nO[i][0],Off);
}
} |
Tipke na tipkovnici so povezane s pullup upori.. Torej se preglejuje stanje 0. Je takšna logika vredu? je 4,7k upor dovolj?
Pri pritiskih na tipke pa se pojavi problem.. Ob pritiskih na prvo tipko neprestano pošilja tudi ukaze za drugo tipko in obratno.
Imate kakšne rešitve/predloge?
Če bo kaj pomagalo lahko narišem tudi shemo matrike.
Hvala vnaprej!
_________________ Če smrdi je kemija, če kadi pa elektronika! |
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.26 Kraj: Yogyakarta
|
Objavljeno: Ned Maj 15, 2011 7:50 pm Naslov sporočila: |
|
|
mogoče sema nebi bila slaba ideja
drugače pa predvidevam da moraš tole muxat in je problem pri tem, samo kot rečeno shema bi pomagala. Pul-upov pa ne potrebuješ, ker jih imajo že porti, samo pravilno moraš nastavit. Porte sta nastavila kot vhode a ne? In D3 in D4 kot izhoda
lp
_________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
jerny Član


Pridružen-a: Čet 17 Apr 2008 11:27 Prispevkov: 414 Aktiv.: 1.98 Kraj: Dravograd
|
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.26 Kraj: Yogyakarta
|
Objavljeno: Pon Maj 16, 2011 9:42 am Naslov sporočila: |
|
|
imaš shemo tudi kako je dejansko tipkovnica znotraj zvezana?
če je tako kot si predstavljam potem bi moral res malo prirediti svoj algoritem.
to da izmenično preklapljaš med 1/0 in 0/1 na D portu je ok. Samo ti moraš iti najprej
čez 1/0 in pogledati katere tipke so pritisnjene, potem preko 0/1 in ponovno katere so pritisnjene, potem pa moraš šele pogledati koliko jih je pritisnjenih in ustrezno ukrepati.
Drugače vedno obravnavaš samo 1/2 tipkovnice in seveda določene kombinacije izpustiš.
_________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
jerny Član


Pridružen-a: Čet 17 Apr 2008 11:27 Prispevkov: 414 Aktiv.: 1.98 Kraj: Dravograd
|
Objavljeno: Tor Maj 17, 2011 10:45 pm Naslov sporočila: |
|
|
Hvala za odgovor!
Problem je bil res v algoritmu, saj nisem preverjal kakšna stanja so na vhodih pred preverjanjem tipk.
Popravek:
Koda: |
for (i = 0;i<=1;i++)
{
//Menjanje stanja med porti
PORTDbits.RD2=i;
PORTDbits.RD3=~i;
//****************************TIPKA C
if(sw_c==0)
{
if (PORTDbits.RD2==0)
SendMIDI(pitch,127,&nO[i][0],On);
else if (PORTDbits.RD3==0)
SendMIDI(pitch + 12,127,&nO[i][0],On);
}
else if (sw_c==1)
{
if (PORTDbits.RD2==0)
SendMIDI(pitch,0,&nO[i][0],Off);
else if (PORTDbits.RD3==0)
SendMIDI(pitch + 12,0,&nO[i][0],Off);
}
} |
Pa morda veš, zakaj mi ne delajo interni pullup-i? V programu sem napisal tako: INTCON2bits.RBPU = 0;, a mi brez zunanjega 4,7kΩ upora sploh ne dela
lp, Matej
_________________ Če smrdi je kemija, če kadi pa elektronika! |
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.26 Kraj: Yogyakarta
|
Objavljeno: Tor Maj 17, 2011 11:51 pm Naslov sporočila: |
|
|
pri PICu z TRIS registrom nastaviš vhode
TRIS = 255;
kadar so izhodi s port ukazom vklopiš interne pull-upe
PORT = 255;
ko boš sedaj bral port bodo tisti 0, ki si jih dejansko zunaj potegnil na maso
_________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 502 dni
Powered by phpBB © 2001, 2005 phpBB Group
|