[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] En ordentlig timing



On Thu, 1 Nov 2001, Peter Aagaard Kristensen wrote:

>  >Du skriver at det skal være præcist, men at du kun skal "vente MINDST et
>  >vist stykke tid". Så skriver du at antallet af iterationer gør at det er
>  >for langsomt. Det er meget forvirrende.
> For at pic-chippen kan nå at følge med skal pc'eren genere en clock på min.
> 200ns(men den kan sagtens være længere).
> Derfor skal jeg altså:
> sætte clock signalet højt
> vente mindst 100ns
> sætte clock signalet lavt
> vente mindst 100ns
> o.s.v.
> Jeg vil gerne vente så tæt på de 100ns som muligt (men _aldrig_ kortere) for
> at brænding sker på så kort tid som muligt.

Du skal nok helt droppe sleep, timere, mv, og bare lave busy waiting på
f.eks. en performance counter på chippen. (100 ns er _meget_ lidt -
afhængig af hardwaren, og når du skal kalde kernen, ryger du altså nok
over det _ret_ hurtigt).

Med busy wait vil du selvfølgelig blive skeduleret ud, men da du har råd
til pauser gør det jo ikke noget. 

Under linux kan du kalde gettimeofday - det vil så være med microsekund
resolution hvilke vil betyde at du nok mindst skal bruge 500 ns pr. dims.

Hvis du vil have det kortere end det, skal du kalde nogen performance
countere - ligesom under Windows, QueryPerformanceCounter eller noget i
den stil.


> For hvis jeg f.eks. minimum kunne vente i 10ms ville det stadigvæk virke
> men tage 10 minutter :-(
> Det var det jeg mente med at det skulle gøres 15.000 gange
> ( som egentligt er 50.000 når jeg tænker efter ).
> 
> Så længe usleep(1) ikke tager kortere end de 100ns vil den kunne bruges.
> man usleep siger at det nok ikke er så præcis, mon det er kortere eller længere
> eller begge dele ?

Sleeps er _altid_ længere - du er garanteret _mindst_ at den sover så
længe.

> Og med en clock på 2us vil det kun tage 0.1s at brænde :-)

Ellers brug busy wait.

Mads

-- 
Mads Bondo Dydensborg.                               sslug@sslug
You know you're a Linux geek when...

    You feel an undefined sense of shame when the advice you give on
    Windows 9X works.

                                                     - segfault



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:09 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *