Управляйте высокочастотным выходом (32 кГц) на выводе ввода / вывода микроконтроллера Renesas 20 МГц - PullRequest
3 голосов
/ 22 июля 2011

Мне нужно подать прямоугольную волну 32 кГц на вывод 19 контроллера Renesas R8C / 36C µController. Контакт не подлежит обсуждению (проектирование схемы уже завершено.)

В программном обеспечении используется имитация прерывания 250 мкс для имитации многозадачности, но это хорошо только для полноволновой волны 2 кГц.

Нужно ли создавать другое прерывание с более высоким приоритетом для управления 32 кГц, или есть какой-то другой трюк, о котором я не знаю?

Ответы [ 4 ]

6 голосов
/ 23 июля 2011

Я не знаком с RC8, и Ренес не говорит много о производительности, но это процессор CISC с обычно 4 циклами на команду, так что давайте оценим около 4 MIPS?Некоторые инструкции намного длиннее с делением до 30 циклов.

Таким образом, если вы создаете таймер 64 кГц и переключаете выход на каждое прерывание, у вас есть около 63 инструкций между каждым прерыванием, у вас есть задержка прерывания плюс кодперевернуть бит.Если он вообще работает, он, вероятно, будет представлять собой значительную нагрузку на процессор и может повлиять на своевременность других операций.

Реалистично, без редизайна проект может оказаться нежизнеспособным.Вы уже подчеркиваете это тактом 4KHz OS, на мой взгляд - программные издержки с такой скоростью, скорее всего, являются значительной частью вашей загрузки процессора.

[ADDED]

Ранее я предлагал 6 инструкций между прерываниями - проблема с пальцами в калькуляторе, я изменил эту оценку до 63 и смягчил свой вывод до "едва выполнимого".

Однако я снова посмотрел на лист данных,задержка прерывания является переменной, потому что выполнение инструкции является переменным, и текущая инструкция должна завершиться до обслуживания прерывания, наихудший случай - когда выполняется инструкция DIVX, когда требуется до 51 цикла до first инструкция процедуры прерывания.Это 2,55 мкс, когда вам нужно прерывание для запуска каждые 15,625 мкс, переменная задержка будет вызывать значительный джиттер и составлять от 6 до 16% вашего общего процессорного времени, даже не принимая во внимание то, что используется самим ISR. Плюс, если само прерываниес опережением или если прерывание с более высоким приоритетом выполняется, когда наступает срок действия, будет наложен дополнительный джиттер.

Будет ли оно работать, будет зависеть от точности и ограничений джиттера 32 кГц, а также от того, что еще нужно вашему кодучтобы сделать.

3 голосов
/ 24 июля 2011

Как отмечают многие, этот дизайн не кажется очень хорошим с аппаратной точки зрения, если 32-ГГц тактовый генератор должен генерироваться с помощью gpio.

Тем не менее, я не знаю, насколько отчаянно твоя ситуация, и при этом я не знаю объема, о котором идет речь. Но если это прототип или очень короткая серия, а контакт 20 свободен, вы можете замкнуть контакты 19 и 20, установив контакт 19 в качестве входа и 20 в качестве выхода. Поскольку вывод 20 можно использовать как выходной сигнал от таймера rd, вы можете настроить этот таймер на вывод 32 кГц без использования прерываний.

Я не эксперт по Renesas Micro, но я говорю о том, что я видел в паспорте, который вы приложили, и предыдущем опыте работы с другими mcu.

Надеюсь, это поможет.

1 голос
/ 24 июля 2011

Если вы не можете привязать вывод 19 к другому выводу, который имеет аппаратное обеспечение для генерации 32 кГц, и просто сделать вывод 19 входным?Не гордый момент, но это было легко для пакета DIL.

Можете ли вы вызывать прерывание каждые 15.6us и переключать pin19, а затем на шестнадцатом прерывании выполнять многозадачность, но это, вероятно, будет расточительным.С частотой прерывания 32 кГц, установка pin19 затем восьмая часть времени при принятии решения о многозадачности, а остальные семь раз ждут до момента, когда вы сможете сбросить pin19 и сделать некоторый фоновый код менее чем за половину времени процессора

1 голос
/ 22 июля 2011

Глядя на таблицу для этого чипа:

enter image description here

Похоже, что ваш единственный реальный вариант - использовать вывод в качестве общего выходного порта.единственный используемый режим вывода - это общий выходной порт.

...