|
|
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 2025 01 23, 08:35. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Problemos su spidometru
|
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
|
|
|
|
|
|
Problemos su spidometru |
Parašytas: 2012 01 14, 09:32 |
|
|
|
Vis bandau parasyti koda spidometrui, bet nesuprantu kaip nuskaityti laiko tarpa tarp dvieju impulsu. Kaip pavyzdi naudoju : http://winavr.scienceprog.com/example-avr-projects/measuring-motor-speed-and-display-result-on-lcd.html
Gal kas paaiskintu mazdaug kaip duotoj nuorodoi viskas veikia?
Mano kodo bandymas, skaiciuoja prastai, laiko tarpo rodmenys sokineja.
Naudoju atmega16 su 16mhz kvarcu ir isvedima i 3310 lcd
Kodas: |
#define ICP PIND6
//timer overflow counter
uint8_t ovs=0;
uint32_t T;
uint16_t CurrentTime;
uint8_t calculate=0;
//timer1 input capture interrupt service routine
void LcdNumber(unsigned int font_size, char c) {
char str[100];
int a;
itoa(c, (char *)str, 10);
for(a=0; a<strlen(str); a++)
{
LcdChr(1, str[a] );
}
}
ISR(TIMER1_CAPT_vect)
{
if(calculate==0)
{
TCNT1=0;
calculate=1;
}
else if (calculate==1)
{
//Saving current timer value on falling edge
CurrentTime=ICR1;
calculate=2;
}
else if(calculate==2)
{
T=(uint32_t)CurrentTime;
calculate=0;
}
}
int main(void)
{
LcdInit();
LcdContrast(0x00);
LcdUpdate();
PORTD|=1<<ICP;//pullup enable
DDRD&=~(1<<ICP);//ICR1 as input
TCNT1=0;// start counting from zero
TIMSK|=(1<<TICIE1);//|(1<<TOIE1);//enable input capture interrupts
TCCR1A=0;
TCCR1B|=(1<<CS11);//start with prescaller 8, rising edge ICP1
sei();
while(1)
{
LcdGotoXYFont(1,1);
LcdFStr(FONT_1X, PSTR("laikas"));
LcdGotoXYFont(8,3);
LcdNumber(FONT_1X, T); //laiko skaiciukle
_delay_ms(1);
LcdUpdate();
}
return 0;
} |
|
|
|
|
|
|
|
|
|
|
|
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 |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|