Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 31.03.2016, 15:12   #1
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 42
Сообщений: 256
Вес репутации: 617/37
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию STM32F103, не попадаю в прерывание от DMA

Уважаемые коллеги, использую DMA для передачи данных по USART1, при помощи функции:
Код:
//Функция инициирует передачу len байт данных из области *src
void usart1_put_data(unsigned char* src,uint16_t len)
{
//Переменная - признак занятости DMA для передачи данных по USART1. Если при передачи данных
//возникает ошибка, usart1_tx_busy=-1
usart1_tx_busy=1;
//Разрешение использования USART1 DMA для передачи
USART1->CR3|=USART_CR3_DMAT;
//Настойка канала CH4 модуля DMA1
//Канал 4 модуля DMA1 используем для передачи данных  в передатчик USART1 (USART1->DR)
//Разрешаем тактирование модуля DMA1
RCC->AHBENR|=RCC_AHBENR_DMA1EN;
//Указываем адрес периферии - регистр USART1->DR
DMA1_Channel4->CPAR|=(uint32_t)(&USART1->DR);
//Задаем адрес памяти - базовый адрес массива в RAM 
DMA1_Channel4->CMAR=(uint32_t)(src);
//Количество пересылаемых значений
DMA1_Channel4->CNDTR=len;
DMA1_Channel4->CCR=	
	//Указываем направление передачи данных, из памяти в периферию
	DMA_CCR4_DIR|\
	//Адрес памяти инкрементируем после каждой пересылки 
	DMA_CCR4_MINC|\
	//Разрешаем прерывания от модуля DMA1 канал CH4 по ошибке
	DMA_CCR4_TEIE|\
	//Разрешаем прерывания от модуля DMA1 канал CH4 по завершению передачи
	DMA_CCR4_TCIE|\
	//Разрешаем работу канала CH4 DMA1 
	DMA_CCR4_EN;
//Настроим приоритет прерываний от модуля DMA1 канал CH4 (самый низкий)
NVIC_SetPriority(DMA1_Channel4_IRQn,15);
//Разрешаем прерывания от модуля DMA1 канал CH4 в NVIC
NVIC_EnableIRQ(DMA1_Channel4_IRQn);
}
А вот обработка прерывания:
Код:
//Функция обработки прерывания от DMA1 канал 4
void DMA1_Channel4_IRQHandler(void)
{
if(DMA1->ISR&DMA_ISR_TCIF4)
	{
	//Флаг успешной передачи данных
	//Сброс флага (записью 1 в регистр очистки флагов IFCR)
	DMA1->IFCR|=DMA_ISR_TCIF4;
	//Признак успешной передачи данных
	usart1_tx_busy=0;
	}
else
if(DMA1->ISR&DMA_ISR_TEIF4)
	{
	//Флаг ошибки при передачи данных
	//Сброс флага (записью 1 в регистр очистки флагов IFCR)
	DMA1->IFCR|=DMA_ISR_TEIF4;
	//Признак ошибочной передачи данных
	usart1_tx_busy=-1;
	}
//Выкючение канала
DMA1_Channel4->CCR&=~DMA_CCR4_EN;
//Запрет использования DMA для перелачи
//USART1->CR3&=~USART_CR3_DMAT;
}
Строка передается, в прерывание не попадаю. Чего то забыл указать. Никак не соображу.
Pasha_Bi вне форума   Ответить с цитированием
Старый 31.03.2016, 15:23   #2
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Pasha_Bi, проект часом не в плюсах сделан ?
dosikus вне форума   Ответить с цитированием
Старый 31.03.2016, 15:26   #3
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 42
Сообщений: 256
Вес репутации: 617/37
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Keil 5.17. Я правильно понял вопрос? Что за плюсы? С++? Нет.
Pasha_Bi вне форума   Ответить с цитированием
Старый 31.03.2016, 15:42   #4
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Точно? Расширение исходников с а не cpp?
Проект - в студию...
dosikus вне форума   Ответить с цитированием
Старый 31.03.2016, 18:50   #5
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 42
Сообщений: 256
Вес репутации: 617/37
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Конечно, С#.
Завтра урежу до минимума и выложу. Сейчас задёргали меня, некогда.
Спасибо за желание помочь.
P.S. Значит "на вскидку" ничего не находится.
Pasha_Bi вне форума   Ответить с цитированием
Старый 31.03.2016, 19:18   #6
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 42
Сообщений: 256
Вес репутации: 617/37
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Вот нашлась минутка.
У меня в редакторе tab size=4. Немного нестандартно я пишу (отступы фигурных скобок я имею ввиду), знаю, но переучиваться уже похоже поздно. Не ругайтесь.
Вложения
Тип файла: rar TestUart.rar (135.2 Кб, 6 просмотров)
Pasha_Bi вне форума   Ответить с цитированием
Старый 31.03.2016, 22:48   #7
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,285
Вес репутации: 4191/114
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
Уважаемые коллеги, использую DMA для передачи данных по USART1, при помощи функции:
...
Строка передается, в прерывание не попадаю. Чего то забыл указать. Никак не соображу.
И помог бы да не могу, т.к. использую SPL, там передача данных с использованием DMA заработала. А вы используете письмо "в регистрах" с вызовом функций CMSIS, т.е. синтаксис другой.

