Cześć, piszę program pod atmegę16 i wypisuje różne komunikaty via rs-232.
O ile robię to przy pomocy własnej funkcji uart_puts to wszystko jest ok.
Mam jednak potrzebę wypisywania tekstów złożonych z napisów oraz wartości zmiennych różnych typów. Użyłem do tego zadanie funkcji sprintf, np:
Na początku działało wyśmienicie ale po kilku użyciach tego patentu w programie mikrokontroler głupieje, zmienne przyjmują śmieciowe wartości itp.
Podejrzewam że coś powoduje przepełnienie zmiennej buf (niby ustawiłem tablicę z dużym zapasem) albo po prostu brakuje pamięci?? Program nie jest zbyt duży.
Próbowałem używać jednej globalnej zmiennej buf oraz kilku lokalnych - problem jest podobny.
Ja można znaleźć/wyeliminować przyczynę tego ? Może jakiś czyścić zmienną po użyciu albo ustawić coś w parametrach kompilatora?
Może istnieje lepszy sposób na wysłanie via rs tego typu treści (inny niż sprintf ale dający takie możliwości).
Proszę o radę.
Proszę używać znaczników code.
Robak
O ile robię to przy pomocy własnej funkcji uart_puts to wszystko jest ok.
[void uart_puts (char *s) {
// loop until *s != NULL
while (*s) {
usart_putc(*s);
s++;
}
}Mam jednak potrzebę wypisywania tekstów złożonych z napisów oraz wartości zmiennych różnych typów. Użyłem do tego zadanie funkcji sprintf, np:
char buf[100];
sprintf(buf, "ADC[0]=%4.1f - ADC[1] = %4.1f - ADC[2] = %4.1f - ADC[3] = %4.1f",fMeasSensor[0],fMeasSensor[1],fMeasSensor[2],fMeasSensor[3]);
uart_puts (buf);Na początku działało wyśmienicie ale po kilku użyciach tego patentu w programie mikrokontroler głupieje, zmienne przyjmują śmieciowe wartości itp.
Podejrzewam że coś powoduje przepełnienie zmiennej buf (niby ustawiłem tablicę z dużym zapasem) albo po prostu brakuje pamięci?? Program nie jest zbyt duży.
Próbowałem używać jednej globalnej zmiennej buf oraz kilku lokalnych - problem jest podobny.
Ja można znaleźć/wyeliminować przyczynę tego ? Może jakiś czyścić zmienną po użyciu albo ustawić coś w parametrach kompilatora?
Może istnieje lepszy sposób na wysłanie via rs tego typu treści (inny niż sprintf ale dający takie możliwości).
Proszę o radę.
Proszę używać znaczników code.
Robak
