Add ...
wsave VAR BYTE $70 SYSTEM
to your program.
OK. Thanks, Compiles now and have a blinking LED. Back to the timing... Sorry I am so dense with this.
How do I go about setting the timer for prescale of 1 and a peload of 21537
I have been looking at previous posts and the datasheet for the 16f887, but not really sure what I need to do.
I assume I have to set T1CON and perhaps OPTION_REG
Also would I be better off using Timer2 since its 8bit (would it be less resources, etc?). As the timer is tripping along, there is no issue with timing of other things like serial commands, I2C timing, etc?
http://www.picbasic.co.uk/forum/show...7472#post17472
Has the example to set the pre-scaler.
Then in your code for the pre-load.
Then in the interrupt routineCode:PreLoad VAR WORD PreLoad = 21537 TMR1L = PreLoad.LowByte TMR1H = PreLoad.HighByte
Maybe....Code:TMR1L = PreLoad.LowByte ' Load the timer with preload value. TMR1H = PreLoad.HighByte
Dave
Always wear safety glasses while programming.
cool. I had it in the begining, did not have it in the interupt. Firing every 22ms on the scope.
So, this will not mess up anything as far as I2C or serial? or is that dependent on what I do during the interupt? (The final interupt will take about 10-14ms and fire off every 22ms)
You need to get in and out of an interrupt routine as quick as possible.So, this will not mess up anything as far as I2C or serial? or is that dependent on what I do during the interupt? (The final interupt will take about 10-14ms and fire off every 22ms)
So if the I2C and serial stuff is handled out side then you should be good.
Dave
Always wear safety glasses while programming.
In order to get in and out quick I will need to use another timer I guess. I need to fire off serries of 8 pulses every 22ms. The high pulses will range from 400us to 1800us with a 400uslow pulse/pause between each one. So I am looking for some advise as to the best approach. Would be the best approach it with a second timer or the same one? I guess if I use the same one I can add up all the small pulses and then wait the difference of 22ms and repeat, but I am not sure if that is as reliable as using two timers, perhaps simpler though. If two timers, should I use timer1 (the 16 bit one for the shorter pulses since their accuracty is more critical than the 22ms) and timer0 or timer2 for the 22ms event. Is there any big deal with changing the preload value for the shorter pulses each time?
In either approach, can I use a case select inside the interupt routine to remember where I am in the interupt pulse train each time I return, or is there something I have to do to pass variables in and out of the interupt routine.
Thanks,
Charlie
I probably worded that wrong. Just make sure you finish before the next period and/or leave enough time to do whatever else you need to do.
Dave
Always wear safety glasses while programming.
Bookmarks