Попробовал я перейти с SPL на "письмо в регистрах" и функции CMSIS и не смог. Сложности возникли с настройкой периферии, приоритетами прерываний. Добавил прерывание от таймера и пару часов искал, что пропустил, нашел, забыл записать значение в регистр автозагрузки.

В общем при использовании SPL процесс хоть как-то стандартизирован (как настраивать периферию, прерывания, приоритеты), а при использовании письма в регистрах и функций CMSIS у каждого автора будет своя последовательность настройки периферии.

В нескольких PDF-ах пришлось ковыряться, чтобы собрать данные о настройках прерываний, групп прерываний, приоритетов, субприоритетов, как разрешать прерывания. При вашем синтаксисе много PDF-ов придется пересматривать. C SPL их почти не открываю, пользуюсь файлами SPL, там все нужное описывается.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 01.04.2016, 08:01   #8
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/97
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

А файл interrupt.c есть вообще в проекте? Что-то не нету его.
Цитата:
Сообщение от Pridnya Посмотреть сообщение
...
Попробовал я перейти с SPL на "письмо в регистрах" и функции CMSIS и не смог. Сложности возникли с настройкой периферии, приоритетами прерываний. Добавил прерывание от таймера и пару часов искал, что ...
На первых порах тут очень не грех с использованием библиотек программить. Т.к. реально очень крутая периферия. Но потом можно и отказаться.
AleksBak вне форума   Ответить с цитированием
Старый 01.04.2016, 08:28   #9
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,285
Вес репутации: 4191/114
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от AleksBak Посмотреть сообщение
А файл interrupt.c есть вообще в проекте? Что-то не нету его.
В его проекте таблица векторов в файле sturtup.c, а функции-обработчики прерываний (хэндлеры) в файле usart.c, так можно писать.

Цитата:
Сообщение от AleksBak Посмотреть сообщение
На первых порах тут очень не грех с использованием библиотек программить. Т.к. реально очень крутая периферия. Но потом можно и отказаться.
Сам я использую SPL. А многие так и делают, посмотрят как функциях SPL сделано, а потом переписывают в регистрах. И у каждого кодера своя последвовательность действий. Недавно наткнулся на синтаксис, не мог найти откуда в функцию CMSIS передается параметр, его нет в CMSIS, оказалось, что куски кода скопированы из SPL, чтобы вставить в CMSIS. И попробуй найди в документации. И есть такие, которые вместо функций CMSIS пишут в регистрах, на Ассемблере еще бы.

Понадобилось разобраться с прерываниями, группами, приоритетами и динамическим изменением приоритетов, пришлось читать 4 документа (STM32F4):
RM0090 May 2014 Rev7.pdf
Cortex™-M4 Technical Reference Manual - 11 June 2013.pdf
Cortex™-M4 Devices - Generic User Guide.pdf
PM0214 CortexM4 Programming Manual.pdf
причем в одном написано, что процессор поддерживает до 240 прерываний и 256 уровней приоритета, а в другом, что векторов всего 82, а в регистре приоритетов реализовано только 4 старших бита (16 уровней приоритета), а в третьем описаны регистры прерываний, приоритетов. Собери из нескольких, а потом кодируй, ошибешься - спроси, в твоем коде сразу найдут ошибку.
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 01.04.2016 в 08:46.
Pridnya вне форума   Ответить с цитированием
Старый 01.04.2016, 09:06   #10
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/97
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

А вот эти случайно не ARM-овские:
Цитата:
Cortex™-M4 Technical Reference Manual - 11 June 2013.pdf
Cortex™-M4 Devices - Generic User Guide.pdf
? Если да - то все-таки более общее описание это.
AleksBak вне форума   Ответить с цитированием
Старый 01.04.2016, 09:27   #11
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Pasha_Bi, в проекте отсутствует interrupt.c ...

