Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

ШИМ, синусоида на Мега8?

Непрочитано 10.05.2011, 17:44  
KvitkaLavi
Прохожий
 
Регистрация: 09.05.2011
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KvitkaLavi на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Здравствуйте,
возможно весьма нубский вопрос, но не смогла найти разжеванный материал по COM битам для ШИМ в регистре TCCR.
У меня Fast PWM.
Точно также нужно настроить вывод синусоиды.. Какой режим для этого нужен: нормальный, не-инвертированный, инвертированный? И в чем разница между нормальным и неинвертированным?
Реклама:
KvitkaLavi вне форума  
Непрочитано 10.05.2011, 17:58  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от KvitkaLavi Посмотреть сообщение
И в чем разница между нормальным и неинвертированным?
Представьте инвертор на выходе - это инвертированный. Без - прямой.
От этого зависит коэффицент заполнения в зависимости от значения OCR регистра. При прямом ШИМ с увеличением значения OCR длительность высокого уровня в периоде растет. При инвертирующем ШИМ - падает. Для синуса в общем то все равно. Просто фаза перевернется на 180 градусов.
kison вне форума  
Непрочитано 10.05.2011, 18:01  
KvitkaLavi
Прохожий
 
Регистрация: 09.05.2011
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KvitkaLavi на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

kison,
тогда почему три режима? Если нормальный и неивертированный совпадают? или все таки не совпадают?
KvitkaLavi вне форума  
Непрочитано 10.05.2011, 19:33  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от KvitkaLavi Посмотреть сообщение
kison,
тогда почему три режима? Если нормальный и неивертированный совпадают? или все таки не совпадают?
Первый режим - когда ШИМ вообще влияния на вывод не оказывает.
Второй - меандр генерирует. ( там есть доп. условия работы)
Третий и четвертый - ШИМ неинвертирующий и инвертирующий.
kison вне форума  
Сказали "Спасибо" kison
KvitkaLavi (10.05.2011)
Непрочитано 11.05.2011, 19:26  
KvitkaLavi
Прохожий
 
Регистрация: 09.05.2011
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KvitkaLavi на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Спасибо. С этим теперь понятно.
А еще такой вопрос - как задать/рассчитать период полученной синусоиды?
У меня только одно прерывание - для ШИМ, считывание одного значения из таблицы происходит через заданное кол-во тактов. То мой период будет в тактах как произведение кол-ва точек из таблицы на кол-во тактов ожидания? А такт - это 1/частота подключенного кварца?
Или есть другие более адекватные способы подсчитать?)

Если непонятно объяснила, то прилагаю код..
Вложения:
Тип файла: txt raboch.txt (1.7 Кб, 76 просмотров)
KvitkaLavi вне форума  
Непрочитано 12.05.2011, 02:08  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от KvitkaLavi Посмотреть сообщение
Если непонятно объяснила, то прилагаю код..
Код:
T0_OVF:
ldi r18, 0x00
ldi ZL, low(sin*2) ;считывание значения из массива
ldi ZH, high(sin*2)

ldi tempz1,0
add ZL,tempz          ;прибавление
adc ZH,tempz1         ;внутр. адреса

LPM 

mov tempz1,R0         ;копирование
out ICR1L,tempz1      
out ICR1H, r18
inc tempz
ldi temp, 0xD5
out TCNT0, temp
reti
Зачем Вы отсчеты грузите в ICR? Логично было бы предположить что надо в OCR.
Дальше - таблица отсчетов у Вас на 80 значений. А читаете Вы со смещением расположенном в R19 (tempz) - причем после каждого чтения идет его инкремент. Представьте что в нем 79 содержится - увеличив на 1 Вы выйдете за пределы таблицы и вместо осмысленных отсчетов получите случайные значения. Но будете продолжать и дальше читать ерунду и выводить ее через ШИМ - пока tempz не переполнится и соответственно не обнулится. Красоты сигналу это не добавит однозначно.
Удобно делать размер таблицы кратным 2^N - например 32 значения, 64, 128, 256. Но можно и 80 оставить - только проверяйте tempz на выход за предел таблицы и если вышел то грузите туда 0.
Ну там и еще можно посокращать код. Например выводить можно прямо из R0, не копируя предварительно считанный из таблицы отсчет в tempz1.
Когда исправите то период рассчитать будет просто.
Сообщение от KvitkaLavi Посмотреть сообщение
То мой период будет в тактах как произведение кол-ва точек из таблицы на кол-во тактов ожидания?
Но в этом идете в правильном направлении.
kison вне форума  
Непрочитано 12.05.2011, 03:21  
KvitkaLavi
Прохожий
 
Регистрация: 09.05.2011
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KvitkaLavi на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

kison,
т.е. как я поняла, нужно проверять, что tempz всегда меньше кол-ва точек в моем массиве и при достижении последней обнулять адрес? Тогда почему пока что всё работает и синусоида имеется?..
А насчет ICR/OCR меня сбило в даташите, что есть режим, когда OCR - как выход, а ICR - для счета/занесения значения.. и подумалось мне, что OCR либо счет, либо выход. Пока сделала задачу, уже поняла, что там совсем другой принцип, не то что в голове накрутила...
Спасибо большое.
KvitkaLavi вне форума  
Непрочитано 12.05.2011, 04:52  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от KvitkaLavi Посмотреть сообщение
т.е. как я поняла, нужно проверять, что tempz всегда меньше кол-ва точек в моем массиве и при достижении последней обнулять адрес?
Угу, именно так.
Точно синус имеется? Вот с этой программой? На осциллографе два последовательных периода видно? Сомневаюсь я чего то..

И все же попробуйте переделать таблицу на кратную степени двойки. Вместо 80 значений на 64 или 128.
Тогда
Код:
inc tempz
// добавление
andi tempz,0x7F // для 128 значений
// andi tempz,0x3F // для 64 значений
// 
ldi temp, 0xD5
out TCNT0, temp
Ну или сравнивайте с 80 если оставите старую таблицу. И если совпадет обнуляйте tempz. Это курсовик?
kison вне форума  
Непрочитано 12.05.2011, 18:36  
KvitkaLavi
Прохожий
 
Регистрация: 09.05.2011
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KvitkaLavi на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

kison,
Нет, просто лабораторная.
И да, с 80 значениями почему-то жутко некрасивая была выходящая штука, периодическая, но не очень синусоидная. А вот как расширила таблицу до 200+ значений и о, чудо! вывелась красивая синусоида.
Спасибо Вам большое.
А то только начинаю заниматься и многие штуки не знаю - например, с andi
KvitkaLavi вне форума  
Непрочитано 12.05.2011, 18:49  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от KvitkaLavi Посмотреть сообщение
А вот как расширила таблицу до 200+ значений и о, чудо! вывелась красивая синусоида.
Расширьте до 256 значений и не придется ничего проверять-обнулять.
Сообщение от KvitkaLavi Посмотреть сообщение
А то только начинаю заниматься и многие штуки не знаю - например, с andi
Ну для того и существуют форумы - подсказать, указать на ошибки.
kison вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ШИМ для стартера 55mak Источники питания и свет 10 21.08.2010 18:05
переделка БП на ШИМ 2003 на одно напряжение artem_y Источники питания и свет 9 26.02.2010 23:35
не работает ШИМ в контроллере 40inD Proteus 10 11.01.2010 00:22
Управление автомобильной форсункой ШИМ сигналом, Помогите stanikstanik Автоматика и аппаратура связи 2 19.11.2009 19:27
Нужно преобразовать ШИМ в 0-10В, нагрузка 3А Xuchik Источники питания и свет 37 02.10.2009 08:24


Часовой пояс GMT +4, время: 15:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.