Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генератор шума на AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Nanobyte
Здравствуйте, коллеги.
Необходимо генерировать шумовой сигнал на одном из выводов МК. Как я понимаю, используя генератор псевдослучайных чисел, можно получить требуемый результат. Разрядность числа вполне устроит 16 бит. Поиск по форуму даёт реализации только на Си.
Вопрос: как это сделать, используя ассемблер? Может, кто нибудь из Вас уже делал такой ГПСЧ ?
Спасибо.
beer_warrior
Смотреть надо реализацию для писюков или дизассемблировать.
Как альтернативу могу предложить подвесить на АЦП стабилитрон (по-моему из диодов они самые шумные), получиться уже не псевдо, а по настоящему случайное число.
aaarrr
Цитата(Nanobyte @ Dec 4 2006, 20:14) *
Поиск по форуму даёт реализации только на Си.

Неужели это такая проблема - переписать кусочек из десятка строк на ассемблере? angry.gif
Nanobyte
Цитата(aaarrr @ Dec 4 2006, 21:51) *
Неужели это такая проблема - переписать кусочек из десятка строк на ассемблере? angry.gif

Да как-то не дружу я с Си. Все его чёрточки и тильдочки режут глаз (это, конечно, IMHO smile.gif ). А если серьёзно, то перевод из Си в ASM будет явно неоптимальным путём.
aaarrr
Почему? Восстанавливаем алгоритм -> реализуем на асм. Где ж тут "неоптимальность"? smile.gif
Nanobyte
Цитата(aaarrr @ Dec 4 2006, 22:06) *
Почему? Восстанавливаем алгоритм -> реализуем на асм. Где ж тут "неоптимальность"? smile.gif

Ключевое слово "Восстанавливаем".
antoker
Цитата(Nanobyte @ Dec 4 2006, 20:14) *
Здравствуйте, коллеги.
Необходимо генерировать шумовой сигнал на одном из выводов МК. Как я понимаю, используя генератор псевдослучайных чисел, можно получить требуемый результат. Разрядность числа вполне устроит 16 бит. Поиск по форуму даёт реализации только на Си.
Вопрос: как это сделать, используя ассемблер? Может, кто нибудь из Вас уже делал такой ГПСЧ ?
Спасибо.



А какой именно тип шума хотите получить, в смысле PDF какой у него должен быть? И в спектральном плане что надо, белый или нет? Или пофиг? По поводу реализации кода в uC asm подкидываю идею в плане генерации чисел, по методу фон Ньюмана-или-какевотам(самый простой):

1. берете seed, ну например 1111
2. sqrt(1111)
3. убираете две цифры в центре
4. получили random число
5. полученное число опять возводите в степень
6. опять убираете две цифры в центре и т.п.

Проблема с этим алгоритмом - комбинации повторяются довольно часто.

Можно усложнить задачу другим алгоритмом типа Mersenne twister/generalized feedback shift register и т.п, но выбирать тебе.
antoker
небольшая добавочка к моему предыдущем посту (пока курил, задумался wink.gif )
ньюмановский метод будет немножко сложно накалякать в асм ибо sqr(.) будет
много ресурсов занимать, а вот feedback shiftregister не особо, вот ТУТ довольно толково описано как его реализовать в математическом смысле. Будут проблемы в написании асм, обращайся.
Nanobyte
Цитата(antoker @ Dec 4 2006, 22:11) *
А какой именно тип шума хотите получить, в смысле PDF какой у него должен быть? И в спектральном плане что надо, белый или нет? Или пофиг?

Этот генератор будет использоваться для музыкального синтеза, поэтому полоса частот будет ограничена сверху 5 кГц, шум белый.
Я склоняюсь к к варианту генерации шума (числа) методом сдвиговых регистров с обратными связями.
Вариант, который предложил beer_warrior хорош, но требует дополнительных внешних элементов, тогда и AVR будет просто не нужен.
И ещё. Метод генерации ПСЧ очень похож на вычисление CRC, те-же сдвиги и суммирование. Я правильно понимаю ?
muravei
Цитата(aaarrr @ Dec 4 2006, 21:06) *
Почему? Восстанавливаем алгоритм

