
On Fri, Jan 1, 2010 at 4:43 AM, Jason Dusek
I'm working with Atom to program an ATtiny25. I am curious about how consistent the timings actually are.
The function returned by Atom is intended to be called periodically, preferably using some hardware timer, like this: while (1) { waitForNextSample(); atomGeneratedFunction(); } This provides consistent cycle-to-cycle timing. However, the events that occur within the Atom function will most likely vary in time from call to call, due to rules being scheduled at different periods.
Also, I am a little puzzled by the `__coverage` variable. What does it do?
__coverage keeps track of which rules have fired during the execution of a program to provide some measure of code coverage. The compiler returns RuleCoverage[1], which is a list of rule names with associated indices bit positions to the __coverage array. Inside an Atom program, you can access this array with nextCoverage[2], which provides the current index and value of __coverage[index]. Repeated calls to nextCoverage would loop through the __coverage array. This feature was added before Atom had support for arrays, so it should probably be rewritten as some point in the future. [1] type RuleCoverage = [(Name, Int, Int)] [2] nextCoverage :: Atom (E Word32, E Word32)
As for my project/motivation -- I'm just trying to blink a little LED on much less robust/rich kit -- the Trippy RGB Waves kit from Lady Ada. I am (gratuitously) exploring ways to program it with Haskell.
-- Jason Dusek _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe