Salut, On 9/26/07, Dragos Popescu <[EMAIL PROTECTED]> wrote: > Am un sistem embedded cu un linux pe el, cu kernel 2.4.21 şi procesor > StrongARM-1110. La sistemul ăsta am conectate nişte plăci de achiziţie > analog/digitale cu care încerc să măsor nişte tensiuni şi curenţi de la > reţea (50Hz adicătelea). > Trebuie să iau 32 de eşantioane pe fiecare alternanţă (la fiecare 625 > microsecunde), după care fac eu p'acolo FFT-uri, nebunii, alea, alea. > > Pentru prelevarea eşantioanelor am setat un timer aşa cum se vede în > progrămelul de mai jos (scuze de lungimea postului), numai că > rezultatul e dezastruos: dacă măsor o tensiune costantă, rezultatul > întors e corect cu o precizie mai mult decât mulţumitoare, dacă măsor o > tensiune alternativă, am pus-o! Şi asta din cauza timer-ului care numai > la 625us nu bate şi când aplic prelucrările numerice asupra > eşantioanelor, iese o poezie! > Nu se pune problema vitezei de eşantionare a plăcilor de achiziţie, alea > merg lejer la 200k măsurători/sec. > Cum aş putea rezolva cât de cât problema asta cu timerul? > Am încercat "nice" da' linuxul de la sistemul ăsta n-a auzit de aşa > ceva.
iirc RTC-ul (daca ai asa ceva pe placa aia) merge pina la 8khz. Ce-ti trebuie tie e 1/0.000625 = 1600 Hz. Teoretic programezi rtc-ul sa genereze 1600 ints/sec (man rtc) si citesti din /dev/rtc. Daca nu ai asa ceva fa un device care genereaza intreruperi si e programabil + driver in kernel. Chiar daca recompilezi kernel-ul la 1kHz nu cred ca rezolvi pentru ca iti trebuie mai mult. Alta solutie (brutala) ar fi busyloop. > -- > Dragos P > 126296 luser > "La revedere. Drum bun" > > _______________________________________________ > RLUG mailing list > RLUG@lists.lug.ro > http://lists.lug.ro/mailman/listinfo/rlug >
_______________________________________________ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug