А откуда этот массив взялся в ОЗУ? Сам появился? :-) DMA несколько
усложняет дело, но задача не становится нерешаемой. Хотя вопрос
задан про AVR, у которого DMA нет :-) Но не буду занудничать, а по
существу: Если массив принимается извне через периферию (SPI/UART/ADC) и используется DMA, то можно:
- настроить адекватные временные интервалы (таймер). интервал выбирается исходя из скорости поступления данных и количеством (N) обрабатываемых байт(слов) за данный интервал.
- в обработчике прерывания таймера проверяем кол-во пришедших новых байт(слов) (с момента предыдущего вызова обработчика) и выполняется поиск максимума для новой порции данных.
- по окончании приема обрабатываем остаток данных.
Фсе. Максимум найден. Время поиска максимума для всего массива сократилось до времени поиска максимума для N байт(слов) - от момента окончания приема данных, ессно.
На STM32 подобный алгоритм реализуется достаточно легко.