Цитата(Владимир_КПИ @ May 12 2008, 18:42)

Есть уточняющие вопросы:
- скользящее среднее считать для моей схемы? При 100% мощности? Т.е. мерять "идеальную" синусоиду?
- с какой частотой?
- какое количество отсчётов?
- вы писали, что раз в секунду нужно писать скользящее среднее в EEPROM. Время равное 1 секунде можно считать по количеству внешних прерываний INT0 (периодов сетевого напряжения) или нужно использовать таймер, например?
Считайте это пока просто абстрактной задачкой, к Вашим синусойдам это
пока отношения не имеет. Самое главное для Вас сейчас научиться планировать задачку,
и в частности сделать так чтобы несколько независимых функций работали "одновременно".
Иначе у Вас получается что функции которые должны работать в реалтайме (чтение показаний АЦП,
ловля перехода через 0, итд) постоянно прерываются функциями которые делаются
очень неспешно(запись в EEPROM, рассчет результатов в флоат, итд)
то есть я Вам предлагаю написать относительно простую задачку:
- опрос АЦП с какой-то частотой (лучше кстати сразу по нескольким каналам)
- рассчет среднего по каждому каналу(ну это типа просто для тренировки и понимания как нужно
хранить и делать предварительные вычисления побыстрому когда данных много)
- запись посcчитанных значений в EEPROM с некоторой переодичностью
вот когда Вы напишите этот учебный пример, мы его раскритикуем и после этого Вы
напишите правильно...

у Вас просто будет готовый каркас к которому Вы уже просто будете прикручивать свою обработку.
Цитата
- как организовать хранение последних N отсчётов? Т.е. этот самый кольцевой буфер. Понятно, что значения будут храниться где-то в ROM. Но где именно? В массиве, в памяти?
кольцевой. не в ROM а в RAM. в массиве.
Ну а для уточнения задачки, ну пусть будет 2 делителя напряжения с переменными резисторами
в одном из плечей, частоту АЦП выберите сами, по максимуму но с запасом на обработку.