Cezary GrÄ
dys
Guest
Wed Dec 05, 2018 7:38 pm
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.
--
Cezary Grądys
czarekgr@wa.onet.pl
J.F.
Guest
Wed Dec 05, 2018 9:37 pm
Użytkownik "Cezary Grądys" napisał w wiadomości grup
dyskusyjnych:5c081b42$0$485$65785112@news.neostrada.pl...
Quote:
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.
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.
Grzegorz Niemirowski
Guest
Thu Dec 06, 2018 12:36 am
Cezary Grądys <czarekgr@wa.onet.pl> napisał(a):
Quote:
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.
Czyżbyś chciał testować jednostkę arytmetyczno-logiczną ATmegi? Ewentualnie
libc? Stawiam na błąd w kodzie lub przekłamanie podczas transmisji.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Marek
Guest
Thu Dec 06, 2018 4:08 pm
On Wed, 5 Dec 2018 19:38:58 +0100, Cezary Grądys<czarekgr@wa.onet.pl>
wrote:
Quote:
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.
Nie rozumiem, jakie przekłamanie na USB? Transmisje USB są
zabezpieczone crc. Problem jest raczej w zmiennym przecinku. w
--
Marek
Grzegorz Niemirowski
Guest
Thu Dec 06, 2018 4:22 pm
Marek <fake@fakeemail.com> napisał(a):
Quote:
Nie rozumiem, jakie przekłamanie na USB? Transmisje USB są zabezpieczone
crc. Problem jest raczej w zmiennym przecinku. w
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.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Cezary GrÄ
dys
Guest
Thu Dec 06, 2018 5:44 pm
W dniu 06.12.2018 o 16:22, Grzegorz Niemirowski pisze:
Quote:
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.
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ą.
--
Cezary Grądys
czarekgr@wa.onet.pl
Kaczin
Guest
Thu Dec 06, 2018 8:04 pm
W dniu 06.12.2018 o 17:44, Cezary Grądys pisze:
Quote:
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ą.
Na podstawie twojego wpisu wyrobiłem sobie opinię, że jesteś totalnym
głąbem. Nie mającym pojęcia o tym co to Arduino.
--
Kaczin