Hej,
zacząłem ostatnio programować w C mikrokontrolery i natknąłem na problem chyba łatwy do rozwiązania kto siedzi w C. Ja z C znam tylko podstawy i nie mogę przebrnąć prze ten kawałek kodu. Byłbym bardzo wdzięczny gdyby mi ktoś pomógł. Mój problem wygląda następująco:
Problem wygląda tak że zczytuję dane z przetwornika ADC i dane zczytywane są w momencie przerwania od timera co 5s.
Typ danych zczytywanych z ADC to w programie main zmienna globalna:
uint16_t ADC1Val;
Teraz kiedy funkcja wchodzi do przerwania to chciałbym zapisać wartość tej zmiennej na kartę SD do tego służy funkcja f_write
Definicja funkcji f_write:
Kod:
FRESULT f_write (FIL*, const void*, WORD, WORD*); /* Write data to a file */
Funkcja f_write oczekuje na wartość conts void*
np. mogę wpisać takie coś i taki kod działa, wpisuje do pliku ciąg znaków "zawartosc pliku":
fresult = f_write(&plik, "zawartość pliku", 15, &zapisanych_bajtow)
i muszę teraz zamiast "zawartość pliku" jakoś wartość ADC1Val wstawić, próbowałem dla przykładu kombinować z charem tzn zrobiłem takie coś:
char c[2];
c[0]='a';
c[1]='b';
c[2]='c';
fresult = f_write(&plik, c, 3, &zapisanych_bajtow)
ale takie coś mimo że się kompiluje to przy debugowaniu program wchodzi w nieskończoną pętlę HardFault
ktoś może wie jak rozwiązać ten problem?
w skrócie chcę zamienić typ uint16_t na typ const void*
z góry wielkie dzięki za pomoc