Да, Вы правы. Это я ачипятался.durimar_13 писал(а): ↑07 авг 2026, 15:43 Я так понимаю, в Вашем сообщении должно быть:
1: adc_res_buf0
2: adc_res_buf1
3: adc_res_buf0
4: adc_res_buf1
....
Описание DMA в РП К1921ВГ1Т
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
RabidRabbit
- Сообщения: 259
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Спасибо, попробую.RabidRabbit писал(а): ↑07 авг 2026, 20:45Попробуйте всё же сброс периферии через регистры RCU->RSTDIS*durimar_13 писал(а): ↑07 авг 2026, 15:04 RST - это так кнопку "RESET" на плате я назвал. Не сам придумал, увидел у кого то...
В отладке вот на этом месте виснет при страте:
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Здравствуйте!
В РП написано что регистром RSTSYS можно сделать сброс МК.
Вопрос такой: это равносильно сбросу Внешним сигналом с вывода RST (активный уровень сигнала сброса – низкий)?
В какой последовательности заносить значения в поля:
RCU->RSTSYS_bit.KEY = 0xA55A;
RCU->RSTSYS_bit.RSTEN = 1;
Или наоборот
Нет ли каких подводных камней?
В РП написано что регистром RSTSYS можно сделать сброс МК.
Вопрос такой: это равносильно сбросу Внешним сигналом с вывода RST (активный уровень сигнала сброса – низкий)?
В какой последовательности заносить значения в поля:
RCU->RSTSYS_bit.KEY = 0xA55A;
RCU->RSTSYS_bit.RSTEN = 1;
Или наоборот
Нет ли каких подводных камней?
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
К сожалению всякие варианты сбросов
в самом начале функции main
int main(void){
// сброс всех!
// эти команды сбрасывавют биты включения
// периферийных блоков на соответвущих шинах
// RCU->RSTSYS_bit.KEY = 0xA55A;
// RCU->RSTSYS_bit.RSTEN = 1;
// RCU->RSTDISAPB0 = 0; // DMA
// RCU->RSTDISAPB1 = 0; // TMR
// RCU->RSTDISAPB2 = 0; // UART
// RCU->RSTDISAHB = 0; // для сброса АЦП и USB, GPIO
мне не помогают.
Почти через раз запуск в отладке приводит к зависанию.
Обычно вот здесь
while(1) // вечный цикл
{
if(dma_flg) // TODO: Виснет в этом месте, требуется кнопка RESET! В чем дело?
{
dma_flg = 0;
........
Если нажать на плате кнопку рестарта, программа перезапускается и работает.
Но иногда и инициализация даже не получается. висит и все тут. Никакие кнопки не помогают.
Где мне еще порыть, кто знает?
в самом начале функции main
int main(void){
// сброс всех!
// эти команды сбрасывавют биты включения
// периферийных блоков на соответвущих шинах
// RCU->RSTSYS_bit.KEY = 0xA55A;
// RCU->RSTSYS_bit.RSTEN = 1;
// RCU->RSTDISAPB0 = 0; // DMA
// RCU->RSTDISAPB1 = 0; // TMR
// RCU->RSTDISAPB2 = 0; // UART
// RCU->RSTDISAHB = 0; // для сброса АЦП и USB, GPIO
мне не помогают.
Почти через раз запуск в отладке приводит к зависанию.
Обычно вот здесь
while(1) // вечный цикл
{
if(dma_flg) // TODO: Виснет в этом месте, требуется кнопка RESET! В чем дело?
{
dma_flg = 0;
........
Если нажать на плате кнопку рестарта, программа перезапускается и работает.
Но иногда и инициализация даже не получается. висит и все тут. Никакие кнопки не помогают.
Где мне еще порыть, кто знает?
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Другие мои наработки так себя не ведут.
Вот же...
Вот же...
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
-
RabidRabbit
- Сообщения: 259
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
Скорее всего так RCU->RSTSYS = 0xA55A0001;durimar_13 писал(а): ↑07 авг 2026, 22:30 В РП написано что регистром RSTSYS можно сделать сброс МК.
Вопрос такой: это равносильно сбросу Внешним сигналом с вывода RST (активный уровень сигнала сброса – низкий)?
В какой последовательности заносить значения в поля:
RCU->RSTSYS_bit.KEY = 0xA55A;
RCU->RSTSYS_bit.RSTEN = 1;
Или наоборот
Нет ли каких подводных камней?
Но это будет сброс, равноценный аппаратному.
Проверьте, выведен ли у Вас на разъём JTAG сигнал nRST.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Вот еще раз прозвонил проводки между программатором и МОП
Я использую отладчик на отладочной плате NUKE для MIK32, использован FT2232HL.
В моей конструкции сигнал RST инверсный от этой платы, поступает на вход nRST, контакт 10 разъема JTAG МОП К1921ВГ1Т, а там - на МОП в схему сброса МК К1921ВГ1Т.
На МОП К1921ВГ1Т есть одиночный пин, обозначение пина - XP8, название TRST. Этот сигнал тоже может сбрасывать МК, но у меня он никак не может быть применен. Хотя для него из шлейфа я вывел отдельную "маму", но не подключаю.
Дело в том, что на стороне программатора эта "мама" подключена к линии TRST-инверсия, которая в свою очередь должна сидеть на ноге MIK32:43 P0.14. Поскольку на МОП NUKE перемычки от разъема JTAG до MIK32 сейчас сняты, то MIK32 отключен от JTAG. Получаем "чистый" отладчик. Линия TRST "висит в воздухе".
(МОП - макетно - отладочная плата.)
На других моих проектах и при использовании примеров зависаний я не наблюдаю.
Информация эта - просто инфа, ни к чему не обязывает.
Я, конечно, сам пытаюсь разобраться.
Я использую отладчик на отладочной плате NUKE для MIK32, использован FT2232HL.
В моей конструкции сигнал RST инверсный от этой платы, поступает на вход nRST, контакт 10 разъема JTAG МОП К1921ВГ1Т, а там - на МОП в схему сброса МК К1921ВГ1Т.
На МОП К1921ВГ1Т есть одиночный пин, обозначение пина - XP8, название TRST. Этот сигнал тоже может сбрасывать МК, но у меня он никак не может быть применен. Хотя для него из шлейфа я вывел отдельную "маму", но не подключаю.
Дело в том, что на стороне программатора эта "мама" подключена к линии TRST-инверсия, которая в свою очередь должна сидеть на ноге MIK32:43 P0.14. Поскольку на МОП NUKE перемычки от разъема JTAG до MIK32 сейчас сняты, то MIK32 отключен от JTAG. Получаем "чистый" отладчик. Линия TRST "висит в воздухе".
(МОП - макетно - отладочная плата.)
На других моих проектах и при использовании примеров зависаний я не наблюдаю.
Информация эта - просто инфа, ни к чему не обязывает.
Я, конечно, сам пытаюсь разобраться.
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Ага! Вот опять наблюдаю зависание. Теперь не использую TMR1, использую циклический режим ADC с задержками между перезапусками, остальное похоже. Опять при первом запуске в отладке виснет на ожидании флага от прерывания DMA.
while(samples_count < nsamples) // ждем и обрабатываем прерывания от DMA
{
if(dma_flg) // вот здесь никогда не установлен флаг при первом запуске.
{
dma_flg = 0;
for (unsigned int i = 0; i < 32 - 1; i++)
{
Если нажать RESET на плате, начинается еще одна итерация, но отрабатывает уже без зависания.
while(samples_count < nsamples) // ждем и обрабатываем прерывания от DMA
{
if(dma_flg) // вот здесь никогда не установлен флаг при первом запуске.
{
dma_flg = 0;
for (unsigned int i = 0; i < 32 - 1; i++)
{
Если нажать RESET на плате, начинается еще одна итерация, но отрабатывает уже без зависания.
С уважением, Виктор.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
В общем, как и ожидалось, такой мой подход, "по совету Алисы" совершенно не удовлетворителен.
Мало того, что подвисания, так еще и приемлемый результат для 100 выборок не удается получить на скорости семплирования больше 50 kSPS.
Плохо все.
Есть еще улучшения, которые посоветовал RabidRabbit. Надо пробовать.
Мало того, что подвисания, так еще и приемлемый результат для 100 выборок не удается получить на скорости семплирования больше 50 kSPS.
Плохо все.
Есть еще улучшения, которые посоветовал RabidRabbit. Надо пробовать.
С уважением, Виктор.
