======Заметки по 1986ВЕ8Т====== К сожалению, из спецификации не всегда понятно, как однозначно трактовать некоторые положения. Здесь представлены уточнения от производителя. =====PLL===== Блок PLL формирует устойчивую выходную частоту в диапазоне 75-150 МГц. Эта частота на выходе может быть поделена на 2, если выставлен бит DV в регистре PLLn_CLK. Таким образом, минимальная частота, которую можно сформировать в PLL и подать на различные блоки составляет 35,5 МГц. Выходная частота FPLL задается коэффициентами PLLn_N, PLLn_Q и DV по формуле: \\ Fint = Finp * PLLn_N / (PLLn_Q + 1) \\ FPLL = Fint / (DV + 1) , где \\ * PLLn_Q - поле в регистре PLLn_CLK[3..0], значение задается в диапазоне 0 - 15. \\ * PLLn_N - поле в регистре PLLn_CLK[14..8], значение задается в диапазоне 3 - 75. \\ * DV - бит в регистре PLLn_CLK[4], значение задается в диапазоне 0 - 1. \\ Например, при минимальном значении PLLn_Q = 0 и минимальном значении N = 3 при DV = 0, частота Pll будет равна FPLL = Finp * 3. Значит, чтобы внутренняя частота Fint находилась в необходимом диапазоне 75-150 МГц необходимо чтобы входная частота PLL была не меньше 25 МГц. Но из-за большого джиттера PLL, согласно errata 0051 нельзя формировать выходную частоту PLL выше 40МГц. Из-за этого джиттера отдельные периоды частоты могут "гулять" до 60МГц. Соответственно если составить таблицу в Excel, то видно, что есть всего несколько рациональных значений частот, которые можно получить при такой PLL: Например, при входной частоте PLL 8МГц получаем: ^ PLL Out ^ N ^ Q ^ DV ^ | Целые |||| | 36 MHz | 18 | 1 | 1 | | 38 MHz | 19 | 1 | 1 | | 39 MHz | 39 | 2 | 1 | | 40 MHz | 10 | 0 | 1 | | Дробные |||| | 37,5 MHz | 75 | 7 | 1 | | 37,6 MHz | 47 | 4 | 1 | | 38,4 MHz | 48 | 4 | 1 | | 39,2 MHz | 49 | 4 | 1 | =====Особенности ECC в ОЗУ и ОТР===== Аппаратные блоки, критичные для исполнения программы, в случае возникновения ошибок ECC в своей работе формируют два сигнала - сигнал одиночной ошибки или сигнал двойной. Эти сигналы идут в блок FT_CNTR и по ним выставляются соответствующие биты в регистрах блока FT_CNTR. В случае активирования прерываний, помимо выставления флагов, происходит вызов прерываний по этим сигналам ошибок. ^ ^ Двойная ^ Одиночная ^ Регистры_Двойная ^ Регистры_Одиночная ^ | ОЗУ | EVENT2.ECC_RAMD_DE | EVENT7.SRAMD_SE | EVENT4.RAMD_REG_DE | EVENT7.RAMD_REG_SE | | OTP | EVENT2.ECC_OTP_DE | EVENT7.OTP_SE | EVENT4.OTP_REG_DE | EVENT7.OTP_REG_SE | Но контроллеры ОЗУ и ОТР **не возвращают** не корректные данные (которые не смогли восстановить). В тоже время ядро, запросившее эти данные, ждет их по шине. В итоге контроллеры данные не возвращают, а ядро получает отказ шины и как следствие происходит вызов обработчика Hard_Fault, вместо вызова обработчика FT_IF1_Handler. При этом, адрес данных с ошибкой (отказа ядра) показывается в регистре ядра BFAR, валидность адреса подтверждает бит BFARVALID = 1. Если произвести корректный выход из Hard_Fault, то произойдет вызов FT_IF1_Handler поскольку запрос на обработку в FT_CNTR остается активным. Поэтому невосстановимые ошибки от ОЗУ и ОТР необходимо ловить в Hard_Fault, или в обработчике BusFault_Handler если его включить. Все прерывания от остальных блоков с ECC происходят штатно в обработчиках от FT_CNTR. =====ECC===== * Механизмов для внесения одиночных и двойных ошибок для блоков с ЕСС (в целях отладки ПО) не предусмотрено. * Второе ядро в микроконтроллере не реализовано, поэтому нет режима LockStep по которому детектировались бы сбои в работе CPU. * Блоки Таймеров и АЦП не имеют защиты по ECC. С таймером это досадная недоработка. А защитить аналоговый блок АЦП от ТЗЧ не представляется возможным. =====Тактовая частота АЦП до 11МГц===== Согласно спецификации, длительность тактового импульса не должна быть короче 45нс (период 90нс), что соответствует частоте в 11МГц. Учитывая, что PLL формирует выходную частоту начиная с 37,5МГц, то затактировать АЦП от PLL нельзя. Остается использовать генераторы HSI, HSE, LSE. Обсуждение на [[http://forum.milandr.ru/viewtopic.php?f=47&t=2569&start=150|форуме]]. =====Флаги событий сброса===== Флаги событий сброса находятся в регистре BKP_60_TMRx блока BKP. Опрашивая флаги, можно узнать по какой причине произошел сброс или же загрузка произошла по включению питания. **К сожалению, в коде начального загрузчика была допущена ошибка, эти флаги стираются вместе со всей младшей половиной данного регистра. Ошибка должна быть исправлена в 5-й ревизии микроконтроллера. ** {{doc:mk:1986be8t:ve8_resetflags.png}} =====Емкость вывода===== В текущем ТУ отсутствуют справочные данные о значении емкости входа/выхода. Это необходимая информация для проверки возможности сопряжения с другими цифровыми устройствами и обязательный пункт в картах рабочих режимов на блок. Емкость входа-выхода уже измерена, но изменения в ТУ пока что не проведены. Значение емкости входов-выходов микросхемы на частотах менее 1 МГц не превышает 15,4 пФ.