реклама на сайте
подробности

 
 
> Без прерываний
Ekka
сообщение Jul 27 2016, 11:26
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Привет всем) Такой вопрос. Возможно ли БЕЗ прерываний сделать следующее:

у меня есть пин, на котором периодически проходят импульсы,
По подъему нужно, чтобы включался таймер.

Но прерывания нельзя использовать. Читала про синхронизацию таймеров и источник их тактирования.
Но не могу вдуплить, как именно не счетчик дергать у таймера по импульсам канала, а включить его просто.

Может, кто посоветует, куда копать хотя бы.

МК - STM32f105

Сообщение отредактировал Ekka - Jul 27 2016, 11:27
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AVR
сообщение Aug 24 2016, 09:04
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Раз зашла тема про USB и уровень автора понятен (без обид sm.gif), то, возможно, такая ссылочка пригодится, мне она помогла понять: http://www.usbmadesimple.co.uk
Там автор рекламирует свою железяку, но можно сказать что бесплатная программа Wireshark (как минимум под ОС Linux) вполне себе сниффит USB, даже кажется с первых пакетов - может пригодиться для отладки.


--------------------
Go to the top of the page
 
+Quote Post
Ekka
сообщение Aug 30 2016, 13:52
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Всем спасибо большое за ответы))) все получилось)
Go to the top of the page
 
+Quote Post
AVR
сообщение Aug 30 2016, 14:22
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Ekka @ Aug 30 2016, 16:52) *
Всем спасибо большое за ответы))) все получилось)
Можно ли, для истории, пояснить что получилось и как?


--------------------
Go to the top of the page
 
+Quote Post
Ekka
сообщение Aug 31 2016, 06:47
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Мне нужно было, чтобы мк работал как хост и как ком-порт. Это получилось)
Go to the top of the page
 
+Quote Post
Ekka
сообщение Sep 7 2016, 08:33
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Здравствуйте, снова пишу сюда. Может, кто-то сталкивался с такой штукой. Пытаюсь работать с FATFS, монтирую флешку.
Непонятка в следующем: если вызываю функцию FATFS единожды в main в while(1){} - все работает.
Пытаюсь по-человечески перенести в прерывание по кнопке - виснет.

функция, которую вызываю в цикле мэина единожды:
Код
RESULT_MOUNT=f_mount(&FileSystem, "0", 1);

все нормально, возвращает FR_OK.
То же вызываю в прерывании по кнопке - зависает.
В чем может быть проблема? О_О

Сообщение отредактировал Ekka - Sep 7 2016, 08:59
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 7 2016, 11:06
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ekka @ Sep 7 2016, 14:33) *
Здравствуйте, снова пишу сюда. Может, кто-то сталкивался с такой штукой. Пытаюсь работать с FATFS, монтирую флешку.
Непонятка в следующем: если вызываю функцию FATFS единожды в main в while(1){} - все работает.
Пытаюсь по-человечески перенести в прерывание по кнопке - виснет.

А с чего Вы решили что эти функции могут вызываться из ISR??? 01.gif
Скорей всего они даже не могут вызываться из разных задач ОСРВ без спец. обёрток, обеспечивающих сериализацию. Про ISR даже речи быть не может.
Наиболее правильно все функции FatFS вызывать из одной задачи ОС.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Sep 7 2016, 13:33
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(jcxz @ Sep 7 2016, 11:06) *
А с чего Вы решили что эти функции могут вызываться из ISR??? 01.gif
Скорей всего они даже не могут вызываться из разных задач ОСРВ без спец. обёрток, обеспечивающих сериализацию. Про ISR даже речи быть не может.
Наиболее правильно все функции FatFS вызывать из одной задачи ОС.


Но я не использую никакую ОС. Объясните, пожалуйста, по-подробнее, что Вы имели ввиду)

Т.е. они у меня тут только в мэине и будут работать?

Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 7 2016, 16:54
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ekka @ Sep 7 2016, 19:33) *
Т.е. они у меня тут только в мэине и будут работать?

Конечно.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Sep 8 2016, 06:29
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(jcxz @ Sep 7 2016, 16:54) *
Конечно.


Спасибо за ответы)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 8 2016, 06:41
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Если Вам надо отделить работу файловой системы от каких-то других задач (чтобы они не мешали другу и тормозили), то поставьте ОС и все функции работы с файловой системой вынесите в отдельную задачу. Но тогда ещё Вам нужно продумать алгоритм межзадачного взаимодействия для запроса функций из задачи файловой системы.
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 8 2016, 07:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(jcxz @ Sep 8 2016, 09:41) *
Если Вам надо отделить работу файловой системы от каких-то других задач (чтобы они не мешали другу и тормозили), то поставьте ОС и все функции работы с файловой системой вынесите в отдельную задачу. Но тогда ещё Вам нужно продумать алгоритм межзадачного взаимодействия для запроса функций из задачи файловой системы.

Вовсе не обязательно. Main Loop тоже вполне позволяет параллелить задачи, особенно с помощью Protothreads. При этом отсутствует геморрой с синхронизацией. Из недостатков - задержки отклика: всё-таки функции файловой системы могут тормозить в случае стирания флэш, к примеру.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 8 2016, 09:15
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(scifi @ Sep 8 2016, 13:08) *
Из недостатков - задержки отклика: всё-таки функции файловой системы могут тормозить в случае стирания флэш, к примеру.

