- Как сбрасывать прерывания по SSPRXINTR и SSPTXINTR? Если они сбрасываются автоматически, то в какой момент?
Прерывания сбрасываются автоматически.
Если в периферийном блоке складываются условия для генерации прерывания, то периферийный блок формирует сигнал (допустим логическую 1) на входе NVIC, который в свою очередь вызывает прерывание ядра. На примере приемника, прерывание говорит о том, что буфер заполнен на половину и надо с данными что-то срочно делать - вычитывать. Если данные не вычитать, а просто выйти из прерывания, то условия которые привели к генерации прерывания сохраняются, в буфере все те же 4 слова данных, а то может быть уже и больше. Следовательно, на входе NVIC все та же лог. 1, прерывание генерируется тут же вновь. Если данные из буфера вычитать и данных в FIFO станет меньше 4-х, то условия генерации прерывания нарушаются. Периферийный блок уже не формирует логическую 1 на входе NVIC, прерывание не возникает.
В случае с передатчиком ситуация аналогичная, только прерывание возникает если в буфере содержится 4 или менее слов данных.
- Какова точность внутреннего датчика температуры в микроконтроллерах 1986ВЕхх?
В 1986ВЕ9х термодатчик имеет очень большие разбросы от технологии. Или проще говоря без коллибровки не получился. Температуру мерить можно но для каждого образа надо определять собственные зависимости и калибровать.
Отчет о параметрах датчика опубликован на форуме - Отчет по термодатчику, pdf.
Ссылка на обсуждение - форум.
- Работает ли блок I2C в режиме Slave?
Нет, аппаратно реализован только режим мастера. Для работы в режиме Slave требуется программная реализация.
Ссылка на обсуждение - форум.
Если блок SpaceWire не используется, то нужно ли как-нибудь подключать неиспользуемые выводы?
На примере микроконтроллера 1986ВЕ8Т:
Как подключать выводы Ethernet, если блок не используется? Нужно ли подавать питание?
На примере ответа для 1986ВЕ8Т.
Как подключать выводы АЦП и ЦАП, если блоки не используются?
На примере ответа для 1986ВЕ8Т.
- Подключаемая емкость нагрузки выводов GPIO указана в 30пФ, к чему приведет ее превышение?
При зарядке конденсатора возникает пиковый ток, значением E/Ri. Где E - ЭДС источника, Ri внутреннее сопротивление источника. Этот пиковый ток спадает по мере нарастания напряжения на конденсаторе. Скорость "спадания" определяется емкостью конденсатора. Чем больше емкость, тем дольше будет протекать повышенный ток. Чем чаще частота переключений на выводе, тем чаще вывод будет находится под повышенным током. В результате, рано или поздно может случиться "выгорание" вывода.
Указывая в ТУ 30пФ производитель гарантирует, что при такой подключенной емкости не произойдет выгорание вывода при использовании МК на протяжении всего заявленного времени эксплуатации. При этом гарантируются все прочие заявленные в ТУ параметры эксплуатации - максимальные частоты, температура, и т.д. Поэтому, работая по ТУ, превышать указанную емкость нельзя.
Возможные варианты подключения большей емкости:
У микросхемы есть два режима функционирования - предельно-допустимый режим и предельный.
CAN. Как рассчитать коэффициенты BITTMNG для CAN?
Все устройства CAN должны работать на одной скорости. Стандарт сети CAN не регламентирует физический уровень, поэтому сигнал от устройств на шине может приходить в разные моменты времени, в связи с чем, в каждом CAN-контроллере имеется блок цифровой фазовой автоподстройки. Этот блок разбивает битовый интервал на сегменты, которые состоят из квантов времени TQ (битовый интервал - сумма всех сегментов, по стандарту от 8 TQ до 25 TQ). Регистр CAN_BITTMNG как раз и позволяет задать значения этим сегментам в квантах времени, помимо задания делителя и режима выборки, и позволяет не только синхронизировать все устройства на шине, но и внести необходимые данные для задания определенной скорости работы.
Общая формула для скорости работы CAN следующая:
S = HCLK/(N*(DIV+1)), где HCLK - частота работы МК, N - сумма всех сегментов в квантах времени, DIV - делитель, задающийся также в регистре CAN_BITTMNG.
Пример: Если необходимо установить скорость работы в 1 Мб/с, то нужно внести следующие значения в регистр CAN_BITTMNG для частоты МК в 80 МГц (как пример):
MDR_CAN1→BITTMNG = (7 « 0) Делитель тактовой частоты (8 – 1) | (1 « 16) Длительность сегмента распространения (2 TQ)
Сумма всех сегментов равна 10 TQ и удовлетворяет требованиям стандарта, а делитель задали равным 7. Тогда S = 80 Мгц/(10*(7+1)) = 1 Мб/с. Подбирайте значения делителя и сегментов согласно частоте МК, на которой Вы желаете работать.