======Общие вопросы-ответы по микроконтроллерам====== //- Как сбрасывать прерывания по SSPRXINTR и SSPTXINTR? Если они сбрасываются автоматически, то в какой момент?// Прерывания сбрасываются автоматически. Если в периферийном блоке складываются условия для генерации прерывания, то периферийный блок формирует сигнал (допустим логическую 1) на входе NVIC, который в свою очередь вызывает прерывание ядра. На примере приемника, прерывание говорит о том, что буфер заполнен на половину и надо с данными что-то срочно делать - вычитывать. Если данные не вычитать, а просто выйти из прерывания, то условия которые привели к генерации прерывания сохраняются, в буфере все те же 4 слова данных, а то может быть уже и больше. Следовательно, на входе NVIC все та же лог. 1, прерывание генерируется тут же вновь. Если данные из буфера вычитать и данных в FIFO станет меньше 4-х, то условия генерации прерывания нарушаются. Периферийный блок уже не формирует логическую 1 на входе NVIC, прерывание не возникает. В случае с передатчиком ситуация аналогичная, только прерывание возникает если в буфере содержится 4 или менее слов данных. ---- //- Какова точность внутреннего датчика температуры в микроконтроллерах 1986ВЕхх?// В 1986ВЕ9х термодатчик имеет очень большие разбросы от технологии. Или проще говоря без коллибровки не получился. Температуру мерить можно но для каждого образа надо определять собственные зависимости и калибровать. Отчет о параметрах датчика опубликован на форуме - [[http://forum.milandr.ru/download/file.php?id=654|Отчет по термодатчику, pdf.]] Ссылка на обсуждение - [[http://forum.milandr.ru/viewtopic.php?f=33&t=657&hilit=I2C+Slave&start=15|форум]]. {{doc:adcdac:adc_thermo.png}} ---- //- Работает ли блок I2C в режиме Slave?// Нет, аппаратно реализован только режим мастера. Для работы в режиме Slave требуется программная реализация. Ссылка на обсуждение - [[http://forum.milandr.ru/viewtopic.php?f=33&t=657&hilit=I2C+Slave|форум]]. ---- **Если блок SpaceWire не используется, то нужно ли как-нибудь подключать неиспользуемые выводы?** __На примере микроконтроллера 1986ВЕ8Т:__ - Если не используется SpaceWire, значит, нет необходимости его включать, включать тактовые генераторы, читать и писать регистры статуса этого блока. В таком случае интерфейс потреблять ток не будет. - Для того, чтобы не было перекоса по питанию, необходимо подавать питание даже на неиспользуемые интерфейсы, соблюдая примечание к таблице "Предельно-допустимые режимы эксплуатации и предельные режимы микросхем" (Спецификация ТСКЯ.431296.015СП): "Напряжения питания на выводах ADC_Uсс , DAC_Uсс , SPW_Uсс , ETH_Uсс должны отличаться от напряжения питания на выводах Uсс не более, чем на |±0,2| В." Большого тока по данным выводам не будет, пока подано основное питание. - **В отсутствии основного питания по таблице 156 должно отсутствовать и питание ETH и SPW** и, таким образом, потребления тоже быть не должно. - **SPW_EXTR** (как и **ADC_EXTR, DAC_EXTR0, DAC_EXTR1, ETH_EXTR**) должен быть подключен к земле через резистор 120 кОм +/-5%. Реально они используются, только если в этих блоках программа переключит источники опорного напряжения и тока на внешний резистор. По дефолту после сброса, если и используются, то внутренние (которые могут быть хуже, чем внешний). В любом случае резисторы должны быть на случай сбоя. - **SPW_RXS+-, SPW_RXD+**- бросить в воздухе, если SPW не используется. - SPW_IREF, DAC_IREF, ETH_IREF – бросить в воздухе, это выход. Используется для диагностики встроенного источника тока и напряжения. ---- **Как подключать выводы Ethernet, если блок не используется? Нужно ли подавать питание?** __На примере ответа для 1986ВЕ8Т.__ - Для того, чтобы не было перекоса по питанию, необходимо подавать питание даже на неиспользуемые интерфейсы, соблюдая примечание к таблице "Предельно-допустимые режимы эксплуатации и предельные режимы микросхем" (Спецификация ТСКЯ.431296.015СП): "Напряжения питания на выводах ADC_Uсс , DAC_Uсс , SPW_Uсс , ETH_Uсс должны отличаться от напряжения питания на выводах Uсс не более, чем на |±0,2| В." Большого тока по данным выводам не будет, пока подано основное питание. - В отсутствии основного питания по таблице 156 должно отсутствовать и питание ETH и SPW и, таким образом, потребления тоже быть не должно. - ETH_RX+- бросить в воздухе, если ETH не используется. - ETH_IREF – бросить в воздухе, это выход. Используется для диагностики встроенного источника тока и напряжения. - ETH_EXTR - должен быть подключен к земле через резистор 120 кОм +/-5% ---- **Как подключать выводы АЦП и ЦАП, если блоки не используются?** __На примере ответа для 1986ВЕ8Т.__ - Для того, чтобы не было перекоса по питанию, необходимо подавать питание даже на неиспользуемые интерфейсы, соблюдая примечание к таблице "Предельно-допустимые режимы эксплуатации и предельные режимы микросхем" (Спецификация ТСКЯ.431296.015СП): "Напряжения питания на выводах ADC_Uсс , DAC_Uсс , SPW_Uсс , ETH_Uсс должны отличаться от напряжения питания на выводах Uсс не более, чем на |±0,2| В." Если используется например АЦП и ЦАП, то на их питания может приходить «чистое» питание, но равное Ucc+/-0,2В. - ADC_EXTR, DAC_EXTR0, DAC_EXTR1 - эти выводы должны быть подключены к земле через резистор 120 КОм +/-5%. Реально они используются, только если в этих блоках программа переключит источники опорного напряжения и тока на внешний резистор. По дефолту после сброса если и используются, то внутренние (которые могут быть хуже, чем внешний). В любом случае резисторы должны быть на случай сбоя. - DAC_IREF – бросить в воздухе, это выход. Используется для диагностики встроенного источника тока и напряжения. - Если используется например АЦП и ЦАП, то на их питания может приходить «чистое» питание, но равное Ucc+/-0,2В ---- **- Подключаемая емкость нагрузки выводов GPIO указана в 30пФ, к чему приведет ее превышение?** При зарядке конденсатора возникает пиковый ток, значением E/Ri. Где E - ЭДС источника, Ri внутреннее сопротивление источника. Этот пиковый ток спадает по мере нарастания напряжения на конденсаторе. Скорость "спадания" определяется емкостью конденсатора. Чем больше емкость, тем дольше будет протекать повышенный ток. Чем чаще частота переключений на выводе, тем чаще вывод будет находится под повышенным током. В результате, рано или поздно может случиться "выгорание" вывода. Указывая в ТУ 30пФ производитель гарантирует, что при такой подключенной емкости не произойдет выгорание вывода при использовании МК на протяжении всего заявленного времени эксплуатации. При этом гарантируются все прочие заявленные в ТУ параметры эксплуатации - максимальные частоты, температура, и т.д. Поэтому, работая по ТУ, превышать указанную емкость нельзя. Возможные варианты подключения большей емкости: * Подключение через токо-ограничивающий резистор. Но необходимо пересчитать переходные процессы, поскольку снизится скорость переключения. * В некоторых интерфейсах можно задублировать сигнал на несколько выводов. Например таймер, выводящий ШИМ, можно назначить на два вывода, которые при объединении дадут бОльшую мощность подключения на бОльшую емкость. ---- У микросхемы есть два режима функционирования - **предельно-допустимый** режим и **предельный**. - Когда все параметры микросхемы, описанные в таблице 485 "Предельно допустимые характеристики микросхемы", находятся в предельно-допустимом режиме, то изготовитель микросхемы обеспечивает ее работоспособность в течение наработки, установленной ТУ. - Если какой-то параметр выходит за границы предельно допустимого режима и попадает в предельный, то параметры микросхемы не регламентируются, но после снятия этого режима, параметры соответствуют норме. За пределами этих режимов микросхема может быть повреждена. Не допускается одновременное воздействие двух и более параметров в предельных режимах. ---- //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) | (3 << 19) // Длительность первого фазового сегмента (4 TQ) | (2 << 22) // Длительность второго фазового сегмента (3 TQ) | (0 << 25) // Допустимый интервал подстройки сегментов (1 TQ) | (0 << 27); // Режим выборки (однократная) Сумма всех сегментов равна 10 TQ и удовлетворяет требованиям стандарта, а делитель задали равным 7. Тогда S = 80 Мгц/(10*(7+1)) = 1 Мб/с. Подбирайте значения делителя и сегментов согласно частоте МК, на которой Вы желаете работать. ----