|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 15, 07:59. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Elektronika žaliems » 2kanalu dznomatis su attiny2313
|
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
|
|
|
|
|
|
2kanalu dznomatis su attiny2313 |
Parašytas: 2012 05 01, 20:08 |
|
|
|
taigi susimasciau pasigaminti 2 ch. daznomati. Jo,programa turetu veikti taip: 1 kanalas skaiciuoja dazni, tuo tarpu rodoma 2kanalo reiksme, kol gaunamas 1 kanalo resetas (loginis 0), o kol skaiciuoja 2-ojo kanalo dazni rodomas 1-ojo kanalo rezultatas iki kol gautu 1 kanalo reseta (logini 1)
na dar trumpiau pasakius- kol vienas kanalas skaiciuoja, rodomas kito kanalo daznis.
problema tokia, jog, mano dabartinis gaunamas rezultatas toks:
vieno kanalo dznis rodomas tol, kol kitas pradeda skaiciuoti. Na gal supratot ko man reikia? programa:
Kodas: |
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
int main(void)
{
DDRD = 0b1100000;//registre nustatome, kad PD5, PD6- isejimai, PD0 PD4 iejimai
PORTD = 0b00000;// nustatome, kad porto isejime bus 5v
DDRB = 0b11111111;// nustatome PB0 PB7 kaip isejimus
unsigned char, i, b=0, d=0, r, ra;
//paleidziam lcd
LCDInit(LS_BLINK|LS_ULINE);
while(1)
{
//resetas
if (PIND&(1<<DDD2))
{
//skaiciavimas 1 kanalas:
if (PIND&(1<<DDD0))
{
d=0;
b=b+1;
while(PIND&(1<<DDD0)){}
while(PIND&(0<<DDD0)){}
}
ra=d;
}
else
{
//skaiciavimas 2 kanalas:
if (PIND&(1<<DDD1))
{
b=0;
d=d+1;
while(PIND&(1<<DDD1)){}
while(PIND&(0<<DDD1)){}
}
r=b;
}
LCDClear();
LCDWriteStringXY(0,0,"1ch:");
LCDWriteStringXY(8,0,"2ch:");
LCDWriteIntXY(1,1,r,4);
LCDWriteIntXY(8,1,ra,4);
for(i=0;i<1;i++) _delay_loop_2(0);
}
}
|
|
|
|
|
|
|
|
2kanalu dznomatis su attiny2313 |
Parašytas: 2012 05 01, 22:15 |
|
|
|
taip, suprantu. Reikia jog, i lcd isvestu 1kanalo rezultata, kai skaiciuoma 2kanalo reiksme ir ji pasikeistu tik tada, kai 1kanale reiksme butu kitokia nei buvo anksciau, su 2 kanalu identiskai. |
|
|
|
|
|
2kanalu dznomatis su attiny2313 |
Parašytas: 2012 05 01, 22:38 |
|
|
|
Siaip prisipazinsiu, tos c kalbos nelabai moku, bet tu kazka darai ne taip. Ismok naudotis taimeriais ir pertraukimais. Tada pasirasyk algoritma. Tik tada deliok koda.
Pvz - jei nori kad abu kanalai per sekunde padarytu du matavimus, tada paleidi taimeri 0.25 sekundes. Matavimas pirmo kanalo - pagal low to high interupta pirmam kanale inkrementuoji pirmo kanalo reiksme. Baigiasi laikas - daugini reiksme is 4 ir isvedi i pirma eilute. Matavimas antro kanalo - viskas tas pats tik interuptas pagal antro kanalo iejima, ir isvedi i antra eilute. Tada kartoji per nauja. O ka tu cia darei tai as neisivaizduoju. |
|
|
|
|
|
|
2kanalu dznomatis su attiny2313 |
Parašytas: 2012 05 01, 22:44 |
|
|
|
baigiau ir kitu budu, programa jau kaip ir veikia :
Kodas: |
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
int main(void)
{
DDRD = 0b000;//registre nustatome, kad PD5, PD6- isejimai, PD0 PD4 iejimai
PORTD = 0b000;// nustatome, kad porto isejime bus 5v
unsigned char a, c, i, b=0, d=0, r, ra;
//Lcd paleidimas
LCDInit(LS_BLINK|LS_ULINE);
while(1)
{
//resetas 2kanalo
if (PIND&(1<<DDD2))
{
//2ch. paskutinio skaiciavimo rezultato rodymas:
if (PIND&(1<<DDD0))
{
if(d == a)
{
ra=d;
}
else
{
ra=d;
b=0;
}
a=d;
//1 kanalo skaiciavimas :
b=b+1;
while(PIND&(1<<DDD0)){}
while(PIND&(0<<DDD0)){}
}
}
//resetas 1kanalo:
else
{
//1ch. paskutinio skaiciavimo rezultato rodymas:
if (PIND&(1<<DDD1))
{
if(b == c)
{
r=b;
}
else
{
r=b;
d=0;
}
c=b;
//2 kanalo skaiciavimas :
d=d+1;
while(PIND&(1<<DDD1)){}
while(PIND&(0<<DDD1)){}
}
}
//Rezultatu isvedimas i lcd
LCDClear();
LCDWriteStringXY(0,0,"1ch:");
LCDWriteStringXY(8,0,"2ch:");
LCDWriteIntXY(1,1,r,4);
LCDWriteIntXY(8,1,ra,4);
for(i=0;i<1;i++) _delay_loop_2(0);
}
}
|
dekui uz pagalba |
|
|
|
|
|
|
2kanalu dznomatis su attiny2313 |
Parašytas: 2012 05 02, 10:02 |
|
|
|
Saulius18 rašo: |
beda tame kad ne zalio supratimo neturiu kaip paleist taimerius ar interuptus |
Truputi reikės skirti laiko šiems dalykams, nes be jų norimo rezultato nepasieksi |
|
|
|
|
|
|
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 |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|