Alexey_N 0 7 февраля, 2018 Опубликовано 7 февраля, 2018 · Жалоба Я хочу казалось бы не так много - иметь с ноги 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 Остальные регистры не трогаю. Нет импульсов, хоть тресни... Может там какая-то всем известная закладка должна быть, или я просто туплю по-чёрному? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beard42 0 8 февраля, 2018 Опубликовано 8 февраля, 2018 · Жалоба В datasheet, вроде, период в CCA заносить надо... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 8 февраля, 2018 Опубликовано 8 февраля, 2018 · Жалоба В datasheet, вроде, период в CCA заносить надо... А я простодушно его занёс в ССВ: >>TCC5.CCB = MEANDR_PER; // MEANDR_PER = 410 => F = 100 kHz Вроде как должен юзаться канал "В", чтобы дергалась ножка OC5B? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 8 февраля, 2018 Опубликовано 8 февраля, 2018 · Жалоба А я простодушно его занёс в ССВ: >>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 возник вопрос: На каких пинах и какого порта должна быть эта частота? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба Так я и не понял, Вы поменяли CCB на CCA? появилась частота? ЗЫ: Пока читал DS возник вопрос: На каких пинах и какого порта должна быть эта частота? Пока ничего не появилось :(. Итак, с самого начала, развёрнуто: Я хочу, чтобы на ножке №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, может они, гады,всё портят? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба В силу того, что частота так и не появилась, думаю щас предметно заняться загадочными устройствами 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. PR.PRPC = 0x58; // Разрешение работы таймеров 4 и 5 Разрешаете работу таймеров порта C что альтернативная функция PD5 - это OC5B Ожидаете на D Посмотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба Я бы для начала глянул всё таки на вывод PD4 pin 24. Не думаю что это просто так написано Разрешаете работу таймеров порта C Ожидаете на D Посмотрите таблицу 8.9 Register Summary – Power Reduction стр.119 XMEGA E MANUAL Да, Вы правы, это место я не доглядел, добавляем: PR.PRPD = 0x10; // Разрешение работы таймеров 4 и 5 Один хрен, сигнала нет :(... (Да, на PD4 я разумеется тоже посматриваю. Там у меня идет импульсация от Таймера_4, работающего по прерыванию, там всё нормально...) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба (Да, на 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] Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба Судя по 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 прекрасно дергается. Всё, я упёрся, больше не знаю что делать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба Всё, я упёрся, больше не знаю что делать. Ну значит пора переходить к методу научного тыка. ПАубирать из программы всё кроме того что касается исследуемой периферии. И тыкать, тыкать, тыкать ... пока не получите нужный результат. У Вас получается что прерывание по таймеру порта C чего-то делает с предполагаемым для вывода частоты пином порта D. от того же прерывания в Таймере_4 нога PD5 прекрасно дергается. А судя по DS не должна! See 13.8.6 Port Override for Waveform Generation page 172 XMEGA E [MANUAL] Если дёргается, значит CCxMODE неправильно настроен. Или настроен но не тот или ..... Тыкать короче... Я бы поигрался была бы у меня xmegaE Кстати, а почему TCC5.CTRLA = ...? может нужно TCD5.CTRLA = ... и т.д. раз Вам частота на порту D нужна Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beard42 0 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба О точно! Там же все настройки в TCC5 пишутся вместо TCD5. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 12 февраля, 2018 Опубликовано 12 февраля, 2018 · Жалоба Кстати, а почему TCC5.CTRLA = ...? может нужно TCD5.CTRLA = ... и т.д. раз Вам частота на порту D нужна О точно! Там же все настройки в TCC5 пишутся вместо TCD5. АХРЕНЕТТЬЬЬ! Таки-действительно да!!! То есть везде заменил TCC5. на TCD5., и тут же всё заработало... Господа, вам - огромное мерси, вы реально спасли мой заблудший мосх! :)))) Однако остаётся непонятка, - почему же так?? Я уже сто лет юзаю эти Хмеги, и везде пользовался настройками таймеров с префиксами ТСС, а оказывается есть ещё и TCD... Это где-то описано? И что означает сия аббревиатура? Неужели на каждом порту свой таймер сидит? Как это всё понять? ////// Что в результате получилось: TCD5.CTRLA = 0x01; // Prescaler: Clk+ TCD5.CTRLB = 0x01; // Mode of operation = "Frequency" TCD5.CTRLE = 0x04; // CCBMODE = 01 => Ch B = Output compare enabled TCD5.CCA = MEANDR_PER; // ВОТ ИМЕННО ЭТОТ РЕАЛЬНЫЙ ПЕРИОД И ПОЛУЧАЕТСЯ! (Почему регистр А, если я шевелю ногу В?) TCD5.CCB = 0; // А этот регистр должен иметь любое значение от 0 до TCC5.CCA, иначе вообще нет импульсов. На Период не влияет никак. (Вообще непонятно!) Вот. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beard42 0 12 февраля, 2018 Опубликовано 12 февраля, 2018 · Жалоба TCC - это Timer Counter (Port) C. Соответственно TCD - это Timer Counter (Port) D. На A-сериях в больших корпусах есть еще таймеры на портах E и F. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_N 0 13 февраля, 2018 Опубликовано 13 февраля, 2018 · Жалоба TCC - это Timer Counter (Port) C. Соответственно TCD - это Timer Counter (Port) D. На A-сериях в больших корпусах есть еще таймеры на портах E и F. Блин, всё точно, так и есть. В ДШ в явном виде указано: 17.1 Features Three 16-bit timer/counter - One timer/counter of type 4 - Two timer/counter of type 5 Вот второго-то "слона" 5-го типа я и не приметил... Всё, теперь всё срослось, рассудок спасён! :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться