Hi
Im having a bit of a problem with the timer on the 16f877.
i have an old project i built with using the 16f877 and used the timer for a built in clock function. I used a 4x20 display. This worked perfectly.
This time round im using a ks0108 type LCD, and i cant get the timer to work correctly (if at all)
Basically whats happening is when the timer should start to count it scrambles the LCD display, it looks like the text has been typed over and over(text overlapping and random pixelation) then the program appears to stop and is unresponsive to any buttons or sensors.
This happens without the timer actually doing anything, just trying to activate it causes this problem, without the timer the program runs flawlessly.
I am wondering if any external pin connections can cause a problem??
If not is there anything else i can try because i could really do with the timer being active in my project.
Any help is appreciated.
Timer problem with 16F877
-
- Matrix Staff
- Posts: 9521
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
Re: Timer problem with 16F877
Hiya cobra1.
Sounds like it could be a stack issue?
Compile your code and look out for warnings like:
Serious Warning: Call stack usage exceeds:8!
Or
Serious Warning: Possible sw stack corruption
If you do get a warning it will help to seer in the right direction.
Could the port connected to display be controlled by a different routine?
If you are using the same flowchart for both devices and one only works, then that’s unlikely.
Sounds like it could be a stack issue?
Compile your code and look out for warnings like:
Serious Warning: Call stack usage exceeds:8!
Or
Serious Warning: Possible sw stack corruption
If you do get a warning it will help to seer in the right direction.
Could the port connected to display be controlled by a different routine?
If you are using the same flowchart for both devices and one only works, then that’s unlikely.
Martin
Re: Timer problem with 16F877
Ok im making progress
i have narrowed it downt to the PRINT NUMBER function
if the timer is running and i use the PRINT NUMBER function, the program jams up.
if the timer is not running all is good, i can use the timer with any other function in the LCD list apart from PRINT NUMBER
Guessing there is a clash somewhere.
there is no serious warnings etc
i have narrowed it downt to the PRINT NUMBER function
if the timer is running and i use the PRINT NUMBER function, the program jams up.
if the timer is not running all is good, i can use the timer with any other function in the LCD list apart from PRINT NUMBER
Guessing there is a clash somewhere.
there is no serious warnings etc
Re: Timer problem with 16F877
ok, more progress
it seems that there is an interupt used in the print number function, this interupt must be clashing with the timer0 interupt.
if i disable the timer interupt just before using the print number function then all works well. but i cannot have the timer just running continuously while the print number function is being used.
Is this normal or can t be fixed??
it seems that there is an interupt used in the print number function, this interupt must be clashing with the timer0 interupt.
if i disable the timer interupt just before using the print number function then all works well. but i cannot have the timer just running continuously while the print number function is being used.
Is this normal or can t be fixed??
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Timer problem with 16F877
Hello,
It could be simply that the print number function uses all of the layers of the hardware stack due to the nature of the way the code was written. Probably aimed at code size rather then stack efficiency. You should be able to enable the software stack which will allow you to carry on using the interrupt while the print number routine is running.
http://www.matrixmultimedia.com/mmforum ... =21&t=6356
It could be simply that the print number function uses all of the layers of the hardware stack due to the nature of the way the code was written. Probably aimed at code size rather then stack efficiency. You should be able to enable the software stack which will allow you to carry on using the interrupt while the print number routine is running.
http://www.matrixmultimedia.com/mmforum ... =21&t=6356
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel