One of the things that keeps tripping us up is that the MPLAB compiler does not follow standard C data type promotion rules.
For example, given the statement below, standard C would promote both data types to integer,
then multiply. The MPLAB compiler, however, multiplies a and b
as unsigned chars and then sticks the result in the integer value, resulting in an overflow where you least expect it!
Code:
unsigned char a = 127:
unsigned char b = 127;
int result;
result = (a * b);
__________________
CMUCam not working? Tracks sporadically? Try this instead:
http://www.falconir.com!
PM me for more information if you are interested (it's open source!).
Want the FIRST Email blasts? See here:
http://www.chiefdelphi.com/forums/sh...ad.php?t=50809
"The harder the conflict, the more glorious the triumph. What we obtain too cheaply, we esteem too lightly; it is dearness only that gives everything its value."
-- Thomas Paine
If it's falling apart it's a mechanical problem. If it's spewing smoke it's a electrical problem.
If it's rampaging around destroying things it's a programming problem.
"All technology is run on 'Magic Smoke' contained within the device. As everyone knows, whenever the magic smoke is released, the device ceases to function."
-- Anonymous
I currently speak: English, some German, Verilog, x86 and 8051 Assembler, C, C++, VB, VB.NET, ASP, PHP, HTML, UNIX and SQL