Witam!
Ostatnio próbuję swoich sił z tym mikrokontrolerem i napotkałem się na dziwne zachowanie, otóż w przypadku takiego kodu
zmienna counter_temp zachowuje się poprawnie i osiąga wartość jaka jest zapisana w tablicy do której wskazuje Table_temp, natomiast w przypadku takiej składni
dochodzi do jakiejś anomalii, gdy wartość tablicy o adresie 4 wynosi 0-3, to konwersja przebiega poprawnie, natomiast gdy wartość tej tablicy będzie wynosić 4 i więcej, to mnożenie przez 10000 wywołuje nieoczekiwane zachowania, np gdy wartość ta ustawiona zostanie na 4 a reszta komórek będzie przechowywała wartość 0, to zmienna counter_temp otrzymuje wartość 294941760 (wyświetlam na wyświetlaczu 9 cyfr). Nie wiem jak to wyjaśnić, czy to jest wada mikrokontrolera czy kompilatora (AVR studio i WinAVR dają taki sam efekt). Czemu ta anomalia występuje tylko przy mnożeniu przez 10000 i nie występuje, gdy wcześniej zawartość adresu zostanie przepisana do zmiennej i pomnożona przez tą wartość?
Ostatnio próbuję swoich sił z tym mikrokontrolerem i napotkałem się na dziwne zachowanie, otóż w przypadku takiego kodu
Kod: C / C++
zmienna counter_temp zachowuje się poprawnie i osiąga wartość jaka jest zapisana w tablicy do której wskazuje Table_temp, natomiast w przypadku takiej składni
Kod: C / C++
dochodzi do jakiejś anomalii, gdy wartość tablicy o adresie 4 wynosi 0-3, to konwersja przebiega poprawnie, natomiast gdy wartość tej tablicy będzie wynosić 4 i więcej, to mnożenie przez 10000 wywołuje nieoczekiwane zachowania, np gdy wartość ta ustawiona zostanie na 4 a reszta komórek będzie przechowywała wartość 0, to zmienna counter_temp otrzymuje wartość 294941760 (wyświetlam na wyświetlaczu 9 cyfr). Nie wiem jak to wyjaśnić, czy to jest wada mikrokontrolera czy kompilatora (AVR studio i WinAVR dają taki sam efekt). Czemu ta anomalia występuje tylko przy mnożeniu przez 10000 i nie występuje, gdy wcześniej zawartość adresu zostanie przepisana do zmiennej i pomnożona przez tą wartość?