Чего там восстанавливать - берете "Искусство схемотехники" т.2 стр.94 и вперед!
Сдвигающий р-р 16 бит 4, 13 , 15 р-ды на m2 и на вход (в перенос) , ну и в начале, чтобы не ноль.
И весь алгоритм
aaarrr
Цитата(Nanobyte @ Dec 4 2006, 21:29) *
И ещё. Метод генерации ПСЧ очень похож на вычисление CRC, те-же сдвиги и суммирование. Я правильно понимаю ?

Правильно.

Цитата(muravei @ Dec 4 2006, 21:31) *
Чего там восстанавливать - берете "Искусство схемотехники" т.2 стр.94 и вперед!
Сдвигающий р-р 16 бит 4, 13 , 15 р-ды на m2 и на вход (в перенос) , ну и в начале, чтобы не ноль.
И весь алгоритм

Тут проблема из C на асм переложить - исходник ищут - а Вы книжки читать предлагаете wink.gif
Nanobyte
Цитата(muravei @ Dec 4 2006, 22:31) *
Чего там восстанавливать - берете "Искусство схемотехники" т.2 стр.94 и вперед!
Сдвигающий р-р 16 бит 4, 13 , 15 р-ды на m2 и на вход (в перенос) , ну и в начале, чтобы не ноль.
И весь алгоритм

Так алгоритм как таковой неясностей не имеет. Меня интересовала практическая реалазация на ASM AVR.

Цитата(antoker @ Dec 4 2006, 22:22) *
... а вот feedback shiftregister не особо, вот ТУТ довольно толково описано как его реализовать в математическом смысле. Будут проблемы в написании асм, обращайся.

Спасибо Вам, antoker за толковую ссылку и предложение помощи. Именно на ASM у меня сложностей, надеюсь, не будет. Буду писАть.
Oldring
Цитата(Nanobyte @ Dec 4 2006, 21:29) *
И ещё. Метод генерации ПСЧ очень похож на вычисление CRC, те-же сдвиги и суммирование. Я правильно понимаю ?


Генератор случайных чисел на LFSR - это абсолютно то же самое, нахождение остатка от деления многочленов. Только многочлен желательно выбрать примитивный, чтобы получить ПСП максимальной длины.

И. кстати, что такое "разрядность числа 16 бит на одном из выводов МК"?
Nanobyte
Цитата(Oldring @ Dec 4 2006, 23:03) *
И. кстати, что такое "разрядность числа 16 бит на одном из выводов МК"?

Прошу прощения, неясно выразился. Имелось в виду то, что для генерации шума используется 16-разрядное случайное число, побитно выводимое на пин МК при каждом вызове подпрограммы генерации.
Oldring
Цитата(antoker @ Dec 4 2006, 21:11) *
1. берете seed, ну например 1111
2. sqrt(1111)
3. убираете две цифры в центре
4. получили random число
5. полученное число опять возводите в степень
6. опять убираете две цифры в центре и т.п.


И разрядность числа возрастает бесконечно biggrin.gif
В любом случае, это наверняка очень плохой генератор псевдослучайных чисел, раз Кнут о нем не упоминает laugh.gif

Цитата(Nanobyte @ Dec 4 2006, 22:12) *
Цитата(Oldring @ Dec 4 2006, 23:03) *
И. кстати, что такое "разрядность числа 16 бит на одном из выводов МК"?

Прошу прощения, неясно выразился. Имелось в виду то, что для генерации шума используется 16-разрядное случайное число, побитно выводимое на пин МК при каждом вызове подпрограммы генерации.


Тогда используйте LFSR и не парьтесь. На каждый вызов подпрограммы (получение одного бита) - сдвиг на один бит и с вероятностью 1/2 XOR регистра с константой. Какой требуется минимальный период повторения последовательности?
Nanobyte
Цитата(Oldring @ Dec 4 2006, 23:16) *
Тогда используйте LFSR и не парьтесь. На каждый вызов подпрограммы (получение одного бита) - сдвиг на один бит и с вероятностью 1/2 XOR регистра с константой. Какой требуется минимальный период повторения последовательности?