Код трудно читаем - комменты все забивают, так и не понял на какие пины повешен UART1?
Обычно при инициализации модуля все в этот модуль и включается , в том числе и пины .
Вычисление BAUDRATE так же SPL'ней попахивает.
Вот пример с UART.
Код:
void UsartInit(void)
 {
   RCC->APB2ENR |=RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN;
    
    GPIOA->CRH &=~ (GPIO_CRH_CNF10 |GPIO_CRH_CNF9|GPIO_CRH_MODE10);
    GPIOA->CRH |= GPIO_CRH_CNF10_0 |GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9;
    
    USART1->CR1 |= USART_CR1_TE |USART_CR1_RE |USART_CR1_RXNEIE;
    USART1->BRR =(USARTCLK+BAUDRATE/2)/BAUDRATE;
    USART1->CR1 |=USART_CR1_UE;
    
    NVIC_SetPriority(USART1_IRQn,15);
    NVIC_EnableIRQ(USART1_IRQn);
   
   
 }

И не слушай адептов SPL - все им всегда будет сложно и не понятно.

Последний раз редактировалось dosikus; 01.04.2016 в 09:46.
dosikus вне форума   Ответить с цитированием
Старый 01.04.2016, 09:48   #12
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,285
Вес репутации: 4191/114
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от AleksBak Посмотреть сообщение
А вот эти случайно не ARM-овские:

? Если да - то все-таки более общее описание это.
Это более общие, причем информация в PM0214 дублируется информация из Cortex™-M4 Devices - Generic User Guide, в частности на NVIC.
Цитата:
Сообщение от dosikus Посмотреть сообщение
Pasha_Bi, в проекте отсутствует interrupt.c ...
Согласен. Сейчас у себя попробовал, удалил из проекта файл stm32f4xx_it.c, а в нем прототипы и сами функции
Код:
void NMI_Handler(void);
void HardFault_Handler(void);
void MemManage_Handler(void);
void BusFault_Handler(void);
void UsageFault_Handler(void);
void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
не работают прерывания, хотя обработчики прерываний есть в другом файле.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 01.04.2016, 10:00   #13
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,532
Вес репутации: 4855/151
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Попробовал я перейти с SPL на "письмо в регистрах" и функции CMSIS и не смог. Сложности возникли с настройкой периферии, приоритетами прерываний. Добавил прерывание от таймера и пару часов искал, что пропустил, нашел, забыл записать значение в регистр автозагрузки.

В общем при использовании SPL процесс хоть как-то стандартизирован (как настраивать периферию, прерывания, приоритеты), а при использовании письма в регистрах и функций CMSIS у каждого автора будет своя последовательность настройки периферии.
присоединюсь...
"письмо в регистрах" - это уже высший пилотаж, отнюдь не для начинающих. во всяком случае не для старта достаточно сложной периферии первого проекта.
и вываливать в конфу этакое г.внище, типа "не работает" - как минимум просто неуважение. Есть же в наличии рабочие примеры, ну и ковыряйся потихоньку дальше.

с годами возникает желание все упрощать, а не усложнять. уменьшать степень привязанности. к чему-либо вообще.
Greg вне форума   Ответить с цитированием
Старый 01.04.2016, 10:03   #14
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/97
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от dosikus Посмотреть сообщение
Pasha_Bi, в проекте отсутствует interrupt.c ...
Это самое интересное - похоже ссылка на файл, который где-то непонятно где находится. Может из-за этого и не работает все. Если удалить эту ссылку, то все собирается. А после двойного знака комментария сразу добавил пробел, а то невозможно было смотреть на окно редактора где его большая часть забита "зелеными" символами (знаками из комментариев).