Вот именно. Вот именно устранение этого я имел в виду под "отделить работу от других задач".
Go to the top of the page
 
+Quote Post
Ekka
сообщение Sep 29 2016, 08:28
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Снова привет всем. Простите, что все до кучи в одной теме, но вопрос очень непонятный.
Настраиваем ДМА с АЦП через Куб.
На 4 канала.
В чем вопрос: в инете говорится, что запускать ДМА с АЦП надо примерно так:
Код
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)dmaBuf, (uint32_t)dmaBufSize*2);


Почему вдруг *2 ???
При таком запуске ДМА благополучно лезет в соседние массивы и пихает туда то, что забрал с АЦП.
Однако если запустить так:
Код
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)dmaBuf, (uint32_t)dmaBufSize);


заполняется либо полмассива, либо часть. В результате не могу нормально усреднить значения.
Может кто-то знает, в чем моя проблема?
Как надо правильно запускать ДМА? Или, может, у меня какая-то настройка отсутствует?
У меня уже глаз замылился с этим ДМА.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 29 2016, 12:31
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Ekka @ Sep 29 2016, 11:28) *
Как надо правильно запускать ДМА?
А вы посмотрите внимательно, что происходит внутри этой чУдной функции. Отследите, какие значения в какие регистры она пишет. А потом откройте описание каждого конкретного регистра и разберитесь, что туда должно писаться исходя из вашей задачи. И вам все станет ясно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ekka
сообщение Sep 30 2016, 11:06
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Вопрос с ДМА снят) Разобрались.
Возник другой вопрос. Может, конечно, тоже вопрос не из умных,
но можно ли как-то заставить FATFS работать в прерывании обычного таймера?
Она же в прерываниях, вроде не работает.

Просто у меня в чем беда:
несчастный триак работает на прерываниях (плохо, конечно, не отрицаю)
и если ФатФС тормозит в мэине - лампочка тоже моргает, импульсы нарушаются.
Может, кто умный/опытный что посоветует?

Засада еще в том, что FreeRTOS взять пока не могу((
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ekka   Без прерываний   Jul 27 2016, 11:26
- - Obam   А по-яснее? Включить или запустить?   Jul 27 2016, 12:42
|- - Ekka   Цитата(Obam @ Jul 27 2016, 12:42) А по-яс...   Jul 27 2016, 12:46
- - Obam   Глава 16.3.11 (стр.442 из CD00171190.pdf) не подхо...   Jul 27 2016, 13:13
|- - Ekka   Цитата(Obam @ Jul 27 2016, 13:13) Глава 1...   Jul 27 2016, 13:22
- - Obam   "Читала про синхронизацию таймеров и источник...   Jul 27 2016, 13:58
|- - Ekka   Цитата(Obam @ Jul 27 2016, 13:58) "Ч...   Jul 27 2016, 14:19
|- - Obam   Цитата(Ekka @ Jul 27 2016, 18:19) Просто ...   Jul 27 2016, 14:27
|- - Ekka   Цитата(Obam @ Jul 27 2016, 14:27) Ё-моё, ...   Jul 28 2016, 06:45
- - uriy   Слыхал что на заводах из-за разделения труда встре...   Jul 28 2016, 07:31
|- - Ekka   Цитата(uriy @ Jul 28 2016, 07:31) Слыхал ...   Jul 28 2016, 08:42
- - uriy   ЦитатаСделать то же, но без прерываний. Вот и дума...   Jul 28 2016, 09:03
|- - Ekka   Ребята, не могу таймер 2 канал 2 настроить на шим....   Jul 28 2016, 14:30
|- - Ekka   ...   Jul 29 2016, 07:14
|- - amiller   Простой совет: Забудьте про всякие HAL, Cube, CMSI...   Jul 29 2016, 09:56
|- - Ekka   Привет, ребята) снова стучу сюда. Правда вопрос др...   Aug 2 2016, 08:19
|- - Ekka   Народ)) Кто-то использовал USB на МК stm32f105? Ку...   Aug 3 2016, 08:42
|- - jcxz   Цитата(Ekka @ Aug 3 2016, 14:42) Народ)) ...   Aug 3 2016, 09:00
|- - Ekka   Взяла библиотеку для USB для stm32f10 и проч. Подг...   Aug 3 2016, 12:43
|- - Obam   Цитата(Ekka @ Aug 3 2016, 16:43) …вылетае...   Aug 3 2016, 14:14
|- - jcxz   Цитата(Ekka @ Aug 3 2016, 18:43) Почему, ...   Aug 3 2016, 15:03
|- - Ekka   Цитата(jcxz @ Aug 3 2016, 15:03) Да уж......   Aug 4 2016, 08:53
|- - Ekka   Снова стучу сюды) Нашла библиотеку для stm105/7, н...   Aug 8 2016, 08:35
|- - Ekka   Всем Доброго времени суток) USB удалось запустить ...   Aug 23 2016, 08:54
|- - Obam   Цитата(Ekka @ Aug 23 2016, 12:54) Всем До...   Aug 23 2016, 09:02
- - firew0rker   Документ "RM0008 Reference manual STM32F10xxx...   Aug 23 2016, 09:03
|- - Ekka   Спасибо большое! Сейчас посмотрю)))   Aug 23 2016, 09:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01594 секунд с 7
ELECTRONIX ©2004-2016