Getting even more confusing, I tried:
And still the DEBUG line shows up even when: I > 0Code:DO while I = 0
![]()
Getting even more confusing, I tried:
And still the DEBUG line shows up even when: I > 0Code:DO while I = 0
![]()
You probably have several timer interrupts while it's inside your DO LOOP, so I ends up with unexpected values.In my DEBUG line "I" shows up as 0,2,4,5 randomly
Example: With i = i + 1 being first in your timer interupt, it's changing the value of i on every interrupt, and sometimes even during the process of PBP trying to output everything with DEBUG.
When DEBUG actually starts, your interrupt is still changing I before PBP outputs it.
Try this. Changes are in Bold
Code:'---[INT - interrupt handler]------Signal found at RB0, take a reading SignalFound: T1CON.0 = 0 ; Stop timer1 i = i + 1 FValue = TMR1H * 256 + TMR1L + fvalue ; Add 10 readings to FValue if i >= 10 then ' COMPARISON CHANGED TO >= fvalue = fvalue / i ; get the average of one reading CHANGED HERE i = 0 ; Reset counter ReadFlag = 1 ; FValue is ready to read endif TMR1H = 21 ; reset timer1 to 60mS TMR1L = 167 T1CON.0 = 1 ; Start timer1 @ INT_RETURN
Last edited by Jerson; - 29th April 2010 at 03:26.
Hi Bruce and Jersen,
That is really fast !
Jerson,
I was able to observe the proper values by moving the DEBUG line inside the INT handler.
Is there a more efficient way to observe variables values within a program?
It seams like LCDOUT and DEBUG are taking too long to operate and are giving false values.
Thank you
Mike
Bruce,
I came across this link you wrote Entitled "Using MicroCode Studio ICD
With The PIC16F628 Microcontroller" http://www.rentron.com/PicBasic/MCS_X3.htm
Would this enable me to view each step of a program as well as where the PIC timer is at while executing a specific line of code?
Mike
Hi Mike,
Yep. MCS+ ICD is very handy if you have the paid version of MCS+. But if you're trying to view real-time timer values, I would go with MPLAB/MPSIM.
By the time you LCDOUT, SEROUT, whatever, the timer is long past the value you're displaying.
What precisely is it you need to do?
I didn't think I could see real time values with MPSIM using a program written with PBP!
I will give it a try, I guess I have to invest a little time learning the Stimulus properly, I have done very little assembly and was able to test buttons triggering LEDs but when I started going deeper into this I kind of got distracted with PBP.
I am building an ultrasonic distance measurement device, I have seen some circuits here and there but I really want to fully understand what I am doing and build my own. I don't have any code to show just yet because I have started to isolate the different parts of my code and it doesn't look like any program right now.
What I am trying to achieve is using Daryl's Interrupts.
Using TMR1_INT I send HPWM and using INT_INT I detect the echo from the Rx on RB0.
I keep trying to tell myself that the PIC is running fast but I am always amazed with how much I underestimate the speed at witch it operates.
I think I am not too far from something, just wish I could slow down everything and observe what is going on during each operation of code (other than the operation itself)
I guess MPSIM is probably the way to go?
Mike
Bookmarks