-
- ну и где же он? (если конечно не разворачивать цикл в линию) - Adept(02.02.2021 18:09)
- Сразу говорю: вариант так себе, но почему нет!? Tpoeшник(1018 знак., 02.02.2021 18:35)
- А почему АЦП? У таймера тоже есть сравнение. - m9rs(03.02.2021 09:08)
- Да, и я с ним попробовал. Забавная штука. Но сравнение там только
на равенство! - Tpoeшник(03.02.2021 09:27)
- А если использовать режим PWM? - m9rs(03.02.2021 12:13)
- Все что с таймерами только "равно" ловит я так понял. - Tpoeшник(03.02.2021 12:15)
- таймер в режиме PWM настроен на вывод в ножку, на ней же
прерывание, таймер не тактируется (остановлен), в сам таймер
грузите свой байт а в регистр сравнения максимальное найденное
значение, которое по прерыванию на ножке перезаписывается. - m9rs(03.02.2021 20:03)
- неа. если в таймер загрузить число 100. а в регистре сравнения 50 - прерывания/реакции не будет - Tpoeшник(03.02.2021 20:17)
- таймер в режиме PWM настроен на вывод в ножку, на ней же
прерывание, таймер не тактируется (остановлен), в сам таймер
грузите свой байт а в регистр сравнения максимальное найденное
значение, которое по прерыванию на ножке перезаписывается. - m9rs(03.02.2021 20:03)
- Все что с таймерами только "равно" ловит я так понял. - Tpoeшник(03.02.2021 12:15)
- А если использовать режим PWM? - m9rs(03.02.2021 12:13)
- Да, и я с ним попробовал. Забавная штука. Но сравнение там только
на равенство! - Tpoeшник(03.02.2021 09:27)
- Если читерствовать с новыми ATMega то тогда лучше обратить внимание на блок CCL. - Boвa(02.02.2021 23:41)
- чего мелочиться, бери уже ПЛИСину скоростную, заливай авр ядро,
допиливай блок сравнения, а там и до параллельных процессов
недалеко и конвейера... после реализации, глядишь попадешь в группу
разрабов эльбруса или байкала. все возможно. - klown1(02.02.2021 20:13)
- Я написал что-то не то!? Это глупость? Это медленно? Это не будет
работать? - Tpoeшник(02.02.2021 20:15)
- не твой путь ? klown1(484 знак., 03.02.2021 13:11, ссылка)
- Спасибо. Тема с fpga очень интересная. Но это нужно применительно к чему то заниматься. Всегда цифровая логика нравилась. Tpoeшник(185 знак., 03.02.2021 13:25)
- ну почему, очень даже креативненько. Может и работать будет. Но раз
мысль пошла в область аппаратных вычислителей, то плисина с авр
ядром будет в самый раз (если так важно сохранить авр ядро). Речь
же о самой быстрой реализации на условно бесконечном массиве
(потоке данных). Аппаратная реализация вероятно самая быстрая
получится. А так-то молодец, продолжай рыть и не принимай близко к
сердцу критику или подколы.
Это от безделия- klown1(02.02.2021 20:47)
- не твой путь ? klown1(484 знак., 03.02.2021 13:11, ссылка)
- Я написал что-то не то!? Это глупость? Это медленно? Это не будет
работать? - Tpoeшник(02.02.2021 20:15)
- Есть ЦАП и АЦП? Г-но вопрос! Лепим снаружи аналоговый пиковый
детектор, прогоняем через него сигнал в аналоге и находим наш
максимум. - SciFi(02.02.2021 18:39)
- сэмплрейт ихсмеги 2MSPS для АЦПи 1MSPS для ЦАП, но сократить циклы
до 8 байт и тогда только на IO DAC/ADC сравняемся с самым быстрым
алгоритмическим решением, а ведь ещё надо эти данные счесть из
памяти, (ну чтобы вывести в ЦАП/АЦП) имхо, утопия какая-то) - Adept(02.02.2021 18:48)
- Да нет, вы не поняли! Я выгружаю данные в регистр процессора. Все.
По очереди. Больше ничего не делаю с данными. Но если прерывание -
обрабатываю значение которое больше текущего максимума. В ситуации
когда значений в массиве миллиард, я попаду в прерывание максимум
255 раз. Все остальные переборы по одному такту процессора
например. Ну или больше, плохо понимаю как в тактах оценить - Tpoeшник(02.02.2021 19:04)
- откуда выгружаете данные и с какого перепугу должно сработать
какое-то прерывание?? Если имеете ввиду регистры АЦП/ЦАП, то всё
равно аппаратно всё ограничено возможным сэмплрейтом. Adept(111 знак., 02.02.2021 19:13)
- АЦП используется не сами по себе а как блок внутри которого есть
цифровой компаратор. У этого компаратора есть свое прерывание ADC0
- Window Compare. Ну вот "идея" в том чтоб настроить блоки системы
так что из исследуемого массива я подаю байты в регистры WINHT,
аппаратно сравниваю с регистром RES и жду "ADC0 - Window Compare".
В самом прерывании обновляю текущим максимальным регистр RES Tpoeшник(83 знак., 02.02.2021 19:42)
- есть запись данных в IO регистр, есть чтение этих данных их памяти,
есть время обработки прперывания (вход/выход) = гораздо больше трёх
тактов на байт. В чём смысл (ну разве что поиграться с оригинальной
идеей :)) ??? - Adept(02.02.2021 23:02)
- Да черт с ней с идеей! Тут о деньгах поговаривали!? А когда речь
идет о деньгах то я страшный человек.. Tpoeшник(359 знак., 02.02.2021 23:20)
- Код получится примерно такой ... Те же 3 такта на байт при чтении
из внутренней РАМ. Boвa(84 знак., 03.02.2021 00:48)
- Почему 3? А разве st может так? Tpoeшник(37 знак., 06.02.2021 20:11)
- В варианте о котором вы говорите есть проблема с 0xff. Без проверки
на максимальное значение алгоритм принципиально обречен. - Tpoeшник(03.02.2021 02:07)
- Запись в регистр сравнения референсного значения - 16-битная (т.е.
медленная, в два приёма), и ещё возможно ошибаюсь, но мне кажется,
что вся периферия АЦП завязана на тактовую систему АЦП (по крайней
мере я бы так поступил наверное (было бы легче реализовать
аппаратуру). Так что вариант действительно "так себе", но за
пытливый умшаловливые ручки - респект :)) Adept(314 знак., 03.02.2021 09:59)- Почему? Я пишу младшее значение, а проц в этот момент пишет пару и младший и старший. Да и пусть. А вот что касается прерывания и его сдвига во времени относительно самого сравнения, то здесь как раз и вся красота. А и ничего страшного что прерывание запоздает, мне не важно. Главное получить факт что текущее больше чем в RES! Потом без спешки разбор, обновление RES и снова поиск. Если нужно то после прерывания с индексом -5 например можно начать:) - Tpoeшник(03.02.2021 12:20)
- Запись в регистр сравнения референсного значения - 16-битная (т.е.
медленная, в два приёма), и ещё возможно ошибаюсь, но мне кажется,
что вся периферия АЦП завязана на тактовую систему АЦП (по крайней
мере я бы так поступил наверное (было бы легче реализовать
аппаратуру). Так что вариант действительно "так себе", но за
- Код получится примерно такой ... Те же 3 такта на байт при чтении
из внутренней РАМ. Boвa(84 знак., 03.02.2021 00:48)
- Да черт с ней с идеей! Тут о деньгах поговаривали!? А когда речь
идет о деньгах то я страшный человек.. Tpoeшник(359 знак., 02.02.2021 23:20)
- Как только не извращаются, лишь бы на рассыпухе не собрать - lloyd(02.02.2021 20:03)
- есть запись данных в IO регистр, есть чтение этих данных их памяти,
есть время обработки прперывания (вход/выход) = гораздо больше трёх
тактов на байт. В чём смысл (ну разве что поиграться с оригинальной
идеей :)) ??? - Adept(02.02.2021 23:02)
- АЦП используется не сами по себе а как блок внутри которого есть
цифровой компаратор. У этого компаратора есть свое прерывание ADC0
- Window Compare. Ну вот "идея" в том чтоб настроить блоки системы
так что из исследуемого массива я подаю байты в регистры WINHT,
аппаратно сравниваю с регистром RES и жду "ADC0 - Window Compare".
В самом прерывании обновляю текущим максимальным регистр RES Tpoeшник(83 знак., 02.02.2021 19:42)
- откуда выгружаете данные и с какого перепугу должно сработать
какое-то прерывание?? Если имеете ввиду регистры АЦП/ЦАП, то всё
равно аппаратно всё ограничено возможным сэмплрейтом. Adept(111 знак., 02.02.2021 19:13)
- Да нет, вы не поняли! Я выгружаю данные в регистр процессора. Все.
По очереди. Больше ничего не делаю с данными. Но если прерывание -
обрабатываю значение которое больше текущего максимума. В ситуации
когда значений в массиве миллиард, я попаду в прерывание максимум
255 раз. Все остальные переборы по одному такту процессора
например. Ну или больше, плохо понимаю как в тактах оценить - Tpoeшник(02.02.2021 19:04)
- АЦП и ЦАП использую только для того чтоб воспользоваться цифровым компаратором. Я не знаю, может есть еще другая возможность сравнить два значения аппаратно в меге!? Я сильно рассчитывал на регистры сравнения из блоков таймера, но там только на равенство. Много всего интересного получилось кстати, но не по теме) - Tpoeшник(02.02.2021 18:44)
- сэмплрейт ихсмеги 2MSPS для АЦПи 1MSPS для ЦАП, но сократить циклы
до 8 байт и тогда только на IO DAC/ADC сравняемся с самым быстрым
алгоритмическим решением, а ведь ещё надо эти данные счесть из
памяти, (ну чтобы вывести в ЦАП/АЦП) имхо, утопия какая-то) - Adept(02.02.2021 18:48)
- А почему АЦП? У таймера тоже есть сравнение. - m9rs(03.02.2021 09:08)
- Сразу говорю: вариант так себе, но почему нет!? Tpoeшник(1018 знак., 02.02.2021 18:35)
- ну и где же он? (если конечно не разворачивать цикл в линию) - Adept(02.02.2021 18:09)