Хранение 600 значений unsigned int в массиве и поиск минимальных и максимальных значений

Я считываю значения последовательных данных ASCII с датчика и сохраняю их в целочисленной переменной без знака. Значения находятся в диапазоне от ~ 45000 до 50000. Мне нужно сохранить 600 значений, а затем найти минимум и максимум. после достижения 600 значений самое старое значение заменяется новым. Требуемый размер массива составляет 600 байт, что составляет примерно 1200 Байт от размера хранилища. Я использую Atmega 2560. Я хотел бы знать, можно ли хранить все 600 значений в SRAM или мне нужно использовать память EEPROM?

, 👍-1

Обсуждение

ATmega2560 имеет 8kB SRAM. Так что да. возможный. У вас есть вопрос, на который нельзя ответить одним словом?, @chrisl

Если вам нужны только минимум и максимум, вы можете вычислить их на лету и даже не хранить ни одного из значений. Добавьте счетчик, чтобы вы знали, когда вы получили 600 значений. Просто мысль., @Gerben

@gerban @ chrisl После достижения 600 значений первое сохраненное значение удаляется и все 599 значений сдвигаются влево, добавляется новое значение(LIFO). Это непрерывный процесс, из каждых 600 значений нужно узнать максимальное и минимальное значения. Это мое требование., @srikanth

@Gerben Говорит, что отброшенное значение является минимальным значением, а новое значение не ниже этого значения-текущий минимум необходимо пересчитать заново. Однако можно было бы сохранить два самых низких/самых высоких значения., @Dave Newton


1 ответ


1

Atmega 2560 имеет 8 КБ статической оперативной памяти, более чем достаточно для вашего 1200-байтового массива.

Чтение и особенно запись EEPROM очень медленные, а EEPROM имеет довольно ограниченное количество циклов записи, поэтому он не является хорошим кандидатом для активного использования, а скорее для хранения данных, которые меняются нечасто и должны выдерживать отключение питания. Как правило, это будут системные настройки или данные, которые необходимо сохранить, чтобы система могла возобновить работу при следующем включении питания с того места, где она остановилась при отключении питания. Эта последняя функция требует, чтобы система хранила достаточно энергии (конденсатор или крошечную батарею), чтобы она работала достаточно долго, чтобы почувствовать сбой основного источника питания, и все еще имела достаточно времени для записи в EEPROM.

,