logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega32] Jak napisać funkcję losującą liczby 0-255 w C na ATmega32?

ralph19 04 Gru 2009 15:16 3135 4
REKLAMA
  • #1 7344208
    ralph19
    Poziom 10  
    Posty: 13
    Witam,

    Moje następujące pytanie - jak w języku C na mikrokontrolery napisać funkcję losującą liczbę z przedziału od 0 do 255?

    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 7344427
    mietekn
    Poziom 35  
    Posty: 1983
    Pomógł: 400
    Ocena: 161
    Wykorzystać wbudowaną funkcję pseudo generatora liczb losowych int rand(void).
  • REKLAMA
  • Pomocny post
    #3 7345100
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Generator można zaś "zrandomizować" odczytem z niepodłączonego przetwornika ADC lub odczytem nieużywanego adresu w pamięci RAM (to drugie lepiej sprawdzić czy aby na pewno jest losowe).

    4\/3!!
  • REKLAMA
  • Pomocny post
    #4 7345112
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    Przy czym trzeba najpierw zainicjowac generator liczb pseudolosowych jakims ziarnem (patrz funkcja srand). Problem w tym, ze ziarno samo w sobie tez powinno byc losowe, bo dla tego samego ziarna rand zwroci ten sam ciag liczb pseudolosowych. Czyli mamy problem jajka i kury - te procesory maja zbyt malo entropii, zeby uzyskac sensowne liczby pseudolosowe. Pozostaje wykorzystac np. szum termiczny wbudowanego czujnika temperatury (o ile jest), albo szum ADC. Jesli uklad ma jakies peryferia to tez mozna je wykorzystac jako zrodlo entropii. Wszystko zalezy od celu w jakim zamierzasz uzyc ten generator.
  • Pomocny post
    #5 7345352
    OldSkull
    Poziom 28  
    Posty: 1159
    Pomógł: 61
    Ocena: 184
    Wykonaj 8 pomiarów "wiszącego" ADC i ostatni bit traktuj jako zmienną losową - po prostu sklej z nich 1 bajt. Jakiś stan może sie próbować ustalić, ale ostatni bit pomiaru i tak będzie "szumić". Oprócz tego możesz do kodu programu wrzucić tablicę liczb pseudolosowych wygenerowanych na PC i taki pomair z ADC wykorzystywać jako swoiste ziarno.
REKLAMA