When using the CALCULATION SYMBOL I would like to know what the line ;
Duty = Duty * 53/100 means and its influence please. I have attached a screen grab as well. Thanks folks.....John
Calculation Symbol
Moderator: Benj
-
- Valued Contributor
- Posts: 2045
- Joined: Wed Aug 27, 2008 10:31 pm
- Location: Netherlands
- Has thanked: 553 times
- Been thanked: 1081 times
- Contact:
Re: Calculation Symbol
This looks like a question that can use some context.
In you diagram the line simply means the variable duty is multiplied by 53 and then divided by 100. (Which will not yield the result you expect because the multiplication overflows the byte [0-255 value range] variable (5 * 53 = 265 which results in duty becoming 10)
What duty does in your code we can't guess because we there is no flowchart...
In you diagram the line simply means the variable duty is multiplied by 53 and then divided by 100. (Which will not yield the result you expect because the multiplication overflows the byte [0-255 value range] variable (5 * 53 = 265 which results in duty becoming 10)
What duty does in your code we can't guess because we there is no flowchart...
“Integrity is doing the right thing, even when no one is watching.”
― C.S. Lewis
― C.S. Lewis
-
- Posts: 271
- Joined: Tue Mar 05, 2013 10:49 pm
- Has thanked: 111 times
- Been thanked: 13 times
- Contact:
Re: Calculation Symbol
Thanks for replying.Here is the flow chart in question.
Thanks for your help////John
Thanks for your help////John
- Attachments
-
- 16F690 PWM EXP.fcf
- (13.53 KiB) Downloaded 217 times
-
- Posts: 271
- Joined: Tue Mar 05, 2013 10:49 pm
- Has thanked: 111 times
- Been thanked: 13 times
- Contact:
Re: Calculation Symbol-Is this Correct?
OK.could somebody tell me if I'm right or wrong please.
When using the calculation ,Duty=5*53/100 should be Duty=5*51/100
So my assumption is that whatever your Duty number is it should not be multiplied by anything that results in a number bigger than 255?
When using the calculation ,Duty=5*53/100 should be Duty=5*51/100
So my assumption is that whatever your Duty number is it should not be multiplied by anything that results in a number bigger than 255?
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
Re: Calculation Symbol
Hi John,
Since a byte is maximum value is 255, then:
Another example:
etc.
Also
That's why the result of a byte can't be greater than 255.
If it is, then unexpected results will be seen.
So Jac is correct but only if /100 was not used after.
You can have intermittent value within a calculation higher than 255.
It could be as high as 32767 as singed integers are used as temporary variables.
So long as final result is not greater than 255.
For your example:
Is allowed as the final result will be 2:
Note:
Numbers are not rounded up, so 2.65 will round down to 2
Martin
Since a byte is maximum value is 255, then:
Code: Select all
255 + 1 = 0
Code: Select all
255+ 5 = 4
Also
Code: Select all
0 - 1 = 255
If it is, then unexpected results will be seen.
So Jac is correct but only if /100 was not used after.
You can have intermittent value within a calculation higher than 255.
It could be as high as 32767 as singed integers are used as temporary variables.
So long as final result is not greater than 255.
For your example:
Code: Select all
Duty=5*53/100
Code: Select all
5 * 53 = 265
265 / 100 = 2.65
= 2
Numbers are not rounded up, so 2.65 will round down to 2
Martin
Martin