1. А что означает "сдвиг на один бит и с вероятностью 1/2 XOR регистра "?
2. Период повторения для 16 бит будет 65535 (или 32767), что для звуковых целей вполне устроит.
Oldring
Это означает, что если значение очередного бита равно 1 - то XOR, а если 0 - то ничего больше не делать.

Интересует период повторения для одного бита. 2^16 или 2^20 ?
Nanobyte
Цитата(Oldring @ Dec 4 2006, 23:39) *
Интересует период повторения для одного бита. 2^16 или 2^20 ?

Прошу прощения, не понял. Что такое "период повторения для одного бита"? Требуемый период повторения побитно выводимого числа - 16 битов.
Oldring
Цитата
ldi r19, #87h
lsl r16
sbrc r18, 7
eor r16, r19
rol r17
rol r18


Очередной бит - в С. Или в r16.0, если больше нравится. Период повторения должен быть 2^24 - 1. Между вызовами нужно сохранять r16, r17, r18. Любой из этих регистров нужно проинициализировать чем-нибудь ненулевым.

Цитата(Nanobyte @ Dec 4 2006, 22:48) *
Прошу прощения, не понял. Что такое "период повторения для одного бита"? Требуемый период повторения побитно выводимого числа - 16 битов.


Это означает, что в любом случае Вы выводите не последовательность чисел, а последовательность битов. Так как она псевдослучайная - у нее есть период повторения.
Как генератор 16-битных псевдослучайных чисел этот генератор неидеален, но на слух вряд-ли кто-то что-то заметит.
Nanobyte
Цитата(Oldring @ Dec 4 2006, 23:58) *
Как генератор 16-битных псевдослучайных чисел этот генератор неидеален, но на слух вряд-ли кто-то что-то заметит.

Совершенно верно. Спасибо за пример реализации. Буду пробовать.
antoker
Цитата(Oldring @ Dec 4 2006, 22:16) *
И разрядность числа возрастает бесконечно biggrin.gif
В любом случае, это наверняка очень плохой генератор псевдослучайных чисел, раз Кнут о нем не упоминает laugh.gif


это каким это образом разрядность будет возрастать бесконечно, в AVR бесконечные регистры по длине? cool.gif естественно подразумевалось периодическое обнуление seed'a. Да и придираться особо не надо, этот метод был предложен в 1946 году и в плане обучения, так для расширения кругозора очень даже подходит wink.gif
singlskv
Цитата(Nanobyte @ Dec 4 2006, 22:28) *
2. Период повторения для 16 бит будет 65535 (или 32767), что для звуковых целей вполне устроит.

Нет, не будет (65536 или 32768)
У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.

Если у Вас есть реализация CRC16 на asm, то попробуйте просто подсовывать ей значения в
цикле например так:
1,2,3,4,.....
ну или так:
1,2,3,5,8,13,21,.....
ну или так:
выберите максимальное простое число xxxxx в диапазоне 0-65535
с него и начните подсовывать
xxxxx, 2*xxxxx/65536, 3*xxxxx/65536, ....

Типа, вариантов куча.
Просто нужно протестировать какой длинны последовательность Вы будете полчать
до зацикливания.
Удачи.
Nanobyte
Цитата(singlskv @ Dec 5 2006, 03:12) *
Нет, не будет (65536 или 32768)
У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.

Ну почему-же не будет? Кусочек кода, приведённый Oldring, я только что попробовал. Работает вроде-бы нормально (детально не проверял). Самое главное, уяснил принцип, теперь подберу коэффициенты для получения последовательности максимальной длины. Хотя, на слух, меня вполне устраивает шум, сгенерированный приведённым в примере кодом.
Ну, а что касается IAR, то его функции и библиотеки могут быть просто недоработаны, или написаны студентами в качестве курсовой работы (IMHO, конечно). Сталкивался с такими примерами для компонентов Delphi. Отбил весь лоб на поле с граблями, плюнул и написал необходимое сам.
singlskv
Цитата(Nanobyte @ Dec 5 2006, 02:28) *
Цитата(singlskv @ Dec 5 2006, 03:12) *
Нет, не будет (65536 или 32768)
У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.