Цитата:
Сообщение от dosikus Посмотреть сообщение
...
Вычисление BAUDRATE так же SPL'ней попахивает...
...
Цитата:
Сообщение от dosikus Посмотреть сообщение
...
И не слушай адептов SPL - все им всегда будет сложно и не понятно.
Надо было бы на этом форуме смайлик бесконечного хохота, причем громкого такого, добавить. Такого чтоб на весь стадион хватило - вот тогда наверно это был бы любимый смайлик в таких темах dosikus-а.
AleksBak вне форума   Ответить с цитированием
Старый 01.04.2016, 10:13   #15
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/97
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
не работают прерывания, хотя обработчики прерываний есть в другом файле.
Эти "обработчики" (на самом деле просто заглушки) находятся в асм-мовом файле начальной инициализации. Насколько я понял. Вообще тут (с точки зрения тех же ПЫК-ов) не только железо гораздо сложнее, но и работа с исходниками (тулчейны их операторы и т.д. и т.п.).
Цитата:
Сообщение от Pridnya Посмотреть сообщение
Это более общие, причем информация в PM0214 дублируется информация из Cortex™-M4 Devices - Generic User Guide, в частности на NVIC.
...
Ну так это все-таки именно ARM-овские файлы? Правильно? А на них следует опираться в целях как бы расширения кругозора/понятия архитектуры и т.п. А главное все-таки именно стм-овские я как понял.
AleksBak вне форума   Ответить с цитированием
Старый 01.04.2016, 10:25   #16
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Pridnya, Дим там много чего. Счас доделаю -выложу.
dosikus вне форума   Ответить с цитированием
Старый 01.04.2016, 10:29   #17
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,285
Вес репутации: 4191/114
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Greg Посмотреть сообщение
присоединюсь...
"письмо в регистрах" - это уже высший пилотаж, отнюдь не для начинающих. во всяком случае не для старта достаточно сложной периферии первого проекта.
...
с годами возникает желание все упрощать, а не усложнять. уменьшать степень привязанности. к чему-либо вообще.
Спасибо! Я согласен, что это высший пилотаж, что к этому нужно стремиться, может, к пенсии удастся написать свою библиотеку в регистрах, хоть для одного какого микроконтроллера. А пока результат такой: с SPL удалось быстро стартануть и написать проект 128 килобайт, а без неё не могу, не получается сделать то же самое.

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Ну так это все-таки именно ARM-овские файлы? Правильно? А на них следует опираться в целях как бы расширения кругозора/понятия архитектуры и т.п. А главное все-таки именно стм-овские я как понял.
Только сейчас вопрос понял. Да, это файлы ARM-овские, т.е. фирмы ARM, а мне нужно смотреть только DataSheet, RM0090, PM0214 - это уже файлы производителя микроконтроллера STMicroelectronics.
Нужно как-то научиться пользоваться документацией, какая-то она хреновая, или я не умею. В той же документации Renesas (я раньше использовал) все примеры для инициализации периферии в регистрах, причем описан каждый режим в регистрах, последовательность инструкций, все просто и понятно, что как настроить, настроил и пиши дальше на Си.

Цитата:
Сообщение от dosikus Посмотреть сообщение
Pridnya, Дим там много чего. Счас доделаю -выложу.
Где документацию берешь (как в регистрах писать, правильная последовательность инициализации, во время работы как переключать...)? Ну не передираешь же у кого-то, это мы бы уже нашли сами. Из головы что ли?
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 01.04.2016 в 10:40.
Pridnya вне форума   Ответить с цитированием
Старый 01.04.2016, 10:53   #18
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 55
Сообщений: 2,574
Вес репутации: 3624/94
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
И помог бы да не могу, т.к. использую SPL, там передача данных с использованием DMA заработала. А вы используете письмо "в регистрах" с вызовом функций CMSIS, т.е. синтаксис другой.
От того и не можешь... что нет знаний как оно работает... или как оно должно работать... А СПЛ... не СПЛ... это уже дело пятое... если не десятое...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 01.04.2016, 10:58   #19
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Где документацию берешь (как в регистрах писать, правильная последовательность инициализации, во время работы как переключать...)? Ну не передираешь же у кого-то, это мы бы уже нашли сами. Из головы что ли?
Дим все есть в RM, в вашей же SPL'не лишнего выше потолка.


Pasha_Bi, стартап что в проекте выкинь - это старая версия .
Описания хэндлеров не соответствуют...
Вменяемый прилагаю.
Далее - самописный систем_инит конечно хорошо, НО НЕ ДЛЯ НАЧИНАЮЩИХ !
Можешь в такие дебри влететь.
Пока можешь заменить статрап и вписать заглушку в main.c.
Код:
void SystemInit(void)
{
}
Или заремарить вызов в стартапе.
Код:
    IMPORT  __main
     IMPORT  SystemInit
                ; LDR     R0, =SystemInit
                 ;BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP
