W programie mam taki oto kod funkcji:
Zasadniczo mój problem polega na tym,że program wykonuj się stosunkowo długo na atmedze32 taktowanej 16mhz. Symulując zauważyłem, że największą zakałą jest pętla for w której następuje mnożenie.
Dane które otrzymuje po SPI to pomiar z przetwornika który ma 13 bitów rozdzielczości. 256*b+c daje dokładnie 13 bitów, gdyż pierwsze 3 bity słowa b zeruję. Tak więc tablica tab[32] mogłaby mieć tym uint16 zamiast uint32, lecz jak się okazuje nie może. Właśnie nie może dlaczego? Czy zna ktoś odpowiedź bo dla mnie jak na razie jest to nie zrozumiałe. Gdy wysyłam wartości otrzymane w tablicy do terminala to dostaje losowe liczby wraz z ujemnymi. Zmiana typu tablicy na unsigned int czy też int również daje ten sam efekt. W takim układzie dostaje próbkę co ok 14 ms, gdyż próbkuje na 2 kanałach. Tak więc czy potrafi ktoś wskazać mi błąd jaki popełniam przez który liczby 13 bitowej nie mogę wpisac do tablicy której argumenty mają 16 bitów?
Kod: C / C++
Zasadniczo mój problem polega na tym,że program wykonuj się stosunkowo długo na atmedze32 taktowanej 16mhz. Symulując zauważyłem, że największą zakałą jest pętla for w której następuje mnożenie.
Dane które otrzymuje po SPI to pomiar z przetwornika który ma 13 bitów rozdzielczości. 256*b+c daje dokładnie 13 bitów, gdyż pierwsze 3 bity słowa b zeruję. Tak więc tablica tab[32] mogłaby mieć tym uint16 zamiast uint32, lecz jak się okazuje nie może. Właśnie nie może dlaczego? Czy zna ktoś odpowiedź bo dla mnie jak na razie jest to nie zrozumiałe. Gdy wysyłam wartości otrzymane w tablicy do terminala to dostaje losowe liczby wraz z ujemnymi. Zmiana typu tablicy na unsigned int czy też int również daje ten sam efekt. W takim układzie dostaje próbkę co ok 14 ms, gdyż próbkuje na 2 kanałach. Tak więc czy potrafi ktoś wskazać mi błąd jaki popełniam przez który liczby 13 bitowej nie mogę wpisac do tablicy której argumenty mają 16 bitów?