Ну почему-же не будет? Кусочек кода, приведённый Oldring, я только что попробовал. Работает вроде-бы нормально (детально не проверял). Самое главное, уяснил принцип, теперь подберу коэффициенты для получения последовательности максимальной длины. Хотя, на слух, меня вполне устраивает шум, сгенерированный приведённым в примере кодом.
Ну, а что касается IAR, то его функции и библиотеки могут быть просто недоработаны, или написаны студентами в качестве курсовой работы (IMHO, конечно). Сталкивался с такими примерами для компонентов Delphi. Отбил весь лоб на поле с граблями, плюнул и написал необходимое сам.

Попробуйте выяснить какая у Вас получится длинна последовательности 16битнных значений.
ИМХО, в IAR должно получаться не меньше.
А то, что на слух Вас устраивает, так это всего лишь ознаает что Вы изначально завышали свои
требования к случайности сигнала.
Тот код который Вам привел Oldring, это ИМХО, некоторые вариации на темму CRC8 smile.gif
add
Нажмите для просмотра прикрепленного файлаСтранно что поиск ничего не дал?!
http://electronix.ru/forum/index.php?showtopic=22174&hl=

Вот непомню где нашел, прикладываю (asm) (правда псевдо RND- по понятным причинам), но переделывал под свою прогу... все ок. Была необходимость чтобы в начале работы нескольких контроллеров было RND значение, вот с этим парился..и ничего лучшего чем прописать в несколько контроллеров разные константы не нашел.
зы:внешние элементы не катят..разбежка внутренних генераторов тоже. код он и есть код
зы2:

clr r16
clr r17
sbrc r3,6 ;39
sbr r16,1<<0 ;XXXXXXXA
sbrs r3,2 ;35
sbr r17,1<<0 ;XXXXXXXB
eor r17,r16 ;Xor
ror r17 ;Put bit 0 in carry
;Bits Hill's bits
rol r1 ;7-0 8-1
rol r2 ;15-8 16-9
rol r3 ;23-16 and so on
rol r4 ;31-17

зы: можно сделать любую разрядность псевдо rnd.
Oldring
Цитата(Nanobyte @ Dec 5 2006, 02:28) *
Ну почему-же не будет? Кусочек кода, приведённый Oldring, я только что попробовал. Работает вроде-бы нормально (детально не проверял). Самое главное, уяснил принцип, теперь подберу коэффициенты для получения последовательности максимальной длины. Хотя, на слух, меня вполне устраивает шум, сгенерированный приведённым в примере кодом.


Если я не ошибся с переводом восьмеричных чисел в шестнадцатеричные wink.gif использованный мною полином дает последовательность максимальной длины 2^24-1. Можете это протестировать экспериментально.

Цитата(singlskv @ Dec 5 2006, 02:12) *
У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.


Смешно.

Настолько стало любопытно что даже посмотрел что IAR генерирует, хоть я и не брался за AVR уже давно. IAR3.2. Применен 32-битный линейный конгруэнтный генератор, при этом берутся старшие 16 бит. Реализация использует библиотечную функция умножения 32-битных беззнаковых чисел. То есть, медленно но стандартно. Скорее всего, Вас ввело в заблуждение то, что для такого генератора повторение 16-битного числа не означает повторение последовательности. Период повторения последовательности должен быть равен 2^32 чисел.
_Bill
Цитата(Nanobyte @ Dec 4 2006, 20:14) *
Здравствуйте, коллеги.
Необходимо генерировать шумовой сигнал на одном из выводов МК. Как я понимаю, используя генератор псевдослучайных чисел, можно получить требуемый результат. Разрядность числа вполне устроит 16 бит. Поиск по форуму даёт реализации только на Си.
Вопрос: как это сделать, используя ассемблер? Может, кто нибудь из Вас уже делал такой ГПСЧ ?
Спасибо.

