ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
347742
Blackbird_sunday (17.08.2012 16:02, просмотров: 107267)
Памажите люди добрыя ассемблерную вставку для atmega8 в кодевижн надо изобразить .. В общем щас решил сделать одну некоммерчексую девайсину . Конкретно хотел генератор сделать зч ДЛЯ СЕБЯ . Но столкнулся с проблемой . Сам генератор задумывался с прямым цифровым синтезом частоты чтоб генерил от 0 до килогерц так до 25-30 дальше и не надо . Сама реализация цифрового синтеза работает на ура но .. Нужна частота дискретизации в 200 кГц чтобы можно не рубленые кирпичи фильтровать а нечто больше напоминающее синус . А получаеться максимум 55 кГц ..при кварце в 14.xxx мГц (выдран из старой видеокарты ). Разгон до 16 а тем более 20 мГц задачу не решает . В общем этакое техзадание что нужно : Надо написать ассемблерную вставку в прерывание от 2ого таймера . Само прерывание вызываеться с частотой 200 кГц и с этим проблем нет но время его отработки должно быть мельче чем 5 мкС иначе нет смысла . Так вот что проделываеться по прерыванию - есть "накапливающий регистр" глобальной переменной . Щас у меня long но 3х байт выше крыши хватает - так вот верхние 10 бит 24 битного числа надо выдернуть . И их использовать как адресс массива из 1024 байт во флеши(синус там записан 8 битный) . По этому адерсу выдергиваем байт и (спасибо тем .. кто на 8ой атмеге порты придумывал) засылаем нижние 6 бит в порт C а верхние 2 бита шлем на ноги PD3 и PD4 . Дальше к "накапливающему регистру" прибавляем 3 байта фазы (из другой переменной long) и вылетаем из прерывания . И так 200 тыщ раз в секунду . Есссно надо как то параметры из переменных передавать в ассемблер . Судя по тому какие демки на трубе народ выкладывает - задача вполне себе возможная. Ессно не надо предлагать "я сделаю это за xxx$" .. Ребяты если можете помочь то поможите и будет вам большое спасибо .. а так мне проще будет все бросить нафиг - стока энтузиазму было ..