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

 
 
> Таймер на ATxmega32E5
Alexey_N
сообщение Feb 7 2018, 15:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Я хочу казалось бы не так много - иметь с ноги PD5 меандр от таймера 5.
ПДФ вещает, что к этой ноге прибит выход OC5B, что казалось бы воодушевляет.
Программирую его на выход.
Программирую регистры Таймера:
TCC5.CTRLA = 0x01; // Prescaler: Clk
TCC5.CTRLB = 0x01; // Mode of operation = "Frequency"
TCC5.CTRLE = 0x04; // CCBMODE = 01 => Ch B = Output compare enabled
TCC5.INTCTRLA = 0x00; // Interrupt disabled
TCC5.CCB = MEANDR_PER; // MEANDR_PER = 410 => F = 100 kHz
Остальные регистры не трогаю.

Нет импульсов, хоть тресни...
Может там какая-то всем известная закладка должна быть, или я просто туплю по-чёрному?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beard42
сообщение Feb 8 2018, 19:43
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 18-11-12
Пользователь №: 74 448



В datasheet, вроде, период в CCA заносить надо...
Go to the top of the page
 
+Quote Post
Alexey_N
сообщение Feb 8 2018, 23:00
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Цитата(beard42 @ Feb 8 2018, 22:43) *
В datasheet, вроде, период в CCA заносить надо...

А я простодушно его занёс в ССВ:
>>TCC5.CCB = MEANDR_PER; // MEANDR_PER = 410 => F = 100 kHz
Вроде как должен юзаться канал "В", чтобы дергалась ножка OC5B?
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 8 2018, 23:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Alexey_N @ Feb 9 2018, 02:00) *
А я простодушно его занёс в ССВ:
>>TCC5.CCB = MEANDR_PER; // MEANDR_PER = 410 => F = 100 kHz
Вроде как должен юзаться канал "В", чтобы дергалась ножка OC5B?

Так я и не понял, Вы поменяли CCB на CCA? появилась частота?

Цитата
13.8.2 Frequency (FRQ) Waveform Generation
For frequency generation the period time (T) is controlled by the CCA register instead of PER. The waveform generation
(WG) output is toggled on each compare match between the CNT and CCA registers, as shown in Figure 13-13.


ЗЫ: Пока читал DS возник вопрос: На каких пинах и какого порта должна быть эта частота?
Go to the top of the page
 
+Quote Post
Alexey_N
сообщение Feb 9 2018, 11:51
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Цитата(zombi @ Feb 9 2018, 02:50) *
Так я и не понял, Вы поменяли CCB на CCA? появилась частота?

ЗЫ: Пока читал DS возник вопрос: На каких пинах и какого порта должна быть эта частота?

Пока ничего не появилось sad.gif.
Итак, с самого начала, развёрнуто:
Я хочу, чтобы на ножке №23 (PD5) был меандр от Таймера_5.
В Даташите на стр.60 в Таблице 32-5 указано, что альтернативная функция PD5 - это OC5B, что я интерпретирую, как выход канала сравнения "В" этого Таймера_5.
Правда на стр.34 есть картинка 17-6, которая намекает, что сигнал от компаратора проходит до выхода через загадочные блоки FAULT, WeX и HiRes, но они мне не нужны, и я их не трогаю, наивно предполагая, что по умолчанию сигнал должен проходить через них насквозь.
Теперь - вот все регистры, которые казалось бы имеют отношение к Таймеру:

PR.PRPC = 0x58; // Разрешение работы таймеров 4 и 5

TCC5.CTRLA = 0x01; // Prescaler: Clk

TCC5.CTRLB = 0x01; // Mode of operation = "Frequency"
или
TCC5.CTRLB = 0x31; // Добавлено Circular Buffer Enable (both PER/PERBUF and CCA/CCABUF)
безразлично, все равно не работает.

TCC5.CTRLE = 0x04; // CCBMODE = 01 => Ch B = Output compare enabled

