Hey, als ik een microcontroller de opdracht DelayMS geef, kan ik dan met een bepaald commando uitlezen waar de microcontroller zit in de DelayMS? Hoeveel MS te gaan of hoeveel MS hij heeft gehad?

Groet, Bob

volgens mij niet, dat zou namelijk betekenen dat je 2 insturcties tegelijk zou moeten uitvoeren (delay uitvoeren, en delay uilezen hoe ver)

wat wel kan is bijvoorbeeld met een timer een delay maken en die kan je wel uitlezen

Wat wil je gaan doen dan?

Ik wil een timer maken voor m'n uv-belichter :)
Er is zat te vinden, maar ik wil iets zelfmaken.
Op een LCDisplay wil ik dan de tijd weergeven die hij aan het belichten is.

dan is het wel zo makkelijk om bijv een timer (TMR1 oid) te nemen deze in te stellen en gewoon uitlezen en op je lcd zetten

Stel je wilt 60 seconden belichten.
Dan doe je dat niet zo: DELAYMS 60000
Maar je doet bijvoorbeeld:


CLEAR Time
REPEAT
  PRINT "Tijd: ", @Time  
  DELAYMS 1000
  INC Time
UNTIL Time >= 60

Is maar een voorbeeld, er zijn vele manieren.

Ah, kijk! Je maakt dus gewoon loopje van 1 seconde totdat hij 60 keer het loopje heeft gedaan
Ik ga is wat prutsen, tot zo ver bedankt!

Om een betere timing te krijgen, kun je ook de interne timer interrupt gebruiken. Als je bij de voorbeeld bestanden van Proton Pic Basic kijkt, staat er een voorbeeld van een timer en interrupt.

[offtopic]
Trouwens het is best interesant en leerzaam om de voorbeeld programma's es door te kijken.
[/offtopic]

Ah, kijk! Je maakt dus gewoon loopje van 1 seconde totdat hij 60 keer het loopje heeft gedaan
Ik ga is wat prutsen, tot zo ver bedankt!

Je kan ook fijnder timen door een delay van 1 ms te nemen en dan het loopje 1000x meer laten uitvoeren. maar of dit echt voor deze toepassing nauwkeuriger moet weet ik niet.

ik los het soms op die manier op.


CLEAR Time
REPEAT
  PRINT "Tijd: ", @Time  
  DELAYMS 1
  INC Time
UNTIL Time >= 60000

het voordeel ervan is dat je µc meer andere zaken kan verrichten tijdens het wachten ipv met een delayms 1000

[Bericht gewijzigd door shortcircuit op ]

Tot nu toe ben ik niet van plan meer met de microcontroller te doen dan de tijd bijhouden van het belichten! En ik denk dat 1000 keer per seconde wat overdreven is :) Maar goed, thnx voor je reactie!

Op 29 mei 2007 14:59:04 schreef shortcircuit:
[...]

Je kan ook fijnder timen door een delay van 1 ms te nemen en dan het loopje 1000x meer laten uitvoeren. maar of dit echt voor deze toepassing nauwkeuriger moet weet ik niet.

Daar wordt het juist minder nauwkeurig van. De loop kost zelf namelijk ook tijd. Hoe vaker de loop des te meer overhead daarvan. Je kan dat compenseren in de delay. Maar omdat het Basic is weet je niet precies hoe groot de overhead is, tenzij je de gecompileerde code gaat ontleden of simuleren.
Een timer interrupt is veel nauwkeuriger.