Michal_PB1 napisał(a):
pewnie ciekaw kolega SunRiver jest co bylo przyczyna ?
a otóż nie wlasciwy typ zmiennej 'pw' (i chyba mi sie zdaje ze w ksiazce tez jest blad bo jest uint16_t a wychodzi liczba duzo wieksza, nie chce podważac umiejetnosci autora !!) zmienilem z 16 na 32
....oj, oj .... panie kolego ... ja bardzo uprzejmie proszę o jasne i rzeczowe odniesienie się do tego błędu w kontekście zwrócenie uwagi o błędzie w książce. Nie chodzi tu o moją urażoną dumę, bo każdy może popełnić błąd, ja także - jestem tylko człowiekiem jak każdy.
Jednak bardzo przepraszam, ale nie chciałbym na tym forum, takich stwierdzeń o błędach w książce i to bez żadnego poparcia. Nie żebym się czepiał ale proszę zwrócić przede wszystkim uwagę na to, że:
1. po pierwsze w książce nie ma żadnej zmiennej pw tylko pm (ale rozumiem, że to może być literówka po prostu) dlatego przyjmuję, że kolega ma problemy właśnie z tą zmienną w kodach z książki.
2. zmienna pm w książce jest typu uint16_t i jak najbardziej jest to prawidłowo dobrany typ dla tejże zmiennej
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w kodzie w książce występuje ona w takim użyciu i w takich linijkach kodu. Zwracając więc uwagę na błąd w książce, bardzo uprzejmie proszę się odnosić do faktów a nie do własnego kodu, który może być źle napisany. Szczególnie na tym forum. To nie forum elektroda i dlatego chciałbym aby tu każdy mógł znaleźć rzetelne informacje a nie domysły. Bo na elektrodzie to nie jeden temat rozpoczyna się o tym, że ktoś ma problem z kodami z naszej książki, gdyż tam są błędy albo dlatego pisze o swoim problemie bo "słyszał", właśnie skąd słyszał? z takich właśnie postów o rzekomych problemach. Tylko proszę je poczytać dalej. To że na końcu zwykle się wszystko wyjaśnia i autor gdzieś na samym końcu nieraz (bo nie zawsze) odwołuje swoje słowa z początku tematu uznając, że to jego ewidentny błąd, to i tak później tego nikt nie czyta. Każdy widzi tylko nagłówek tematu:
"I znowu są problemy z kodami z książki z Atnela"
Po to powstało to forum. Proszę zatem na podstawie tego co jest pokazane (zaznaczam) jako przykład w książce - patrz linijki powyżej gdzie jest błąd z typem zmiennej pm ? i proszę spróbować, hmm pokusić się o precyzyjne uzasadnienie tego błędu.
Bo to, że w trzeciej linijce kodu, który widać powyżej zakres obliczeń znacznie przekracza pojemność uint16_t to chyba oczywiste dla każdego, tyle że co ma tu do rzeczy typ zmiennej pm ?
Wynik obliczeń trafia do zmiennej wynik, a ta już jest typu uint32_t !
skąd więc pomysł o przekroczeniu pojemności typu dla pm, skoro ta zmienna na podstawie działania funkcji pomiar może w swoim całym życiu w programie przyjąć tylko i wyłącznie wartości od 0 do 1024 (bo taka jest maksymalna możliwa wartość do odczytania właśnie z pary rejestrów ADCH i ADCL - czyli jednym słowem z ADCW (
to od razu jest odpowiedzią na kolejne pytanie szanownego kolegi. AVR GCC przygotował specjalne makro ADCW na tę okoliczność, żeby od razu prosto odczytać wartość tych dwóch rejestrów, stąd wzięło się w kodzie ADCW)
wracając do rzekomego błędu w książce - sorry że do tego wracam, ale jednak wielu ludzi czyta wątki które są tutaj, po przeczytaniu sugestii kolegi i bez mojego odniesienia się do rzeczy, będzie nosiło to w swojej głowie i podświadomości, a potem jak tylko zdarzy im się jakiś problem z ćwiczeniami ADC, to podświadomość od razu podpowie, że " aaaaa gdzieś już czytałem, że w tej książce są błędy z ADC" .... Tymczasem kolega pewnie sobie kod zaczął rozwijać po swojemu i użył zmiennej pm w inny sposób niż trzeba - popełniając błąd. Tego jednak nie wiem na pewno, więc nie zarzucam koledze też od razu błędu - tylko proszę w takich przypadkach o pokazanie kodu dokładnego miejsca gdzie wystąpił problem czy gdzie udało się go odnaleźć. Wtedy wszystkim będzie łatwiej OK ?
dlatego tak się nie robi ok ???
Jest odpowiedni dział na forum do zgłaszania błędów i prosiłbym jak już to w ten sposób to rozwiązywać albo najpierw podzielić się taką rewelacją ze mną na PRIV.
Mam nadzieję, że kolega się nie obrazi za moje uwagi bo nie to było moim celem a po prostu wyjaśnienie.