Электроника - моё второстепенное увлечение, и иногда я уделяю ему немного времени

Основное увлечение - программирование, и поэтому в электронике меня больше всего привлекают микроконтроллеры. До этого я работал только с готовыми устройствами на микроконтроллерах - сотовыми телефонами Motorola. В них микроконтроллер Neptune LTE на ядре ARM7 Big Endian. Опыт программирования под них у меня достаточный, теперь решил попробовать свои силы в проектировании устройств на микроконтроллерах.
В качестве микроконтроллера для начала мой одногруппник мне посоветовал AVR, немного рассказал про их базовые возможности, а в начале сентября даст мне много информации, так что буду учиться.
В качестве примера для первого проекта я выбрал электронный регулятор угла опережения зажигания для комбинированного (бензин/газ) карбюраторного двигателя внутреннего сгорания. Принцип действия в том, что импульсы зажигания снимаются с датчика, жёстко связанного с коленвалом (или валом ГРМ, или валом распределителя зажигания, непринципиально), а характеристика "угол от частоты вращения" формируется с помощью микроконтроллера сдвигом импульсов. Для этого нужно измерять время от некоторого условного нуля отсчёта (момента включения зажигания?) до каждого фронта (или спада) сигнала датчика в тактах генератора (f=400 кГц) и выдавать фронт/спад выходного импульса при тактах этого генератора с известным номером.
Для изучения поведения двигателя на бензине и на газе требуется, чтобы характеристику "фи от эф" можно было менять без остановки двигателя, давая команды с ноутбука. Сможет ли AVR воспринимать тактовые импульсы, отдавать выходные импульсы и одновременно программно обрабатывать USB? Какая тактовая частота для этого потребуется? (На каждый входной импульс от датчика зажигания - несколько арифметических операций, два чтения GPIO и одно получение данных из таблицы, на каждый тактовый импульс - несколько арифметических операций, несколько сравнений, не более одной выдачи на GPIO).
Смогу ли я прошивать микроконтроллер через его встроенный бутлоадер, пользуясь интерфейсом UART?
P.S. 1) Под "несколькими арифметическими операциями" я понимаю небольшое, каждый раз постоянное, число операций типа сложения-вычитания.
2) Если кого-то смущает "GPIO", это непосредственно управляемые/считываемые выводы микроконтроллера. Если они обычно называются по-другому, пожалуйста, скажите как.
Сообщение отредактировал motoprogger - Aug 19 2008, 15:38