Quote:
|
Originally Posted by cbolin
Hi,
My printf isn't processing all the characters...only the first it seems. Any thoughts on how to get this working? A UART initialization problem? My PC?
Regards,
ChuckB
|
Explicitly cast the integer arguments being provided to printf
to the desired type. If x is an int, y is a int, and z is a long,
use: printf("%d %d %lx\n", (int)x, (int)y, (long)z);
The default way in which arguments are pushed, for routines
that do not have their arguments declared, is char. This is a
property of the MicroChip C-Bot compiler enironment. You may
influence this behavior by changing settings, but who knows what
else will break if you do that. The only place the problem seems
to appear is the printf calls, because the arguments for all the
other routines are explicitly declared. It is not hard to provide
the required type casts to the printf calls.
The fact that you can't print a long using the provided printf()
is quite a bother. If you would like a routine that addresses that
problem, refer to the file pl.c available in the EiC.zip file available
in the technical page at
www.srvhsrobotics.org The code involved
is described in the programming tutorial (well, perhaps not quite
a tutorial) available from the same web page.
Eugene