В остальном чувствуется стаж работы с восьмибитаками, все через Ж...
Без обид.
Позже выложу рыбу на 103ьи ...
Вложения
Тип файла: rar startup_stm32f10x_md.rar (2.5 Кб, 7 просмотров)
dosikus вне форума   Ответить с цитированием
Старый 01.04.2016, 10:59   #20
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 55
Сообщений: 2,574
Вес репутации: 3624/94
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Нужно как-то научиться пользоваться документацией, какая-то она хреновая, или я не умею.
Нужно... очень нужно... И никакая она не хреновая... к ней просто привыкнуть нужно... а не зацикливаться... вспоминая документацию другого производителя...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 01.04.2016, 11:11   #21
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,285
Вес репутации: 4191/114
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от dosikus Посмотреть сообщение
Дим все есть в RM, в вашей же SPL'не лишнего выше потолка.
Да ладно, я то уже искал, не все там есть. Вот на STM32F407 тот же NVIC в RM0090 из 1713 страниц на полстраницы и то отсылает к PM0214, а там еще 243 страницы. Еще соберешься работать с FLASH-памятью придется открыть PM0081, там поменьше 21 страница.

Вот никак не пойму, когда может понадобиться динамическое изменение приоритетов прерываний?

Вроде как по умолчанию все прерываний находятся в одной группе, и имеют 16 уровней субприоритета, при этом если субприоритет не выставлен, то он одинаковый у всех прерываний (кстати, чему он равен? 15? наименьший или 0? наибольший?). Получается, что в данном случае приоритет (по умолчанию) выше у того вектора у которого меньше номер (IRQ0 выше, чем у IRQ1...)

Прерывания могут объединяться в группы (по приоритетам), внутри групп приоритет определяется субприоритетом. Не пойму, можно ли сделать, чтобы прерывание с меньшим номером, которое по умолчанию IRQ0 имело меньший приоритет чем IRQ1, т.е. сделать не по умолчанию, а наоборот?

Как функциями CMSIS разделить регистр приоритета на две части (приоритет и субприоритет)?
Миниатюры
RM0090.PNG  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 01.04.2016 в 11:20.
Pridnya вне форума   Ответить с цитированием
Старый 01.04.2016, 11:19   #22
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/97
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от dosikus Посмотреть сообщение
...
Далее - самописный систем_инит конечно хорошо, НО НЕ ДЛЯ НАЧИНАЮЩИХ !
...
Что-то уже непонятно стало, что такое хорошо и что такое плохо тут.
AleksBak вне форума   Ответить с цитированием
Старый 01.04.2016, 11:21   #23
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

NVIC этож не периферия . Открываешь core_cm4.h и читаешь описания функций. Мало - идет на офсайт ARM- родителя...
По работе с флэшем весь интернет забит...
dosikus вне форума   Ответить с цитированием
Старый 01.04.2016, 11:22   #24
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 45
Сообщений: 3,477
Вес репутации: 5450/125
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Как функциями CMSIS разделить регистр приоритета на две части (приоритет и субприоритет)?
На кой х ? Если это выдумка SPL?
dosikus вне форума   Ответить с цитированием
Старый 01.04.2016, 11:26   #25
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,532
Вес репутации: 4855/151
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: STM32F103, не попадаю в прерывание от DMA

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Где документацию берешь (как в регистрах писать, правильная последовательность инициализации, во время работы как переключать...)? Ну не передираешь же у кого-то, это мы бы уже нашли сами. Из головы что ли?
там все не так и сложно, но это просто нужен опыт и наработка. т.е. постоянно быть в этой теме. а оно надо (и возможно ли?), это же мышеловка - посвящать свое время привязыванию себя же к заклинаниям по вызову периферии какой-то _одной_ компании-производтеля. полный junk food. ну да, продвинутая периферия, но это все не настолько важно, чтобы жертвовать туда время. за деревьями не видим леса, надо же и основной функционал тянуть, за что, собственно, деньги платят...
реально камень дает достаточную свободу ("128 килобайт"), чтобы вообще забыть о проблемах реализации. хотя "128" - это очень даже скромно.
что забавно, в подобных программах чистого ногодрыга (обращения к гпио) - пара ножек в паре функций помигать диодами.
Greg вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC vs AVR - быстродействие на математике tem-ya Микроконтроллеры других производителей 121 11.04.2011 13:32
Графические среды Vidoc Общетехнические вопросы 47 10.02.2010 06:18
Программная симуляция pic16F876 в MPLAB Timik Продукция MICROCHIP 2 12.10.2007 15:12
прерывание от TMR1 для PIC16F628A wws63 Общетехнические вопросы 1 23.07.2007 07:39


Часовой пояс GMT +3, время: 23:13.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot