Witam,
mam problem z ćwiczeniem z bluebooka autorstwa Pana Mirka. Problem dotyczy ćwiczenia z przetwornikiem ADC. Chce zrobić prosty woltomierz o wewnętrznym napięciu odniesienia 2,56 V mierzący napięcie z przedziału 0-32 V.
Napisałem kod tak jak w książce:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W efekcie gdy kręce potencjometrem to na wyswietlaczu pojawiają się wartości 0.47, 5.17, 2,51, potem znowy 5.70 i tak cyklicznie wzrastają i maleją.
Wyświetliłem samą wartośc pm i wszystko dobrze, pokazuje od 0 do 1024, naptomiast gdy wyswietliłem bez wartosci ułamkowej sam wynik to zaczęły pojawiac się dziwne wartości: na skrajnym polozeniu potencjometru jest 4795, kręcąc dalej wartosc wachają sie od ok. 15000 do - 15000 i tak skaczą od wartosci ujemnych do dodatnich kilka razy zanim
dojdę do drugiej skrajnej pozycji potencjometru.
Następnie w programie juz z wartosciami ułamkowymi spróbowałem wpisać w zmienną wynik wartosc która ma mi dać napięcie maksymalne czyli : 332800 (bo 1024*25*13)
i na wyświetlaczu pojawiła się prawidłowa wartość 33.28 V.
Ale jest dla mnie bardzo dziwne, kiedy wpisałem w zmienna wynik zamiast 332800 to 1024*25*13 wtedy kompilator zaprotestował warningiem dając komunikat:
"integer overflow in expression". Jest to dla mnie dziwne bo przecież zmienną zadeklarowałem jako uint32_t.
Bardzo proszę o pomoc bo nie mam pojęcia gdzie robię błąd.
Pozdrawiam serdecznie