Delay_ms i MikroC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Delay_ms i MikroC

Inlägg av newbadboy »

Hej.

Försöker göra kod till ett pulståg, använder mig av Delay_ms() men jag upptäckte nyss att den endast klarar heltal. Jag behöver 1,5ms. Hur ska man lösa detta? Har kollat runt i hjälpen för MikroC men än så länge inte hittat ngt användbart.

Tack.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Jag föreslår att du använder en timer som skapar ett interrupt när den slår runt. I det interruptet ger du timern ett värde som gör att interruptet sker 1,5 ms senare.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Interrupt är en lösning, som bearing nämnde.
PWM modulen (om din processor har det) kan vara en annan (beror på lite...).
Sen undrar jag om det inte finns funktioner liknande delay_ms() fast för
kortare delay...
Användarvisningsbild
lgrfbs
Inlägg: 7325
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

I mikroPascal 6.0.0.0 finns dessa:
Delay_us

Creates a software delay in duration of time_in_us microseconds (a
constant). Range of applicable constants depends on the oscillator
frequency.


This is an inline routine; code is generated in the place of the call, so the
call doesnt count against the nested call limit.
Vdelay_ms

Creates a software delay in duration of time_in_ms milliseconds (a
variable). Generated delay is not as precise as the delay created by
Delay_ms.
Delay_Cyc

Creates a delay based on MCU clock. Delay lasts for 10 times the input
parameter in MCU cycles.
Nu var det ju till mikroC du behövde hjälp, men editorn är samma i
mikroBasic/C/Pascal så klicka på "Qhelp" i mikroC IDE och sök på "delay"
så får du fin hjälp där :wink:
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47047
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Inlägg av TomasL »

Om du kan använda inline asm, så kan du ju skapa en enkel fördröjning i asm.
Det gör jag när jag behöver kortare fördröjningar.
Alternativt göra en "dummy" kod som tar 0,5 ms.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Inlägg av newbadboy »

visst fanken finns det en delay_us().... så lätt var det
Skriv svar