Пост N: 5
Зарегистрирован: 02.08.08
Откуда: Украина, г.Винница
Рейтинг:
0
Отправлено: 14.10.10 20:12. Заголовок: Генератор.
Поставлена задача изготовить, генератор на несколько фиксированных частот, (10кГц, 3.2кГц, 1.6кГц, 500Гц, 50Гц), с возможностью подстройки относительно основной частоты + или – 10%. Дискретность перестройки на диапазонах 10кГц -25Гц, 3.2кГц, 1.6кГц, 500Гц - 10Гц, 50Гц - 1Гц. Первоначально казалось проблем не будет, но проверил программу в «железе» на частоте 10кГц перестраивается с шагом 70Гц. Частота кварцевого генератора 8,86МГц. Что можно сделать в этом случаи? ;=============================================================== ; Генератор ;================================================================ movlw .127 movwf Temp ;------------------------------------ ; Опрос состояния кнопок +,- ;------------------------------------
OUT btfss PortA,1 incf Temp,F btfss PortA,1 goto $-1
Отправлено: 14.10.10 20:59. Заголовок: Мне кажется проблема..
Мне кажется проблема в частоте задающего генератора (или кварца), это жесткое условие? Заданные частоты кратны 1мкс. Очень удобно было бы сделать на 4МГЦ. А так выходит, очень не точно и округленно, если привязываться к такту. 0,451.....мкC Получается, заведомо вводится большая ошибка округления в такт контроллера и формирования из него выходной частоты. Например, программа паузы около 4,51.....мкс + формирование импульса, очень тяжело попасть на заданную частоту + шаг. Общий принцип, который я обычно использую. Фиксированный минимальный шаг, кратный выходной частоте, можно формировать с помощью таймера или подпрограммы. Внутри этого Шага , или нескольких Шагов, опрашивать кнопки и изменять выходную частоту.
Отправлено: 14.10.10 22:11. Заголовок: Если минимальный про..
Если минимальный программный шаг 25мкС. Можно подобрать кратный, другой, побольше. По расписывайте на бумаге И стройте из него все как из кирпичиков. Шаг удобно формировать таймером и считать их количество, когда сформировать импульс, когда паузу. Например 1,6КГц = 25шагов 3,2КГЦ = 50 шагов 10КГц = 4шага 1Гц = 40000 шагов 50Гц=2000000 шагов Т.е. оперировать не тактом, а этим шагом. 50Гц(=2000000 шагов) -/+ 1Гц( = 40000 шагов) - Ну и опрашивать кнопку 20мс, где то 800 шагов
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет