реклама на сайте
подробности

 
 
> генератор с дробным коэфициентом, на ATtiny2313
sKWO
сообщение Jul 26 2007, 12:07
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Добрый день всем!
Возникла необходимость создания генератора прямоугольных импульсов на микроконтроллере ATtiny2313 на частоту от 307 до 320 килогерц. Кварц на 16 мегагерц.
Может кто знает быстрый алгоритм создания дробного коэфициента генератора?! help.gif
Мой в обработчике прерывания не успевает! А на асме пока не охота писать.
Пример програмной реализации прикрепляю....
Прикрепленные файлы
Прикрепленный файл  interrupt.zip ( 35.64 килобайт ) Кол-во скачиваний: 96
 


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_artem_
сообщение Jul 26 2007, 12:48
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



по листингу смотрели сколько регистров в стек кладет ?
Если ИАР ипользуете м то здесь добрые люди подсказали использовать __raw в перед названием функции прерывания - стек не будет использоваться . Второе выделите регистры под переменные - будет быстрее . Можете индивидуально назначать их.
Затем можете поднять кварц то 20 МГц некоторые делают до 24 МГц на 2313 .

Удачи .


i eto posmotrite :
http://www.myplace.nu/avr/minidds/index.htm


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
sKWO
сообщение Jul 28 2007, 16:46
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(_artem_ @ Jul 26 2007, 15:48) *
по листингу смотрели сколько регистров в стек кладет ?
Если ИАР ипользуете м то здесь добрые люди подсказали использовать __raw в перед названием функции прерывания - стек не будет использоваться . Второе выделите регистры под переменные - будет быстрее . Можете индивидуально назначать их.
Затем можете поднять кварц то 20 МГц некоторые делают до 24 МГц на 2313 .

Удачи .
i eto posmotrite :
http://www.myplace.nu/avr/minidds/index.htm

Спасибо всем!
Артём, посмотрел ссылочку и понял -- жаль раньше ёё не видел, класс.
Я плату развёл и спаял и от своего метода пока постараюсь не отказоваться.
С формированием частоты через порт ... борьба с "нопами" и только ассемблер , чуть накладно. А использовать
ком порт для управления генератором наверное сильно круто особенно в моём положении. Я делаю управление с
кнопок, значения на ЖКИ. Возможно попытаюсь подхватить идею Дженсена и переделать без ком порта.
Помогли написать программу в кодэ визионе а я подправил под ИАР. Можна написать и оптимальнее, но
я там написал для наглядности, правда на ассемблерных вставках.
Чуточку изменил режим работы таймера1 Fast PWM top=OCR1A.
OCR1A -- значение периода частоты по которому работает алгоритм --- количество циклов в
обработчике прерывания возросло !
Выход --- OC1B output: Non-Inv -- полпериода выходной частоты. Правда запись в регистр сравнения OC1B
пока не написал но это аналогично.
кому интересно...прикрепляю
Извините, но у меня вопрос конечно касающийся с тонкостями работы в ИАРе и несовсем по теме:
в кодэ визионе есть переменная величина типа бит в ИАРе нигде не встречал. Неужели нужно создавать битовое поле
для битовых переменных? если да то через структуру или дефайн (так на форуме ПРОТОСС советует)?
и просьба может кто поможет с простыми функциями преобразования шестнацеричного числа в
десятичное и наоборот
Заранее благодарен!!
Прикрепленные файлы
Прикрепленный файл  genkospas.zip ( 65.78 килобайт ) Кол-во скачиваний: 87
 


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016