Witam wszystkich.
Chcąc wykorzystać dobrodziejstwa avr-gcc użyłem funkcji dtostrf(). Mam funkcje wypisującą znak na LCD i jak robię np:
To oczywiście wypisze mi 1234 na LCD
ale...gdy chce wyświetlić double robię tak w funkcji main:
Dodatkowo w pliku Makefile ustawiam: co widać poniżej
ale niestety nie wyświetla mi nic na LCD.
W czym tkwi problem? Coś jeszcze powinienem ustawić makefile?
Chcąc wykorzystać dobrodziejstwa avr-gcc użyłem funkcji dtostrf(). Mam funkcje wypisującą znak na LCD i jak robię np:
void wypiszNaLCD(unsigned char*p)
{
unsigned char c;
while((c = *p++) != '\0')
print(c);
}
//////////////////////////////
int main(void)
{
.
.
.
unsigned char str[10];
int i =1234;
itoa(i,str,10);
wypiszNaLCD(str);
}
To oczywiście wypisze mi 1234 na LCD
ale...gdy chce wyświetlić double robię tak w funkcji main:
volatile double wynik;
unsigned char str2[10];
wynik = 12.123;
dtostrf(wynik,3,3,str);
wypiszNaLCD(str2);
Dodatkowo w pliku Makefile ustawiam:
PRINTF_LIB = $(PRINTF_LIB_FLOAT)
#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
# If this is left blank, then it will use the Standard printf version.
#PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
PRINTF_LIB = $(PRINTF_LIB_FLOAT)
# Minimalistic scanf version
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)
MATH_LIB = -lm
ale niestety nie wyświetla mi nic na LCD.
W czym tkwi problem? Coś jeszcze powinienem ustawić makefile?
