Суть задания:
Микроконтроллер - mega8 TQFP
питание - 3,3-5V
Внешний кварц (Частота) - 8 МГц
Связь - I2C аппаратный (в режиме slave)
Опорное напряжение АЦП - внешнее на ногу aref
Сброс настроек на значение по умолчанию - кнопкой
Алгоритм программы:
Выполнить АЦП преобразование одного сигнала (разрядность 10бит), усреднить, далее в зависимости от режима работы: 1й режим - это при запросе от master МК отправить значение АЦП по i2c. 2й режим - выполнить БПФ (быстрое преобразование Фурье) и при запросе от master МК отправить спектр сигнала по i2c.
МК должен иметь возможность настраиваться по i2c от master.
Параметры настраиваемые по i2c master МК-ом:
1) Адрес МК (mega8 slave) в сети i2c. по умолчанию адрес 32
2) Режим работы 1 или 2. По умолчанию 1
3) Количество выборок при усреднении. По умолчанию 10
4) колличество гармоник в спектре: 32, 64, 128. По умолчанию 32. (Спектр симметричный, поэтому, например, при выборе количества гармоник 32 нужно отправлять только положительные 16 гармоник (т.е. шаг спектра при частоте от 0 до 400Гц равен 25Гц) и т.д. для 64 и 128)
5) диапазон частот сигнала, раскладываемого в спектр. По умолчанию от 0 до 400 Гц.
6) скорость i2c, по умолчанию 100 кбит
P/S
Язык программирования не важен: C или Assembler. Если хватит памяти для БПФ на С, то пишите на С если нет, то БПФ можно на assembler.
Если необходимы временные задержки то в программе прошу не использовать функцию delay или аналог а делать на таймерах, т.к. необходима максимальная надежность, стабильность и скорость работы программы.
В результате мне необходимы исходники программы с подробными комментариями, файл прошивки, значение fuse бит, модель в протеус.