eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Programowanie MCU - największa liczba
Ilość wypowiedzi w tym wątku: 24

  • 1. Data: 2023-02-26 01:35:02
    Temat: Programowanie MCU - największa liczba
    Od: Stachu Chebel <s...@g...com>

    Używam Kinetis Design Studio. MCU: Arm Cortex-M4. Dokładnie jest to
    MK22FN512VLH12. Definiuję zmienną globalną : double a; .
    W przerwaniu zmienna jest inkrementowana: a=a+Byle_Co;
    Program działa poprawnie, ale do pewnego momentu czasowego.
    W pewnym momencie idzie "w maliny". Sekwencja:

    a=a+Byle_Co;
    if(a>Max)a=0;

    rozwiązuje problem. Ile maksymalnie mogę ustawić Max? Za cholerę nie mogę
    się doszukać maksymalnej wartości zmiennej typu "double" dla mojego MCU.
    Eksperymentalnie ustawiłem Max=1e6. Program nie idzie w maliny. Jakie może być
    największe Max?


  • 2. Data: 2023-02-26 10:18:09
    Temat: Re: Programowanie MCU - największa liczba
    Od: Dawid Rutkowski <d...@w...pl>

    niedziela, 26 lutego 2023 o 01:35:04 UTC+1 Stachu Chebel napisał(a):
    > Używam Kinetis Design Studio. MCU: Arm Cortex-M4. Dokładnie jest to
    > MK22FN512VLH12. Definiuję zmienną globalną : double a; .
    > W przerwaniu zmienna jest inkrementowana: a=a+Byle_Co;
    > Program działa poprawnie, ale do pewnego momentu czasowego.
    > W pewnym momencie idzie "w maliny". Sekwencja:
    >
    > a=a+Byle_Co;
    > if(a>Max)a=0;
    >
    > rozwiązuje problem. Ile maksymalnie mogę ustawić Max? Za cholerę nie mogę
    > się doszukać maksymalnej wartości zmiennej typu "double" dla mojego MCU.
    Eksperymentalnie ustawiłem Max=1e6. Program nie idzie w maliny. Jakie może być
    największe Max?

    Już lepiej napisz, ile wynosi Byle_co.
    A długo musisz czekać na to "pójście w maliny"?


  • 3. Data: 2023-02-26 10:27:27
    Temat: Re: Programowanie MCU - największa liczba
    Od: "J.F" <j...@p...onet.pl>

    On Sat, 25 Feb 2023 16:35:02 -0800 (PST), Stachu Chebel wrote:
    > Używam Kinetis Design Studio. MCU: Arm Cortex-M4. Dokładnie jest to
    > MK22FN512VLH12. Definiuję zmienną globalną : double a; .
    > W przerwaniu zmienna jest inkrementowana: a=a+Byle_Co;
    > Program działa poprawnie, ale do pewnego momentu czasowego.
    > W pewnym momencie idzie "w maliny". Sekwencja:
    >
    > a=a+Byle_Co;
    > if(a>Max)a=0;
    >
    > rozwiązuje problem. Ile maksymalnie mogę ustawić Max? Za cholerę nie mogę
    > się doszukać maksymalnej wartości zmiennej typu "double" dla mojego MCU.
    Eksperymentalnie ustawiłem Max=1e6. Program nie idzie w maliny. Jakie może być
    największe Max?

    Double na ARM? Nie wiem, ale jakies horendalnie duzo.
    DBL_MAX


    1.7e+308 ?
    https://developer.arm.com/documentation/dui0491/f/Ba
    bbfeda

    Raczej niemozliwe, zebys tyle zrobil w petli ... ile wynosi Byle_co?

    Ale jeszcze czemu program idzie w maliny - wyjatek jakis ?

    J.




  • 4. Data: 2023-02-26 10:50:44
    Temat: Re: Programowanie MCU - największa liczba
    Od: KLoSS <n...@a...com.pl>

    W dniu 26.02.2023 o 01:35, Stachu Chebel pisze:
    > Używam Kinetis Design Studio. MCU: Arm Cortex-M4. Dokładnie jest to
    > MK22FN512VLH12. Definiuję zmienną globalną : double a; .
    > W przerwaniu zmienna jest inkrementowana: a=a+Byle_Co;
    > Program działa poprawnie, ale do pewnego momentu czasowego.
    > W pewnym momencie idzie "w maliny". Sekwencja:
    >
    > a=a+Byle_Co;
    > if(a>Max)a=0;
    >
    > rozwiązuje problem. Ile maksymalnie mogę ustawić Max? Za cholerę nie mogę
    > się doszukać maksymalnej wartości zmiennej typu "double" dla mojego MCU.
    Eksperymentalnie ustawiłem Max=1e6. Program nie idzie w maliny. Jakie może być
    największe Max?
    >


    1. Double jest z definicji zmiennoprzecinkowe z określoną dokładnością
    mantysy a dokładna definicja jest zależna m.im. od języka i kompilatora
    i może być różna
    Np .w c++ jest zdefiniowana tak:
    https://en.cppreference.com/w/cpp/language/types

    czyli zgodnie z "IEEE-754 binary64 format" co daje jako max jakieś
    1.79769e+308

    Nie sądzę aby to było problemem. Prędzej ilość miejsc znaczących mantysy
    bo jeśli Byle_Co jest stałe to po określonej ilości iteracji 'a'
    przestanie nam się zwiększać.

    I jeszcze wielokrotne inkrementowanie liczb zmiennoprzecinkowych nie
    jest dobrym pomysłem bo błąd zaokrągleń będzie nam narastał i przy
    odpowiednio dużych iteracjach błąd może być większy niż Byle_Co.

    I na koniec konstrukcja

    > a=a+Byle_Co;
    > if(a>Max)a=0;

    jest zupełnie bez sensu. Bo skoro z definicji 'a' nie może być większe
    niż Max to cały ten if nie zadziała nigdy prawidłowo.

    Proponuję najpierw poczytać podstawy matematyki binarnej i jej ograniczenia.

    Nie znam problemu ale zamiast double w przypadku inkrementacji zazwyczaj
    lepiej użyć zmiennej stałoprzecinkowej.


    --
    KLoSS


  • 5. Data: 2023-02-26 11:19:33
    Temat: Re: Programowanie MCU - największa liczba
    Od: Marek <f...@f...com>

    On Sun, 26 Feb 2023 10:27:27 +0100, "J.F"
    <j...@p...onet.pl> wrote:
    > 1.7e+308 ?


    A co w takiej zmiennej "się zapisze" po operacji (1.7e+307)+1? :-)

    --
    Marek


  • 6. Data: 2023-02-26 11:22:40
    Temat: Re: Programowanie MCU - największa liczba
    Od: Marek <f...@f...com>

    On Sun, 26 Feb 2023 10:50:44 +0100, KLoSS
    <n...@a...com.pl> wrote:
    > > a=a+Byle_Co;
    > > if(a>Max)a=0;
    > jest zupełnie bez sensu. Bo skoro z definicji 'a' nie może być
    > większe
    > niż Max to cały ten if nie zadziała nigdy prawidłowo.

    A skąd to założenie, że a z definicji nie jest większe od Max?

    --
    Marek


  • 7. Data: 2023-02-26 14:15:09
    Temat: Re: Programowanie MCU - największa liczba
    Od: "Grzegorz Niemirowski" <g...@g...net>

    Marek <f...@f...com> napisał(a):
    > A skąd to założenie, że a z definicji nie jest większe od Max?

    Z pierwszego posta. Szukamy takiej wartości Max, która będzie największą
    możliwą dla a.

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 8. Data: 2023-02-26 14:58:50
    Temat: Re: Programowanie MCU - największa liczba
    Od: Marek <f...@f...com>

    On Sun, 26 Feb 2023 14:15:09 +0100, "Grzegorz Niemirowski"
    <g...@g...net> wrote:
    > Z pierwszego posta. Szukamy takiej wartości Max, która będzie
    > największą
    > możliwą dla a.

    Ale dlaczego zakladasz że Twórca nie wie co pisze? To chyba jasne że
    autor zrobił skrót myślowy czyli " Max" to wartość graniczna lokalna
    (na potrzeby algorytmu) a nie max możliwej (absolutna) dla a.

    --
    Marek


  • 9. Data: 2023-02-26 18:04:44
    Temat: Re: Programowanie MCU - największa liczba
    Od: KLoSS <n...@a...com.pl>

    W dniu 26.02.2023 o 11:19, Marek pisze:
    > On Sun, 26 Feb 2023 10:27:27 +0100, "J.F" <j...@p...onet.pl>
    > wrote:
    >> 1.7e+308 ?
    >
    >
    > A co w takiej zmiennej "się zapisze" po operacji  (1.7e+307)+1? :-)
    >

    Sprowadź te liczby do wspólnego wykładnika to zobaczysz co się "zapisze".

    Najlepiej rozpisz sobie to na kartce, dużej kartce ;-)



    --
    KLoSS


  • 10. Data: 2023-02-26 19:06:15
    Temat: Re: Programowanie MCU - największa liczba
    Od: Marek <f...@f...com>

    On Sun, 26 Feb 2023 18:04:44 +0100, KLoSS
    <n...@a...com.pl> wrote:
    > Najlepiej rozpisz sobie to na kartce, dużej kartce ;-)

    Chodziło mi raczej o wynik operacji na zmiennej a nie na kartce.

    --
    Marek

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: