0 / 0 / 0
Регистрация: 26.04.2019
Сообщений: 8
|
|||||||||||
1 | |||||||||||
Генерация частоты на Attiny22.01.2021, 08:43. Просмотров 452. Ответов 8
Метки нет Все метки)
(
Решил сделать "пиликалку" для прозвонки кабеля. Ну и чисто чтобы потренироваться в программировании контроллеров сделал это на attiny13. На одном выводе все формируется ОК. Режим работы таймеров СТС, т.е. инверсия сигнала при совпадении. Ну такой, как я понял стандартный режим формирования частоты на этих микроконтроллерах. Как уже написал - все нормально, но захотелось сигнал побольше и решил на другой ножке сформировать сигнал в потивофазе. И тут - засада, как это сделать? Я предположил, что нужно при инициализации один из выводов установить в 0, а второй в единицу:
0
|
|
22.01.2021, 08:43 | |
Генерация звука заданной частоты
Получить слова длиной Х по убыванию частоты появления в тексте с указанием этой частоты Различие частоты сигнала и частоты его АКФ |
|
Модератор
![]() ![]() 4194 / 3727 / 672
Регистрация: 07.10.2015
Сообщений: 7,634
|
|
22.01.2021, 09:32 | 2 |
dumkan, не pinb, а portb
1
|
0 / 0 / 0
Регистрация: 26.04.2019
Сообщений: 8
|
||||||
22.01.2021, 10:35 [ТС] | 3 | |||||
Да, верно, спасибо. Но проблема не исчезает, даже если так (в двух местах):
0
|
Модератор
![]() ![]() 4194 / 3727 / 672
Регистрация: 07.10.2015
Сообщений: 7,634
|
||||||
22.01.2021, 17:14 | 4 | |||||
dumkan, а так?
1
|
0 / 0 / 0
Регистрация: 26.04.2019
Сообщений: 8
|
|
22.01.2021, 18:56 [ТС] | 5 |
Да, спасибо, так действительно фаза не скачет.
Я тут немного поэкспериментировал, фаза скачет если мы меняем OCR0A. Т.е. если один раз в секции Start этот регистр загрузили, то на выходах сигнал в фазе. Или даже если в Loop этот регистр каждый раз загружаем, но одним и тем же числом - тоже все ОК. Проблема начинается если мы меняем значение хоть раз. Ваше решение со сбросом счетного регистра работает! Но есть пара вопросов: 1. Собственно говоря почему так работает - нужно сбросить счетный регистр перед загрузкой регистра сравнения чтобы не было скачков фазы на разных выходах? Отчего скачки вообще происходят, ведь оба выхода настроены одинаковы - инверсия выхода при совпадении счетчика с регистром сравнения. 2. Хотя код позволяет синхронизировать выходы, но они теперь всегда в фазе, т.е. динамик между этими выходами - молчит. Можно ли как-то выходы синхронизировать в противофазе?
0
|
Тутошний я
|
|
23.01.2021, 10:30 | 6 |
а в счётчиках, при сбросе, одинаковые значения?
а если настроить счётчик в противофазе? Добавлено через 38 минут не то. это 2 счётчика нужно. Добавлено через 20 минут по моему проще настроить таймер на переполнение. и в прерывании переключать выводы.
0
|
0 / 0 / 0
Регистрация: 26.04.2019
Сообщений: 8
|
|
23.01.2021, 12:41 [ТС] | 7 |
Таймер в тиньке13 один, и счетчик соответственно тоже один.
Но регистров сравнения - два. Если использовать режим ШИМ, записать в регистры сравнения одинаковые числа (OCR0A=OCR0B), и выводы настроить один сброс 0, а второй в 1 при совпадении (TCCR0A=0b1011хххх), то получаем противофазные ШИМ на выходах. Но в этом режиме мы регистрами OCR0A,OCR0B управляем именно ШИМ, а не частотой ![]() Добавлено через 7 минут
0
|
Тутошний я
|
||||||
23.01.2021, 21:26 | 8 | |||||
как вариант. тоже программный.
таймер в режим CTC. выходы от него отключаем. в прерывании Output Compare 0A переключать выводы.Добавлено через 27 минут попробовал код, похожий как liv предложил.
и таймер потом их также в противофазе переключает. там на пару тактов всего фаза не совпадает.
0
|
0 / 0 / 0
Регистрация: 26.04.2019
Сообщений: 8
|
||||||
24.01.2021, 14:03 [ТС] | 9 | |||||
Добавлено через 45 минут Ну вот так работает конечно:
0
|
24.01.2021, 14:03 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Attiny в atmega Тактирование Attiny Attiny 13 ADC ATtiny 2313 не прошивается attiny 13 Определить частоты частости, накопленные частоты и частости для данных статистических данны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |