1874ВЕ7Т

Модераторы: ea, Alis, pip, gurzzza, _sva_

sazonovsv
Сообщения: 56
Зарегистрирован: 02 сен 2014, 15:35

Re: JTAG-интерфейс и эмулятор JEM-96 (продолжение)

Сообщение sazonovsv »

sazonovsv писал(а):Здравствуйте!

4) Под управлением эмулятора микроконтроллер 1874ВЕ71Т неправильно формирует сигнал INST, что проверено с помощью осциллографа. В частности не всегда при выборке команды из ПЗУ сигнал INST=лог.1, что есть ОШИБКА эмулятора (аппаратная или программная), т.к. при одинаковом адресном пространстве внешних ПЗУ и ОЗУ сигнал INST - единственный способ их различить.
Здравствуйте!
Уточнение пункта 4.
Под управлением эмулятора микроконтроллер 1874ВЕ71Т неправильно формирует сигнал INST во время первичного чтения ПЗУ для последующего его сравнения с содержимым файла на диске, после чего и выводится сообщение о различии этих данныых
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: JTAG-интерфейс и эмулятор JEM-96 (продолжение)

Сообщение dav »

sazonovsv писал(а): Здравствуйте!
Уточнение пункта 4.
Под управлением эмулятора микроконтроллер 1874ВЕ71Т неправильно формирует сигнал INST во время первичного чтения ПЗУ для последующего его сравнения с содержимым файла на диске, после чего и выводится сообщение о различии этих данныых
Доброго времени суток!

В соответствии с особенностями архитектуры микроконтроллера при разделении адресного пространства на память команд и память данных сигналом INST становится не возможным чтение памяти команд из кода программы.
В связи с этим, в режиме отладки (с использованием отладочного монитора или JTAG) отсутствует возможность чтения памяти команд.
Таким образом, при разделении адресного пространства на память команд и память данных сигналом INST не возможна отладка программ средствами CodeMaster-96 и JEM-96.
sazonovsv
Сообщения: 56
Зарегистрирован: 02 сен 2014, 15:35

Re: JTAG-интерфейс и эмулятор JEM-96 (продолжение)

Сообщение sazonovsv »

dav писал(а): Доброго времени суток!

В соответствии с особенностями архитектуры микроконтроллера при разделении адресного пространства на память команд и память данных сигналом INST становится не возможным чтение памяти команд из кода программы.
В связи с этим, в режиме отладки (с использованием отладочного монитора или JTAG) отсутствует возможность чтения памяти команд.
Таким образом, при разделении адресного пространства на память команд и память данных сигналом INST не возможна отладка программ средствами CodeMaster-96 и JEM-96.
Здравствуйте!
Спасибо за ответ, но!
1) Что такое «чтение памяти команд из кода программы»? Код программы – это и есть команды. Их место размещения - это память кодов, т.е. память команд. И главное без эмулятора с помощью сигнала INST прекрасно разделяется память программы и память данных.
2) Если это особенность архитектуры, то сигнал INST не имеет никакого смысла. Разделяем память по адресам и всё!. Но тогда величина памяти программы будет меньше 64К и возникает противоречие с описанием внешней памяти в разделе 5 Тех.Описания.
3) В Тех.Описание ИМС 1874ВЕ71Т ничего не написано про такие «особенности архитектуры». Зато в таблице 20.1 написано «Сигнал INST» - «Выходной сигнал с высоким активным уровнем. Становится активным только во время цикла чтения внешней памяти. Высокий уровень сигнала INST информирует о том, что происходит выборка команды, низкий – чтение данных. Сигнал INST может использоваться в приложениях, когда требуется независимость областей памяти команд и данных».
Заметим, что и в Тех.Описании эмулятора JEM-96 про такую «особенность архитектуры» ничего не написано.
Так что это не «особенность архитектуры», а косяк архитектуры. Но мне, почему-то думается, что это ошибка не самого микроконтроллера, а ошибка эмулятора и всё можно поправить малой кровью.
4) Что делать разработчикам, которые не ожидали такой «особенности архитектуры», разработали аппаратуру, уже закупили у вас микроконтроллеры, смонтировали её, но не могут использовать эмулятор для отладки? Что делать-то?
5) И Вы так и не ответили на замечания 1) 2) 3) и 5) из моего поста «JTAG-интерфейс и эмулятор JEM-96 (продолжение)» от 06 окт 2016, 18:51
olesya
Сообщения: 7
Зарегистрирован: 08 май 2014, 08:46

Re: 1874ВЕ7Т

Сообщение olesya »

Здравствуйте!
Пытаемся наладить обмен МК с МКО по ГОСТу 52070-2003.
МК не реагирует на приходящие сигналы с П/П 5559ИН13У2, выпускаемые компанией НПО "Физика".
Между П/П и МК установлен Д-триггер.
Работаем на частоте 16 МГц.
На МК приходят следующие сигналы, приведенные на осциллограмме ниже:
CH1 - Прямой вход; CH2 - Инверсный вход.
CH1 - Прямой вход; CH2 - Инверсный вход.
Вход МК.jpg (38.13 КБ) 6527 просмотров
Подскажите, пожалуйста, будет ли МК воспринимать эти сигналы или не увидит синхросигнал?
Не могли бы Вы также привести список П/П, с которыми проводилась отработка?
Не мог ли бы Вы привести пример программной настройки модуля обмена МКО?
Заранее спасибо!
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1874ВЕ7Т