TCC5.CCB = MEANDR_PER; // MEANDR_PER = 410 => F = 100 kHz
TCC5.CCA = MEANDR_PER; // Зачем это?? На всякий случай.

Остальные регистры не трогаю, они = 0.

Таким образом я нахожу, что в указанной Вами фразе на стр. 169 в Даташите содержится неточность, вместо
"For frequency generation the period time (T) is controlled by the CCA register instead of PER."
следует видимо читать
"For frequency generation the period time (T) is controlled by the CCx register instead of PER."
потому что каналов сравнения как минимум два: А и В.
Я неправ?

В силу того, что частота так и не появилась, думаю щас предметно заняться загадочными устройствами FAULT, WeX и HiRes, может они, гады,всё портят?
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 9 2018, 12:42
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Alexey_N @ Feb 9 2018, 15:51) *
В силу того, что частота так и не появилась, думаю щас предметно заняться загадочными устройствами FAULT, WeX и HiRes, может они, гады,всё портят?

Я бы для начала глянул всё таки на вывод PD4 pin 24.
Не думаю что это просто так написано
Цитата
For frequency generation the period time (T) is controlled by the CCA register instead of PER.

Цитата
Для генерации частоты период времени (T) управляется регистром CCA вместо PER.


Цитата( @ Feb 9 2018, 15:51) *
PR.PRPC = 0x58; // Разрешение работы таймеров 4 и 5

Разрешаете работу таймеров порта C
Цитата(Alexey_N @ Feb 9 2018, 15:51) *
что альтернативная функция PD5 - это OC5B

Ожидаете на D

Посмотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL
Go to the top of the page
 
+Quote Post
Alexey_N
сообщение Feb 9 2018, 13:15
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Цитата(zombi @ Feb 9 2018, 15:42) *
Я бы для начала глянул всё таки на вывод PD4 pin 24.
Не думаю что это просто так написано
Разрешаете работу таймеров порта C
Ожидаете на D
Посмотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL

Да, Вы правы, это место я не доглядел, добавляем:

PR.PRPD = 0x10; // Разрешение работы таймеров 4 и 5

Один хрен, сигнала нет sad.gif...
(Да, на PD4 я разумеется тоже посматриваю. Там у меня идет импульсация от Таймера_4, работающего по прерыванию, там всё нормально...)
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 9 2018, 13:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Alexey_N @ Feb 9 2018, 16:15) *
(Да, на PD4 я разумеется тоже посматриваю. Там у меня идет импульсация от Таймера_4, работающего по прерыванию, там всё нормально...)

Судя по DS у порта D нет Таймера_4!
Что вы можете там посматривать и тем более формировать?
Еще раз смотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL
или Table 32-5. PORT D – Alternate Functions стр.60 XMEGA E5 [DATASHEET]
или Pinout and Block Diagram стр.4 XMEGA E5 [DATASHEET]
Go to the top of the page
 
+Quote Post
Alexey_N
сообщение Feb 9 2018, 14:53
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 308
Регистрация: 12-05-05
Из: мск
Пользователь №: 4 943



Цитата(zombi @ Feb 9 2018, 16:42) *
Судя по DS у порта D нет Таймера_4!
Что вы можете там посматривать и тем более формировать?
Еще раз смотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL
или Table 32-5. PORT D – Alternate Functions стр.60 XMEGA E5 [DATASHEET]
или Pinout and Block Diagram стр.4 XMEGA E5 [DATASHEET]

Да, разумеется. Ключевое слово - "...по прерыванию", ну то есть в прерывании от Таймера_4 я просто шевелю этой лапой вручную.

С таблицами я согласен, не вижу никаких противоречий с тем, что я делаю.

Беглый просмотр загадочных FAULT, WeX и HiRes ничего не дал, вроде не должны сигнал останавливать...

Процессор исправен, замыкания на плате нет, от того же прерывания в Таймере_4 нога PD5 прекрасно дергается.

Всё, я упёрся, больше не знаю что делать.
Go to the top of the page
 
+Quote Post



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

 


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


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