Я сделал генератор ПСЧ на 31 бит так:
Код
    name    Rand
;
;
;    File:    rand.s90
;
;    08-Sep-05 BK    Initial edit
;    28-Sep-05 BK    Last  update
;
$fmacros.inc

    rseg    CODE    ; Code segment
;
;
    ENTRY$    Rand
    ldi    r30, LOW(_rand)     ; Point at random number
    ldi    r31, HIGH(_rand)    ;
    tst    r16            ; See the seed value
    breq    _1              ; Branch if zero

    clr    r17            ; Initialize the generator
    clr    r18            ; and return initial value
    clr    r19            ;
    rjmp    _2                 ;

_1:    ; Calculate new random number
    ld    r16, Z        ; Load the previous value into registers
    ldd    r17, Z+1        ;
    ldd    r18, Z+2        ;
    ldd    r19, Z+3        ;
    eor    r16, r19         ; Calculate feedback bit
    bst    r16, 6                 ;
    eor    r16, r19            ;
    lsl    r16             ; Shift the number left
    rol    r17            ;
    rol    r18            ;
    rol    r19            ;
    andi    r19, ~(1<<7)     ; Clear high (sign) bit
    bld    r16, 0        ; Insert feedback bit in the new value
_2:    st    Z,   r16          ; Save the number
    std    Z+1, r17        ;
    std    Z+2, r18        ;
    std    Z+3, r19        ;
    ret

    rseg    NEAR_Z    ; Data segment
    
_rand:        ; Random number
    ds    4    ;

    end
Oldring
Цитата(_Bill @ Dec 5 2006, 10:27) *
Я сделал генератор ПСЧ на 31 бит так:
Код
    eor    r16, r19        ; Calculate feedback bit
    bst    r16, 6                ;
    eor    r16, r19        ;


Хотите сказать, что полином 0x80000041 примитивный?
Кроме того, Вы используете из результата на каждой итерации 1 бит или 31?
Oldring
Цитата(singlskv @ Dec 5 2006, 02:55) *
А то, что на слух Вас устраивает, так это всего лишь ознаает что Вы изначально завышали свои
требования к случайности сигнала.
Тот код который Вам привел Oldring, это ИМХО, некоторые вариации на темму CRC8 smile.gif


Может быть Вы даже сможете самостоятельно придумать тест, который покажет неслучайность генерируемых 16-битных чисел? Только пожалуйста получайте 16-битное число побитово.

Вообще-то такой тест существует, и он довольно простой - но не думаю, что кто-либо способен выполнить его на слух biggrin.gif
_Bill
Цитата(Oldring @ Dec 5 2006, 11:01) *
Цитата(_Bill @ Dec 5 2006, 10:27) *

Я сделал генератор ПСЧ на 31 бит так:
Код
    eor    r16, r19    ; Calculate feedback bit
    bst    r16, 6            ;
    eor    r16, r19    ;


Хотите сказать, что полином 0x80000041 примитивный?
Кроме того, Вы используете из результата на каждой итерации 1 бит или 31?

Вообще-то, на каждой итерации я использую все 31 бит. Что касается полинома, то я взял номера отводов из таблицы, приведенной в статье "Генеатор белого шума на сдвигающем регистре с обратной связью" (Электроника, №11, 1976). Там имеется ссылка на: S.Golomb "Shift Register Sequences", 1967.
Для 31-разрядного регистра имеется несколько вариантов включения: x30 + x2, x30 + x5, x30 + x6, x30 + x12. Я выбрал варианте x30 + x6, поскольку не требуется дополнительных сдвигов для выравнивания разрядов.
Oldring
Цитата(_Bill @ Dec 5 2006, 11:35) *
Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.
Nanobyte
Цитата(add @ Dec 5 2006, 10:39) *

Мда-а, плохо быть бестолковым blush.gif . Я искал по форуму слово "псевдослуч, а просто "случайн" не догадался. Правда, поздно уже было. Попробую и этот RND. Спасибо.
_Bill
Цитата(Oldring @ Dec 5 2006, 11:42) *
Цитата(_Bill @ Dec 5 2006, 11:35) *

Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.

