 |
Forumas » Mikrovaldikliai » kiek kartu nuspaustas mygtukas?
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 2 iš 2 Pereiti prie Atgal 1, 2 |
|
 |
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 22:07 |
|
|
|
|
| Edzma rašo: |
Panasios problemos ...Kaip tai gali buti ?
| Kodas: |
struct
{
...........................
unsigned int liestas :1;
...........................
............................
}flag;
...............
.........
.............
void Touch()
{
unsigned int a;
....
if(a < 200 && flag.liestas == 0) //a = ADC reiksme
{
... // cia turetu but uzsukta viena kart
... // kol nebus paleistas
flag.liestas =1;
}
else {flag.liestas = 0;}
}
|
Problema ta, kad prilietus fiksuojamas ne vienas prisilietimas, bet pastoviai sukasi.... |
Neaisku nei kaip ir kada Touch() kvieciamas, nei kaip ir kada ADC konversija baigiasi... |
|
|
|
|
|
 |
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 22:20 |
|
|
|
|
Touch() kvieciamas kaskart apsisukus ciklui while(1), o adcRead funkcija yra pacioje Touch()..
adc konversija vykdoma funkcijoje 1 karta, kad pamatyti ,ar yra prisilietimas...jei ne -gryztam i main, jei prisiliesta- tada vyksta paeiliui dar 2 konversijos koordinatems nustatyt...
Siaip viskas kuo puikiausiai, bet nervina, kad prisilietus fiksuojamas ne vienas prisilietimas, bet ciklinasi.. |
|
|
|
|
|
 |
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 22:27 |
|
|
|
|
jei bus aiskiau, tai...
| Kodas: |
unsigned int adc_read(unsigned char adc_input)
{
ADMUX = adc_input|(ADC_VRef & 0xFF);
ADCSRA= 0x87;
_delay_us(10);
ADCSRA |=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA |=0x10;
return ADCW;
}
void Touch()
{
unsigned int a = 0;
Touch_DDR |= (1<<X_plus);Touch_DDR |= (1<<X_minus);
Touch_PORT &=~(1<<X_plus);Touch_PORT &=~(1<<X_minus);
Touch_DDR &=~(1<<Y_plus);
Touch_PORT |= (1<<Y_minus);
a = adc_read(adc_Xchannel);
if (a > 900) {flag.paliestas = 0; x_pix=0; y_pix=0; return;}
if (a < 200 && flag.paliestas == 0)
{
Touch_DDR &=~ 0x0F; //touch porto resetas
Touch_DDR |= (1<<Y_minus)|(1<<Y_plus);
Touch_PORT |= (1<<Y_plus);
Touch_PORT &=~(1<<Y_minus);
_delay_ms(1);
y_coord = adc_read(adc_Ychannel);
if((y_coord>y_min)&&(y_coord<y_max)) // jei telpam i ekrana....
{y_pix =(y_coord-y_min)*((y_rez*100)/(y_max-y_min))/100;} //adc konversija i pix
Touch_DDR &=~ 0x0F; //touch porto resetas
Touch_DDR |= (1<<X_plus)|(1<<X_minus);
Touch_PORT |= (1<<X_plus);
Touch_PORT &=~(1<<X_minus);
_delay_ms(1);
x_coord = adc_read(adc_Xchannel);
if((x_coord>x_min)&&(x_coord<x_max)) // jei telpam i ekrana....
{x_pix =(x_coord-x_min)*((x_rez*100)/(x_max-x_min))/100;} //adc konversija i pix
flag.paliestas = 1;
}
} |
|
|
|
|
|
|
 |
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 23:03 |
|
|
|
|
| Kaip struktura inicializuojama? Perdaug i koda nesigilinau, o tai pastebin tam labiau tiktu nei cia. |
|
|
|
|
|
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 23:09 |
|
|
|
|
ten bitu laukas...flagams...
| Kodas: |
struct
{
unsigned timeset :1;
unsigned paliestas :1;
unsigned paleistas :1;
unsigned first_show_set :1;
unsigned read_temp :2;
unsigned septintas :1;
unsigned astuntas :1;
}flag; |
|
|
|
|
|
|
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 23:19 |
|
|
|
|
| Edzma rašo: |
ten bitu laukas...flagams...
| Kodas: |
struct
{
unsigned timeset :1;
unsigned paliestas :1;
unsigned paleistas :1;
unsigned first_show_set :1;
unsigned read_temp :2;
unsigned septintas :1;
unsigned astuntas :1;
}flag; |
|
As tiesa sakant nezinau ka reiskia gale tie :1 arba :2. Bet anyway, cia tik aprasyta struktura, kaip ji inicializuojama?
Jei nera, tai tu kiekviena karta nuskaitai vejus is nezinomo atminties regiono, ko pasekoje tavo flagas igauna vis kitokias reiksmes.
main'e pries while() daryk alokacija:
flag = malloc(sizeof(flag)); |
|
|
|
|
|
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 23:29 |
|
|
|
|
Tokia ir inicializacija, kaip ir bet kokio kintamojo.... a, beje, dariau tai pries main()...kaip ir globalus tie flagiukai...
:1 ar :3 reiskia, kiek bitu atseikejama tam flagui...jei :3 tai flagas gali igaut reiksmes 7,6,5,4,3,2,1,0.....jei :2 ,tai 3,2,1,0 jei :1 , tai tik 1 ar 0.. |
|
|
|
|
|
 |
 |
kiek kartu nuspaustas mygtukas? |
Parašytas: 2014 02 18, 23:56 |
|
|
|
|
| Edzma rašo: |
Tokia ir inicializacija, kaip ir bet kokio kintamojo.... a, beje, dariau tai pries main()...kaip ir globalus tie flagiukai...
:1 ar :3 reiskia, kiek bitu atseikejama tam flagui...jei :3 tai flagas gali igaut reiksmes 7,6,5,4,3,2,1,0.....jei :2 ,tai 3,2,1,0 jei :1 , tai tik 1 ar 0.. |
Kazkas baisiai gudraus, bet nematau kam to reiktu... Reik suprast, kad tokiu atveju atmintyje uzima maziau vietos? Gali patikrint kompiliacijos rezultatus su tokiu aprasymu ir kita varianta ivardinant visus strukturos kintamuosius unsigned char'ais?
| AlgisL rašo: |
malloc() jau tikrai nereikia, uztektu:
flag f;
ir kreiptis f.xxx |
Situ atveju gal ir ne, bet iprastai kai naudoji strukturas, tai alokuoji su malloc() ir paskui gali islaisvint su free(). |
|
|
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
RDR2 Mods
Euro Truck Simulator 2 Mods,
WOT Mods,
Assetto Corsa Rally Mods |
|