Debugutskrift för floats i MPLAB med PICC
Postat: 21 mars 2009, 20:51:29
Saker brukar bli enklare med lite debugutskrifter. Just nu sitter jag enbart med mjukvaran som jag utvecklar i PICC från Hi-Tech. printf() verkade lämpligast val för debugutskriften, men vid användande så kommer det inte ut något i MPLAB:s output-fönster, vilket jag antog det skulle göra.
Lite rotande i manualen gav det här:
Lite extra rotande i Hi-Techs FAQ gav det här:
Men jag vill fortfarande gärna ha debugutskrifter. Närmare bestämt så vill jag i en loop skriva ut ett par floats för att se om de håller sig inom rätt ramar. Provade då att dra upp watch-fönstret, men när jag hovrar mina float-värden så är värdena helt galna.
representeras som "403042e-039" i watchen. Om det är watchen som visar fel eller om det faktiska värdet lagras fel vet jag inte, men det är iallafall därför jag skulle vilja ha printf() till att spotta ut värden i output-fönstret.
Vet någon hur man går tillväga för att få printf() att skriva i output?
Lite rotande i manualen gav det här:
Och det verkade ju smidigt. Problemet är att output-fönstret inte verkar vara stdout i det här fallet.Function name Purpose
printf(const char * s, ...) Formatted printing to stdout
Lite extra rotande i Hi-Techs FAQ gav det här:
Mycket riktigt, den PIC-kompilerade funktionen putch() är tom (innehåller endast "clrf STATUS; return"), så där tog det roliga slut eftersom att skriva en egen putch() skulle vara rätt döfött då det blir PIC-kod av det.Q. What does printf output to ?
A. The printf() function calls another function putch() to output
the character after formatting. By default putch() is defined
as an empty function. To allow printf() to write to a specific
output the putch() function needs to be redefined. In most cases
output is directed to the serial port. A sample definition can
be found in the serial.c file in the samples directory of the
compiler distribution for the PICC and PICC18 compilers.
Men jag vill fortfarande gärna ha debugutskrifter. Närmare bestämt så vill jag i en loop skriva ut ett par floats för att se om de håller sig inom rätt ramar. Provade då att dra upp watch-fönstret, men när jag hovrar mina float-värden så är värdena helt galna.
Kod: Markera allt
double Cx = 440e-12Vet någon hur man går tillväga för att få printf() att skriva i output?