Сообщение dav »

olesya писал(а):Здравствуйте!
Пытаемся наладить обмен МК с МКО по ГОСТу 52070-2003.
МК не реагирует на приходящие сигналы с П/П 5559ИН13У2, выпускаемые компанией НПО "Физика".
Между П/П и МК установлен Д-триггер.
Работаем на частоте 16 МГц.
На МК приходят следующие сигналы, приведенные на осциллограмме ниже:
Подскажите, пожалуйста, будет ли МК воспринимать эти сигналы или не увидит синхросигнал?
Не могли бы Вы также привести список П/П, с которыми проводилась отработка?
Не мог ли бы Вы привести пример программной настройки модуля обмена МКО?
Заранее спасибо!
Доброго времени суток!
1. Мы проверяли работу ГОСТу 52070-2003 в МК 1874ВЕ7Т с приемо- передатчиками: EL-12 (Элкус), HI-1567 (Holt).
2. При работе контроллера на частоте 16Мгц (с отключенным режимом Slow) входные сигналы M_RxD и M_RxD_N от приемника рекомендуется синхронизировать по фронту сигнала CLKOUT с использованием D-триггера.
3. Во вложении пример работы ГОСТ 52070-2003 в режиме удаленного терминала.
Вложения
BSI_RT.zip
Пример работы ГОСТ 52070-2003 в режиме удаленного терминала
(24.34 КБ) 244 скачивания
Anatoly
Сообщения: 12
Зарегистрирован: 25 апр 2016, 17:38

Работа микросхемы с внешней памятью MRAM

Сообщение Anatoly »

Здравствуйте! Подскажите, пожалуйста, корректно ли использовать в качестве внешней памяти микросхемы MRAM? Не будет ли при этом каких-то проблем? Вопрос возник, т.к. в документации почти всюду упоминается использование флэш-памяти. У нас предполагается использование Everspin Technologies MR0A08BCYS35R (https://www.everspin.com/supportdocs/MR0A08BCYS35R)
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: Работа микросхемы с внешней памятью MRAM

Сообщение dav »

Anatoly писал(а):Здравствуйте! Подскажите, пожалуйста, корректно ли использовать в качестве внешней памяти микросхемы MRAM? Не будет ли при этом каких-то проблем? Вопрос возник, т.к. в документации почти всюду упоминается использование флэш-памяти. У нас предполагается использование Everspin Technologies MR0A08BCYS35R (https://www.everspin.com/supportdocs/MR0A08BCYS35R)
Для микроконтроллера не имеет значения тип внешней памяти: SRAM, MRAM или Flash. Единственное, необходимо учитывать время ожидания МК при обращении к внешней памяти - оно должно быть не менее времени цикла чтения, указанного в параметрах на используемую память.
В микроконтроллере 1874ВЕ7Т предусмотрен режим работы с медленной внешней памятью. Для этого необходимо вывод Ready подключить к gnd, в этом случае время обращения к внешней памяти увеличивается за счет вставки дополнительных циклов ожидания, количество которых настраивается битами IRC0(CCR[4]) и IRC1(CCR[5]) регистра CCR.
Так при тактировании МК 20МГц, CCB=2F, вывод Ready подключен к gnd,время цикла чтения составляет 447,8нс.
При тактировании МК 20МГц, CCB=1F, вывод Ready подключен к gnd, время цикла чтения составляет 347,6нс.
При тактировании МК 20МГц, CCB=1F, вывод Ready подключен к vcc, время цикла чтения составляет 146,2нс.
Для внешнего управления задержкой при обращении к внешней памяти необходимо установить бит IRC0 и IRC1 регистра CCB для вставки циклов ожидания до тех пор, пока сигнал READY в низком состоянии. В этом случае у микросхемы памяти необходимо наличие сигнала готовности.

После сброса в контроллере формируется значение регистра CCR= 2Ch, т.е. при Ready=0, устанавливается максимальное время ожидания при обращении к внешней памяти в 3 цикла ожидания, и далее происходит считывание "пользовательского" значения CCB по адресу внешней памяти 0x2018 и контроллер переключается на работу в режиме согласно данным по адресу 0x2018.

В параметрах для MRAM MR0A08B указано Read cycle time не менее 35ns, что позволяет использовать ее с контроллером 1874ВЕ7Т и на максимальной частоте 24МГц.
Anatoly
Сообщения: 12
Зарегистрирован: 25 апр 2016, 17:38

Re[2]: Работа микросхемы с внешней памятью MRAM

Сообщение Anatoly »

Спасибо большое за такой подробный ответ!
Anatoly
Сообщения: 12
Зарегистрирован: 25 апр 2016, 17:38

Вопросы по UART и АЦП

Сообщение Anatoly »

Здравствуйте, помогите, пожалуйста, ещё по таким вопросам:

1. У меня программа должна работать с 2-мя UART-ами. Насколько вижу, прерывание INT08 задействовано и для UART0 и для UART1. Как грамотно различить в обработчике прерывания по какому из них пришёл байт? Проверять поле RI для каждого из регистров SP_STAT0 и SP_STAT1? А если посылка придёт практически одновременно по обоим портам не окажется ли так, что этот флаг будет установлен и там, и там? (т.е. «одновременно» у меня будут работать 2 одинаковых обработчика прерывания, если я явно не использую пару __DI()-__EI() в функции-обработчике).

2. Насколько увидел, функция printf() и подобные работает с UART0. Есть ли возможность программно выбирать с каким портом взаимодействовать?

3. Не совсем разобрался с подачей напряжений на АЦП… У нас АЦП будет работать в режиме однополярного включение входа. Напряжения, которые нам нужно измерять от 0 до 3.3В. Какие необходимо подключать внешние напряжения (опорные ADC_REFH, ADC_REFL)? Нужно ли что-то подключать для выбора средней точки? (внутренне или внешне?)

4. В документации сказано, что АЦП 12-разрядный с двумя дополнительными аппаратными битами повышения точности. Имеет ли какое-то значение разделение на 12+2, или я могу без оговорок просто считать АЦП 14-разрядным? (В коде это будет просто выражено как ADC_RESULT&0x3FFF – «вырезали» 14 разрядов, как приведено в примерах)
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: Вопросы по UART и АЦП

Сообщение dav »

Anatoly писал(а):Здравствуйте, помогите, пожалуйста, ещё по таким вопросам:

1. У меня программа должна работать с 2-мя UART-ами. Насколько вижу, прерывание INT08 задействовано и для UART0 и для UART1. Как грамотно различить в обработчике прерывания по какому из них пришёл байт? Проверять поле RI для каждого из регистров SP_STAT0 и SP_STAT1? А если посылка придёт практически одновременно по обоим портам не окажется ли так, что этот флаг будет установлен и там, и там? (т.е. «одновременно» у меня будут работать 2 одинаковых обработчика прерывания, если я явно не использую пару __DI()-__EI() в функции-обработчике).

2. Насколько увидел, функция printf() и подобные работает с UART0. Есть ли возможность программно выбирать с каким портом взаимодействовать?

3. Не совсем разобрался с подачей напряжений на АЦП… У нас АЦП будет работать в режиме однополярного включение входа. Напряжения, которые нам нужно измерять от 0 до 3.3В. Какие необходимо подключать внешние напряжения (опорные ADC_REFH, ADC_REFL)? Нужно ли что-то подключать для выбора средней точки? (внутренне или внешне?)

4. В документации сказано, что АЦП 12-разрядный с двумя дополнительными аппаратными битами повышения точности. Имеет ли какое-то значение разделение на 12+2, или я могу без оговорок просто считать АЦП 14-разрядным? (В коде это будет просто выражено как ADC_RESULT&0x3FFF – «вырезали» 14 разрядов, как приведено в примерах)
Доброго времени суток!

1. В данной ситуации необходимо проверять 6 бит RI регистров SP_STAT0 и SP_STAT1. В микроконтроллере только один вектор прерывания для uart0 и uart1, поэтому возможно использовать только один обработчик прерывания.

Код: Выделить всё

void IRQ_UART()
{
  _di_();
   if (SP_STAT0&0x40)     //Обрабатываем прерывание по приему uart0
   {
      byte_uart0 = SBUF_RX0;
      flag_uart0 = 1;
   }
   if (SP_STAT1&0x40)    //Обрабатываем прерывание по приему uart1
   {
      byte_uart1 = SBUF_RX1;
      flag_uart1 = 1;
   }
  _ei_();
}
2. В этом случае проще использовать потоки ввода-вывода и функцию fprintf(). В архиве пример рабочей области CodeMaster-96 c данной реализацией ftrm0 - объект типа FILE для работы с uart0, ftrm1 - для работы с uart1; set_br_uart0, set_br_uart1 - функции для изменения скорости обмена для uart0 и uart1, соответственно. В примере также используется обработчик прерывания по первому вопросу.

3. Максимальное значение диапазона преобразования АЦП составляет 2,1В (Ref_lo = 0.6В, Ref_hi = 2.7В). Для обеспечения необходимого диапазона входных напряжений от 0 до 3.3В потребуется на входе канала АЦП поставить делитель напряжения(для масштабирования диапазона входного сигнала до максимального значения диапазона преобразования АЦП 2.1В) и неинвертирующий сумматор для задания смещения нижней границы входного сигнала до уровня Ref_lo

4. Да можно считать что АЦП 14-разрядный
Вложения
trmUART01.zip
(12.35 КБ) 238 скачиваний
Ответить

Вернуться в «Микроконтроллер 1874ВЕ7Т»