Согласен, надо брать 1 бит. И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.
Oldring
Цитата(_Bill @ Dec 5 2006, 12:33) *
И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?
_Bill
Цитата(Oldring @ Dec 5 2006, 12:35) *
Цитата(_Bill @ Dec 5 2006, 12:33) *

И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?

Для получения случайных чисел с равномерным распределением в диапазоне 0 .. 255. Или нет?
singlskv
Цитата(Oldring @ Dec 5 2006, 10:00) *
Если я не ошибся с переводом восьмеричных чисел в шестнадцатеричные wink.gif использованный мною полином дает последовательность максимальной длины 2^24-1. Можете это протестировать экспериментально.

Да, Вы не ошибаетесь. Проверил.
Действительно зацикливание происходит после 2^24-1 бит.
Цитата
Цитата(singlskv @ Dec 5 2006, 02:12) *

У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.


Смешно.

Настолько стало любопытно что даже посмотрел что IAR генерирует, хоть я и не брался за AVR уже давно. IAR3.2. Применен 32-битный линейный конгруэнтный генератор, при этом берутся старшие 16 бит. Реализация использует библиотечную функция умножения 32-битных беззнаковых чисел. То есть, медленно но стандартно. Скорее всего, Вас ввело в заблуждение то, что для такого генератора повторение 16-битного числа не означает повторение последовательности. Период повторения последовательности должен быть равен 2^32 чисел.

Проверял на IAR 4.20 .
При старте с 1 зацикливание происходило где-то около 2000 значений, при этом
если запустить дальше, то значение 1 повторяется с одинаковыми промежутками.
Может они там с округлениями чего-то начудили ?

А вот такой вопросик.
При Вашем варианте полинома распределение 16 битных значений получается равномерным ?
Ну например если взять 1000 значений подряд и посмотреть равномерно ли они
распределятся по всему диапазону ?
Пробовали ли Вы проводить такую статистику ?
Oldring
Цитата(_Bill @ Dec 5 2006, 14:14) *
Цитата(Oldring @ Dec 5 2006, 12:35) *

Цитата(_Bill @ Dec 5 2006, 12:33) *

И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?

Для получения случайных чисел с равномерным распределением в диапазоне 0 .. 255. Или нет?


Для этого часто достаточно взять 8 последовательных сгенерированных бит - если нет очень уж жестких требований к качеству случайных чисел.

Цитата(singlskv @ Dec 5 2006, 15:04) *
Проверял на IAR 4.20 .
При старте с 1 зацикливание происходило где-то около 2000 значений, при этом
если запустить дальше, то значение 1 повторяется с одинаковыми промежутками.
Может они там с округлениями чего-то начудили ?


Где-то у мня тоже валялся 4.2... Кажется, когда-то использовал... Лень сейчас искать. Можете прислать мне результат компиляции теста? Посмотрю под отладчиком.

Цитата
А вот такой вопросик.
При Вашем варианте полинома распределение 16 битных значений получается равномерным ?
Ну например если взять 1000 значений подряд и посмотреть равномерно ли они
распределятся по всему диапазону ?
Пробовали ли Вы проводить такую статистику ?


Я - нет. Обычно считается что LFSR выдает равномерное распределение. Неприятности могут начинаться со статистикой более высокого порядка и для некоторых разрядов чисел.
singlskv
Цитата(Oldring @ Dec 5 2006, 18:56) *
Где-то у мня тоже валялся 4.2... Кажется, когда-то использовал... Лень сейчас искать. Можете прислать мне результат компиляции теста? Посмотрю под отладчиком.

Э...Э...Э Виноват, исправлюсь ...
Нашел свои исходники по которым тестировал, ну и нашел в них ошибочку,
типа циферку не подправил blink.gif
Так что, прошу прощения у общественности, за дезинформацию...

у IAR с псевдослуайными числами все в порядке
Проверенно electronix.ru smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.