eGospodarka.pl
eGospodarka.pl poleca

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

  • 11. Data: 2023-02-26 19:21:46
    Temat: Re: Programowanie MCU - największa liczba
    Od: KLoSS <n...@a...com.pl>

    W dniu 26.02.2023 o 19:06, Marek pisze:
    > 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.
    >

    "Zmienna" to tylko miejsce do zapamiętywania wartości bez znaczenia czy
    na kartce, czy kamyki na piasku, czy elektrony w krzemie.

    Jak chcesz tylko wiedzieć jaki będzie wynik a kartka zła to sprawdź na
    MCU, szybciej byś sprawdził niż zadał zapytał na grupie i czekał na
    odpowiedź.

    A jak chcesz wiedzieć dlaczego tak, to bez kartki się nie obejdzie.

    --
    KLoSS


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

    On Sun, 26 Feb 2023 19:21:46 +0100, KLoSS
    <n...@a...com.pl> wrote:
    > A jak chcesz wiedzieć dlaczego tak, to bez kartki się nie obejdzie.

    Serio nie zrozumiałeś kontekstu pytania?

    --
    Marek


  • 13. Data: 2023-02-27 08:51:16
    Temat: Re: Programowanie MCU - największa liczba
    Od: Dawid Rutkowski <d...@w...pl>

    niedziela, 26 lutego 2023 o 22:01:39 UTC+1 Marek napisał(a):
    > On Sun, 26 Feb 2023 19:21:46 +0100, KLoSS
    > <n...@a...com.pl> wrote:
    > > A jak chcesz wiedzieć dlaczego tak, to bez kartki się nie obejdzie.
    > Serio nie zrozumiałeś kontekstu pytania?

    Hmm, a odpowiedź ma być "tyle samo"?
    Czy jakaś nieskończoność?
    W sumie też nie wiem ile to będzie MAX_DOUBLE+1.
    Trzeba w IEEE-854 sprawdzić.

    Hmm, a czy w C można:
    double d=9;
    d++;
    ?

    A nie skomentujecie pomysłu robienia sobie licznika z double?
    I założenia, że "zmiennoprzecinkowa"nkażdą wartość przyjmie?
    W Bajtku był taki cykl "programować może każdy".
    Może i prawda, ale "zaprogramować" już niekoniecznie...


  • 14. Data: 2023-02-27 09:55:07
    Temat: Re: Programowanie MCU - największa liczba
    Od: Marek <f...@f...com>

    On Sun, 26 Feb 2023 23:51:16 -0800 (PST), Dawid Rutkowski
    <d...@w...pl> wrote:
    > W sumie też nie wiem ile to będzie MAX_DOUBLE+1.

    Ale ja nie wybrałem MAX_DOUBLE do operacji sumy, zwróć uwagę.

    --
    Marek


  • 15. Data: 2023-02-27 10:28:16
    Temat: Re: Programowanie MCU - największa liczba
    Od: Dawid Rutkowski <d...@w...pl>

    poniedziałek, 27 lutego 2023 o 09:55:11 UTC+1 Marek napisał(a):
    > On Sun, 26 Feb 2023 23:51:16 -0800 (PST), Dawid Rutkowski
    > <d...@w...pl> wrote:
    > > W sumie też nie wiem ile to będzie MAX_DOUBLE+1.
    > Ale ja nie wybrałem MAX_DOUBLE do operacji sumy, zwróć uwagę.

    No racja, to MAX_DOUBLE czy też DBL_MAX to jest minimum 1.79769e+308


  • 16. Data: 2023-02-27 12:48:06
    Temat: Re: Programowanie MCU - największa liczba
    Od: Adam Górski <gorskiamalpawpkropkapl@xx>

    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?
    >

    Problemem jest , że double jest zmiennoprzecinkowe i jak każdy typ
    posiada swoją rozdzielczość.

    W przypadku a=a+Byle_co; w pewnym momencie osiągnie wartość stacjonarną
    i nie będzie się już zwiększać bo Byle_Co będzie poniżej błędu
    pojedynczego bitu dla formatu double ( no chyba że się przekręci ).

    Taki przykład:

    Czy double i =
    1000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    00000000.0
    da się zwiększać o
    0,00000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000001
    ?
    Nie.
    Z tego samego powodu z którego int64_t nie da się zwiększać o 0,1.

    Jeżeli chcesz żeby to działało to np :

    int64_t a = a + Byle_co; gdzie Byle_co >= 1 żeby miało sens.

    double b = (double) a * CONST_VALUE;

    Poza tym używanie double w przerwaniu to niekoniecznie dobry pomysł ,
    ale to już inna historia.

    Jeżeli mijam się z prawdą lub jak to się kiedyś mówiło - kłamię , proszę
    o korektę.

    Pozdrawiam

    Adam Górski


  • 17. Data: 2023-02-27 16:18:51
    Temat: Re: Programowanie MCU - największa liczba
    Od: "J.F" <j...@p...onet.pl>

    On Sun, 26 Feb 2023 14:58:50 +0100, Marek wrote:
    > 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.

    Moze nie wiedziec, ale zadeklarował double a.
    A przynajmniej tak pisze.

    A zmienna double nie moze miec większej wartosci, nie da sie.

    J.


  • 18. Data: 2023-02-27 16:23:44
    Temat: Re: Programowanie MCU - największa liczba
    Od: "J.F" <j...@p...onet.pl>

    On Mon, 27 Feb 2023 12:48:06 +0100, Adam Górski wrote:
    > 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?
    >>
    >
    > Problemem jest , że double jest zmiennoprzecinkowe i jak każdy typ
    > posiada swoją rozdzielczość.
    >
    > W przypadku a=a+Byle_co; w pewnym momencie osiągnie wartość stacjonarną
    > i nie będzie się już zwiększać bo Byle_Co będzie poniżej błędu
    > pojedynczego bitu dla formatu double ( no chyba że się przekręci ).


    Sugerujesz ze "program idzie w maliny" oznacza, tzn jest skutkiem
    tego, ze przestala sie zmienna zwiekszac?
    Moze i tak.

    Zanim sie to osiągnie, to bedzie jeszcze etap, ze zwiększa sie o nieco
    inną wartosc, bo jest to Byle_co zaokrąglane do aktualnej
    rodzielczosci.

    Ale tak czy inaczej to nastąpi po bardzo wielu dodawaniach, kolega by
    chyba nie doczekal.

    J.


  • 19. Data: 2023-02-27 17:48:44
    Temat: Re: Programowanie MCU - największa liczba
    Od: Adam Górski <gorskiamalpawpkropkapl@xx>

    W dniu 27.02.2023 o 16:23, J.F pisze:
    > On Mon, 27 Feb 2023 12:48:06 +0100, Adam Górski wrote:
    >> 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?
    >>>
    >>
    >> Problemem jest , że double jest zmiennoprzecinkowe i jak każdy typ
    >> posiada swoją rozdzielczość.
    >>
    >> W przypadku a=a+Byle_co; w pewnym momencie osiągnie wartość stacjonarną
    >> i nie będzie się już zwiększać bo Byle_Co będzie poniżej błędu
    >> pojedynczego bitu dla formatu double ( no chyba że się przekręci ).
    >
    >
    > Sugerujesz ze "program idzie w maliny" oznacza, tzn jest skutkiem
    > tego, ze przestala sie zmienna zwiekszac?
    > Moze i tak.
    >
    > Zanim sie to osiągnie, to bedzie jeszcze etap, ze zwiększa sie o nieco
    > inną wartosc, bo jest to Byle_co zaokrąglane do aktualnej
    > rodzielczosci.
    >
    > Ale tak czy inaczej to nastąpi po bardzo wielu dodawaniach, kolega by
    > chyba nie doczekal.
    >
    > J.
    Nie mogę sobie tego inaczej wyobrazić skoro po ograniczeniu do jakiegoś
    poziomu - działa.

    Chętnie usłyszałbym inny powód.

    Pozdrawiam

    Adam Górski


  • 20. Data: 2023-02-27 19:08:52
    Temat: Re: Programowanie MCU - największa liczba
    Od: "J.F" <j...@p...onet.pl>

    On Mon, 27 Feb 2023 17:48:44 +0100, Adam Górski wrote:

    > W dniu 27.02.2023 o 16:23, J.F pisze:
    >> On Mon, 27 Feb 2023 12:48:06 +0100, Adam Górski wrote:
    >>> 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?
    >>>>
    >>>
    >>> Problemem jest , że double jest zmiennoprzecinkowe i jak każdy typ
    >>> posiada swoją rozdzielczość.
    >>>
    >>> W przypadku a=a+Byle_co; w pewnym momencie osiągnie wartość stacjonarną
    >>> i nie będzie się już zwiększać bo Byle_Co będzie poniżej błędu
    >>> pojedynczego bitu dla formatu double ( no chyba że się przekręci ).
    >>
    >>
    >> Sugerujesz ze "program idzie w maliny" oznacza, tzn jest skutkiem
    >> tego, ze przestala sie zmienna zwiekszac?
    >> Moze i tak.
    >>
    >> Zanim sie to osiągnie, to bedzie jeszcze etap, ze zwiększa sie o nieco
    >> inną wartosc, bo jest to Byle_co zaokrąglane do aktualnej
    >> rodzielczosci.
    >>
    >> Ale tak czy inaczej to nastąpi po bardzo wielu dodawaniach, kolega by
    >> chyba nie doczekal.
    >>
    > Nie mogę sobie tego inaczej wyobrazić skoro po ograniczeniu do jakiegoś
    > poziomu - działa.

    Werjsa druga - osiaga wartosc maksymalną, jakis wjątek sie generuje
    i nie wiadomo co program wtedy zrobi ..

    J.

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: