ICyK
Добрый день!
В связи с разработкой нового отладочного комплекта ПО старой ревизии теперь предоставляется по запросу на почту support@dcsoyuz.ru.
Дополнительно отправили ответ вам на электронную почту.
ICyK
Добрый день!
В связи с разработкой нового отладочного комплекта ПО старой ревизии теперь предоставляется по запросу на почту support@dcsoyuz.ru.
Дополнительно отправили ответ вам на электронную почту.
Здравствуйте!
Имею на столе отладочный комплект последней версии. Работаю в Keil_5.
Можно ли посмотреть в отладчике состояние регистров периферийных устройств, например
GPIOA?
Ещё вопрос: загрузила прилагаемый проект Exampl (мигание 4 светодиодов).
На выводе GPIOB_1 (RC_CLOCKOUT) вижу меандр 3 МГц. Кварцевый резонатор на плате 4 МГц.
Регистры конфигурации я не меняла, при включении они равны 0.
Откуда берётся частота на выводе, который я не конфигурировала?
Спасибо
Elena
Состояние регистров периферийных устройств можно посмотреть по нажатию «View» –> «Watch Windows» –> «Watch 1» (Руководство пользователя Приложение А, стр.16, пункт “Просмотр состояния переменных”)
Вывод GPIOB_1 (RC_CLOCKOUT) при TM=1 (режим отладки в Keil) работает как выход внутреннего RC-генератора. При этом частота по умолчанию не настроена. Для настройки необходимо записать биты в регистры ANALOG_O_RC_R и ANALOG_O_RC.
При TM=0 вывод работает как GPIOB_1.
Как настроить отладчик, чтобы увидеть регистры ANALOG_CFG?
Как изменить частоту внутреннего RC?
В проект ANALOG_CFG добавила переменные analog_o_rc = ReadReg(ANALOG_O_RC) и
analog_o_rc_r = ReadReg(ANALOG_O_RC_R)
Записывала максимальные и минимальные значения в регистры ANALOG_O_RC и ANALOG_O_RC_R.
Переменные analog_o_rc, analog_o_rc_r в окне Watch1 всегда равны 0,
частота на выводе GPIOB_1 не изменяется.
Я не могу понять, в чем дело. Помогите пожалуйста разобраться.
Выяснила, что запись
WriteReg(ANALOG_O_RC, 0×7F) и
WriteReg(ANALOG_O_RC_R, 0×00)
устанавливает минимальную частоту внутреннего RC генератора ( 34.6 кГц ),
а последующее чтение регистров
analog_o_rc = ReadReg(ANALOG_O_RC) и
analog_o_rc_r = ReadReg(ANALOG_O_RC_R)
меняет ( 333,33 кГц )
Здравствуйте!
Данные регистры доступны только для записи (см. спецификацию 105-003 - регистры модуля ANALOG_CFG - Доступ “W”, т.е. write). Имеет смысл считывать статусные регистры при отладке, например, value = ReadReg(UART0_ST0); В вашем случае при попытке чтения регистров происходит сброс записанных значений и устанавливаются значения по умолчанию (0) и частота RC также устанавливается по умолчанию. Для настройки необходимо просто записать значения в регистры и контролировать частоту на выходе GPIOB_1 (чтение не производить).
Здравствуйте!
Правильно я понимаю, линии GPIOC_0 и GPIOC_1, к которым подключены эти кнопки,
в тестовом режиме ( SOFT ) заняты JTAG?
Т.е. использовать их в режиме SOFT нет возможности?
Спасибо
Elena Здравствуйте!
Все верно.
Их можно использовать при программировании через приложение DCSProg-6.exe (Микросхема -> Прошить ОЗУ). После программирования таким способом вывод “ТМ” микросхемы опускается в лог. “0”, и выводы JTAG (GPIOC_0, GPIOC_1, GPIOC_2, GPIOC_3) и выводы GPIOB_0, GPIOB_1 становятся портами входа/выхода.
В тестовом проекте Sleep_ex при переключении системной частоты с внешней HTAL на внутренний RC
в регистр управления CMM_CTRL последовательно записываются константы 0х6, 0х7, ожидание сброса бита SWITCH в регистре статуса CMM_ST и запись в CMM_CTRL константы 0х5. Это не соответствует спецификации (версия 1.5, стр. 43). Как правильно переключать частоту?
Elena
Добрый день!
Данный проект написан под предыдущую ревизию МК.
Актуальный проект ниже. Обновили его также в разделе “Отладочные комплекты”.
#include "reg51.h"
sbit gpioa_6 = 0x86;
void main (void)
{
WriteReg(FSM_PRD2, 0x01); //value for FSM_H
WriteReg(FSM_PRD1, 0x01); //value for FSM_M
WriteReg(FSM_PRD0, 0xFF); //value for FSM_L
WriteReg(GPIOA_DIR_SET, 0x40); //GPIOA_6 is output
while (1)
{
WriteReg(CMM_CTRL, 0x01); //clocking from RC
while((ReadReg(CMM_ST)&0x2)==0x2); //Waiting for switching to frequency
gpioa_6 = 1; //High level
WriteReg(FSM_CTRL, 0x01); //Enable switch frequency module
gpioa_6 = 0; //Low level
WriteReg(CMM_CTRL, 0x00); //clocking from xtal
while((ReadReg(CMM_ST)&0x2)==0x2); //Waiting for switching to frequency
}
}
Здравствуйте!
В программе DCSProg-6 не работают горячие клавиши, но это не главное.
Главный вопрос по использованию программатора:
В отладчике кнопки Step и Step Over не работают: значение PC не меняется.
Keil V5.38.0.0
Что-то у меня не получается. Модифицировала тестовый проект GPIO для кнопок.
Установила перемычки на ХР18 и ХР19 для установки в “1” GPIOC_0 и GPIOC_1.
Через приложение DCSProg-6.exe загрузила файл и прошила ОЗУ.
На выводах GPIOC_0 и GPIOC_1 при нажатии кнопок устанавливаются единицы, а лампочки не горят.
Программа не запускается? Нет тактовой от ZQ1? Или я уже что-то сожгла?

Внешняя тактовая частота для процессора STM и для процессора 5400ТР105 от ZQ1?
Может быть, попробовать перейти на тактирование от внутреннего RC?
Elena
После прошивки ОЗУ светодиоды включаются по очереди?
При этом закрыта ли отладка в Keil?
Работа в отладчиком и DCSProg6 одновременно невозможна.
Elena
Здравствуйте!
С текущей версией микроконтроллера 5400ТР105-003 кнопка Step не работает.
Команда Step Over будет работать только если на входе в функцию стоит PC.
Elena
Частота процессора STM формируется отдельно (внутренним генератором). Частота для 5400ТР105-003 задается с помощью внешнего генератора по умолчанию. Если прожечь бит 5 в регистре ANALOG_O_PLL, то микросхема будет тактироваться в том числе и от внешнего кварцевого резонатора (ZQ1).
Elena
Проверили данный проект. Проект работает.
Что бы исключить вероятность некорректной работы микросхемы загрузите стандартный проект Example и проверьте, что он корректно отрабатывает.