Bug: turn on SD_FAST_XFER_AKTIV and compilation fails if PID is

enabled.

Fix:
If SD_FAST_XFER_AKTIV is defined, fast_xfer() only declares
g_heater_pwm_val if PIDTEMP is defined, but later assigns
g_heater_pwm_val=0 regardless whether PIDTEMP is defined or not. If
PIDTEMP is undefined, g_heater_pwm_val is undeclared at compile time and
generates the appropriate error. I solved by not using g_heater_pwm_val
if PIDTEMP is undefined (and therefor undeclared.)

Also, the extern declaration was as an int, when g_heater_pwm_val is
defined as a volatile unsigned char. This caused a duplicate declaration
error, which was solved by changing the declaration in fast_xfer() to
match the definition. I didn't dig deeper to try to understand if the
mismatch was intentional or test operation other than verify the compile
errors no longer occur.
This commit is contained in:
OhmEye 2012-04-30 23:59:53 -10:00
parent 52f7f30408
commit 976c90b315

View file

@ -359,7 +359,7 @@ unsigned char manage_monitor = 255;
#ifdef SD_FAST_XFER_AKTIV
#ifdef PIDTEMP
extern int g_heater_pwm_val;
extern volatile unsigned char g_heater_pwm_val;
#endif
void fast_xfer()
@ -371,7 +371,9 @@ unsigned char manage_monitor = 255;
if(HEATER_0_PIN > -1) WRITE(HEATER_0_PIN,LOW);
if(HEATER_1_PIN > -1) WRITE(HEATER_1_PIN,LOW);
#ifdef PIDTEMP
g_heater_pwm_val = 0;
#endif
lastxferchar = 1;
xferbytes = 0;