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

 
 
> генератор с дробным коэфициентом, на 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
=GM=
сообщение Jul 26 2007, 15:42
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(sKWO @ Jul 26 2007, 11:07) *
Возникла необходимость создания генератора прямоугольных импульсов на микроконтроллере ATtiny2313 на частоту от 307 до 320 килогерц. А на асме пока не охота писать

Идея вашего метода хороша, но на практике плохо реализуема, поскольку в регистре OCR1A будет число 25, то вы можете получить максимум 25 градаций между 600 и 640 кГц.

Вам artem дал хорошую ссылку, абсолютно ваш случай, даже ещё лучше. Дженсен тратит 9 тактов на выдачу одной выборки, а вы можете снизить до 6 тактов, даже не напрягаясь, но на асме.

Код
loop: add      r28,r24     ; 1
      adc      r29,r25     ; 1
      adc      r30,r26     ; 1
      out      portb,r30   ; 1 - bit 7 is а meandre output
      rjmp     loop        ; 2, so 6 cycles in total


Это даст 2666 кГц частоты выдачи выборок, или 4.3 выборки на период для требуемых 620 кГц.

Чуть-чуть напрягшись (опять же на асме!) можете снизить основной цикл до 5 тактов или 5.2 выборки на период для 620 кГц.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:58
Рейтинг@Mail.ru


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