Arduino błąd dzielenia - czy są testy dla

Witam.

Kupiłem sobie na próbę klona Arduino nano na Allegro. Działa ok, ale przyłapałem go na błędzie. Otóż kombinuję, żeby zrobić programowany generator przez podział częstotliwości zegara. Wysyłałem częstotliwość przez USB i zwrotnie dostawałem obliczony podzielnik. Raz jeden (za pierwszym uruchomieniem) zdarzyło się, że

16000000/0.2 wyszło 80000008

Najpierw pomyślałem, że funkcja nie nadaje się do dzielenia przez niewielkie ułamki, bo inne wyniki były dobre. Ale wpisałem jeszcze raz to 0.2 i dostałem prawidłowy wynik, czyli 80000000. No i zagwozdka, mogło przekłamać przy liczbie binarnej, ale również przy transmisji, znak '0' i '8' tez różni się 1 bitem, podobnie jak wartość binarna. Jestem pewny dobrego podania dzielnika, bo wypisywał zwrotnie dane.

W związku z tym pytanie, czy ktoś napisał może test do testowania atmegi w tym przypadku 328 ? Niekoniecznie rozbudowany, takie podstawowe przetestowanie.

Reply to
Cezary Grądys
Loading thread data ...

Użytkownik "Cezary Grądys" napisał w wiadomości grup dyskusyjnych:5c081b42$0$485$ snipped-for-privacy@news.neostrada.pl...

Istotnie zagwozdka - czemu 1 raz. Moze i przeklamany bit.

Bo jest jeszcze druga - jak oni/ty to liczysz.

0.2 nie ma dokladnej reprezentacji w binarnym formacie zmiennoprzecinkowym.

Wiec jesli jest jakas biblioteka zmiennoprzecinkowa uzyta, to mamy w pamieci naprawde liczbe

0.199999... i tu juz moze sie 8000008 pojawic :-)

J.

Reply to
J.F.

Cezary Grądys snipped-for-privacy@wa.onet.pl> napisał(a):

Czyżbyś chciał testować jednostkę arytmetyczno-logiczną ATmegi? Ewentualnie libc? Stawiam na błąd w kodzie lub przekłamanie podczas transmisji.

Reply to
Grzegorz Niemirowski

Nie rozumiem, jakie przekłamanie na USB? Transmisje USB są zabezpieczone crc. Problem jest raczej w zmiennym przecinku. w

Reply to
Marek

Marek snipped-for-privacy@fakeemail.com napisał(a):

Doświadczenie życiowe mówi, że to USB miało postać FTDI :) ATmega328 nie ma natywnego USB. Zmiennego przecinka bym nie podejrzewał, do omawianej operacji nie zostały wykorzystane liczby przy których zmienny przecinek dałby o sobie znać. Zrobiłem zresztą test i było OK. Poza tym problem był jednorazowy, co wskazuje na błąd w kodzie lub przekłamanie.

Reply to
Grzegorz Niemirowski

W dniu 06.12.2018 o 16:22, Grzegorz Niemirowski pisze:

Błąd był 1 razowy, najprawdopodobniej błąd transmisji. Na razie wszystko działa prawidłowo, ale znalazłem opinie, że te chińskie arduina różnie działają.

Reply to
Cezary Grądys

W dniu 06.12.2018 o 17:44, Cezary Grądys pisze:

Na podstawie twojego wpisu wyrobiłem sobie opinię, że jesteś totalnym głąbem. Nie mającym pojęcia o tym co to Arduino.

Reply to
Kaczin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.