 |

|
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 04 11, 12:28. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » reikia parašyti TIKSLŲ sekindės užlaikymą.
|
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
|
|
|
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 13:51 |
|
|
|
kaip reiktų parašyti tikslų sekundės trukmės užlaikymą C/C++ kalba? tikslų, tai reiškia, maximum su 1/1000`000 s paklaida. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 15:58 |
|
|
|
Kaip parasyt tiksliai su C/C++ nezinau. Taciau su assembleriu tai nera labai sunku. Tereikia zinoti, kuri komanda kiek taktu uzima ir pasiskaiciuoti. Kazkada netgi univere buvo tokia uzduotis. Pasistengus, galima pasiekti vieno takto tiksluma, t.y. tureti 1/f tiksluma (f - kontrolerio taktinis daznis). Tik tokiu atveju turi buti uzdrausti visi trukiai ir nieko kito kontroleris daryti negali.
Dar galima bandyt su taimeriais, bet tada siek tiek sunkiau tiksliai suskaiciuot taktus.
P.S. tokiem laiko skaiciavimams labai padeda "pati neveiksniausia" komanda NOP, kuriu, jei truksta uzlaikymo, pridedi kiek reikia.
P.P.S. neuzmirsk paziureti DataSheet'uose koks yra rise-time'as ant kojos (jei siusi impulsa i isore) |
|
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 16:17 |
|
|
|
Ar cia koki mikrokontroleri su C++ programini? Siaip bet kokiu atveju tikslus laikas gaunamas naudojant taimeri. O jeigu yra RTC tai dar geriau - galima visai paprastai uzdeti kad generuotu pertraukima kas sekunde.
Geriau parasyk ant kokios platformos generuosi ta 1 sek. |
|
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 16:20 |
|
|
|
Citata: |
Kaip parasyt tiksliai su C/C++ nezinau. Taciau su assembleriu tai nera labai sunku. Tereikia zinoti, kuri komanda kiek taktu uzima ir pasiskaiciuoti. Kazkada netgi univere buvo tokia uzduotis. Pasistengus, galima pasiekti vieno takto tiksluma, t.y. tureti 1/f tiksluma (f - kontrolerio taktinis daznis). Tik tokiu atveju turi buti uzdrausti visi trukiai ir nieko kito kontroleris daryti negali.
Dar galima bandyt su taimeriais, bet tada siek tiek sunkiau tiksliai suskaiciuot taktus.
P.S. tokiem laiko skaiciavimams labai padeda "pati neveiksniausia" komanda NOP, kuriu, jei truksta uzlaikymo, pridedi kiek reikia.
P.P.S. neuzmirsk paziureti DataSheet'uose koks yra rise-time'as ant kojos (jei siusi impulsa i isore)
|
na su asemmbler`iu, tai taip, nėra labai sudėtinga, na su NOP funcija, tai tikrai nesinorėtų, kartoti ją 8 000 000 kartų... be to, dabar vistiek programas rašau su C kalba, tai nesinori maišyt... |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 16:25 |
|
|
|
Speju kad bandai ant WinAVR. Ten reikia bibliotekos delay.h, kuri naudojasi taimeriu kad generuoti uzvelinima.
Kodas: |
#include <avr/delay.h>
//tada darai cikla
int i;
for(i=1;i<=100;i++)
_delay_ms(10); |
tikiuosi minti pagavai. |
|
|
|
|
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 16:25 |
|
|
|
Mindaugasu rašo: |
Ar cia koki mikrokontroleri su C++ programini? Siaip bet kokiu atveju tikslus laikas gaunamas naudojant taimeri. O jeigu yra RTC tai dar geriau - galima visai paprastai uzdeti kad generuotu pertraukima kas sekunde.
Geriau parasyk ant kokios platformos generuosi ta 1 sek. |
taip programinu mikrokontrolerį (ATMEGA16 arba AT90S2313), nebūčiau į mikrokontrolerių skyrių rašęs, jei ne uC programinčiau... hmm, su platforma bus sudėtingiau, nes nelabai žinau, kad tai yra bet manau, kad bus ICE. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 16:28 |
|
|
|
Mindaugasu rašo: |
Speju kad bandai ant WinAVR. Ten reikia bibliotekos delay.h, kuri naudojasi taimeriu kad generuoti uzvelinima.
Kodas: |
#include <avr/delay.h>
//tada darai cikla
int i;
for(i=1;i<=100;i++)
_delay_ms(10); |
tikiuosi minti pagavai. |
mitnį pagavau, bet man niekaip nepavyksta delay.h include pakeisti procesoriaus taktinį dažnį. Bandžiau šiek tiek kitaip:
Kodas: |
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
_delay_ms(250); |
bet man mirksėdavo, gal tris kartus greičiau nei turėtų. nes pakeitus F_CPU ir parašius reikiamą dažnį, jokios reakcijos nebūna... |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 19:18 |
|
|
|
kaip daryti pertraukti kas 1s su timer1
Kodas: |
#include <tiny2313.h>
//pertrauktis kai skaitliukas sutampa su OCR1
interrupt [TIM1_COMPA] void timer1_COMP(void)
{
// invertuojam visa D prievada
PORTD=~PORTD;
}
void main(void)
{
// visi porto D isvadai veikia kaip isejimai
DDRD=0xff;
PORTD=0xff;
//taimeris Timer1 yra 16bitu max skaiciuoja iki 2^16=65500
//uC taktinis daznis 11059000Hz taigi padalinus ji su dalikliu 1024
//gausim 10800Hz
// taimeris susilygins kas 10800/10800=1s
OCR1A=0x2A30;
// taimeris atjungtas nuo OC1
// PWM isjungtas
TCCR1A=0x00;
//daliklis is 1024, isvalom taimeri kai reiksmes sutampa
TCCR1B=0xD;
// bita OCIE1A TIMSK registre padarom 1 kad sutapus su OCR issauktu pertraukti
TIMSK=0x40;
// kiti pertraukciu saltiniai isjungiami
GIMSK=0;
// ijungiam globalias pertrauktis
#asm
sei
#endasm
while (1);
} |
|
|
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 29, 23:00 |
|
|
|
JAULER rašo: |
Kodas: |
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
_delay_ms(250); |
|
na naudiojant WinAVR biblioteka negali rasyti bet kokio skaiciaus i _delay_ms() funkcija. Kuo daznis didesnis tuo si reiksme tegali buti mazesne, t.y., kad nebutu reiksme didesne uz didziausia galima laiko tarpa suskaiciuojama su 16 bitu skaitliuku. PVZ, esant 1 MHz taktiniam dazniui, max reiksme funkcijai gali buti 262 kai 16Mhz tai ta reiksme riekai dalinti is 16 ir gausim 262/16=16. ka ita reiksme virsyja galima tada gaunasi pievos.
Viskas tas yra include faile aprasyta. |
|
|
|
|
 |
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 30, 00:44 |
|
|
|
10e-6 (dar kitaip sakoma 1ppm(parts per milion) tikslumas, atitinka 3 sekundes per menesi) tikslumo nepasieksi niekaip, tavo kvarcas nebus toks tikslus, reikes termostabilizacijos. atmega generatorius manau nepasizymi ipatingu tikslumu.
daugiausia ka gali pasiekti vieno takto tiksluma.
o siaip dar svarbu kam to reikia, gal galima taimeri panaudoti
o jei tau reikai tikslaus nereguluojamo uzdelsimo tainera sudetinga, padari koki cikla ir patikslini asamblerio nop komandomis. |
|
|
|
|
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 30, 14:26 |
|
|
|
na man 1 takto tikslumas bus puiku. iš esmės, tada jei per mėnesį 3 s, tai 1 min, per 20 mėnesių, kas reiškia, beveik du metus. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 30, 14:33 |
|
|
|
pirma pasaktk ka tu ten darai kad tokie nerealus reikalavimai keliami.
nes jau sakiau kad toks tikslumas neimanomas vien del kvarco tikslumo, reikia bent jau sureguliuoti kvarco daznuma |
|
|
|
|
 |
reikia parašyti TIKSLŲ sekindės užlaikymą. |
Parašytas: 2006 08 30, 14:35 |
|
|
|
laikrodį... bet labai tingiu kokį atskirą timerį dėt. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
|
 |
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 |
 |
KCD2 Mods
Installing KCD 2 Mods,
KCD 2 Guides,
KCD 2 Cheats |
 |
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 Wiki
GTA 6 Map,
GTA 6 Characters,
GTA 6 News |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|

|
 |