13-10-2016, 06:13 PM
I made a start on the circle. The table holds the number of pixels from the vertical center line of the circle to the circumference of circle for that line. The largest value that it would need to store is 374, the table would then require two bytes per entry but as the value is only ever increasing or decreasing we only need to hold the difference between the current and previous values. The largest value in this case is 51 which will effectively half the size of the table. Both timers start off with a value that represents the center of the picture. The value in the table is added to the timer that controls the left side of the circle which will make it overflow earlier and the same value is subtracted from the timer that dose the right side of the circle so it will overflow later.
The two photos below have timing errors but show that it will work.
14 cycles has been removed from the center of the picture to accommodate the time the interrupts take to complete.
The second photo shows jagged verticals. I believe these timing errors are caused if the interrupt coincides with an instruction that alters the program counter, as this alters the overall time the interrupt routine takes. This will need to be compensated for probably with another table, although bits 6 and 7 are not used on the current table and could be used for this, instead of making a new table.
Frank
The two photos below have timing errors but show that it will work.
14 cycles has been removed from the center of the picture to accommodate the time the interrupts take to complete.
The second photo shows jagged verticals. I believe these timing errors are caused if the interrupt coincides with an instruction that alters the program counter, as this alters the overall time the interrupt routine takes. This will need to be compensated for probably with another table, although bits 6 and 7 are not used on the current table and could be used for this, instead of making a new table.
Frank







