|
Подскажите по реализации библиотеки для МК? |
|
|
|
 |
Ответов
|
Aug 25 2015, 08:57
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Цитата(zltigo @ Aug 25 2015, 11:24)  Поскольку Вы уже заняли в "библиотеке" какие-то IO и видимо жестко, то так-же занять еще и таймер уже не страшно. С одной стороны Вы правы, однако здесь я вижу две проблемы: 1. Никто не может гарантировать, что будет свободный таймер. Конечно, это весьма маловероятно, но все же... 2. Как его конфигурировать? В этом случае разработчики должны предоставить информацию о тактовой частоте. (Да, в CMSIS есть такая переменная, но кто сказал, что они будут использовать CMSIS или не вырежут эту функциональность?) А потом еще читать регистры RCC, высчитывать тактовую таймеров... Раз уж все равно вводить требования к основной программе, то пусть будет пункт 4 - мне так проще  Цитата(adnega @ Aug 25 2015, 11:35)  Может, достаточно подсказать им как это делается? Да они знают, просто на высшем уровне было принято такое решение. Может все еще и поменяется
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
Aug 25 2015, 09:12
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Harvester @ Aug 25 2015, 11:57)  С одной стороны Вы правы, однако здесь я вижу две проблемы: 1. Никто не может гарантировать, что будет свободный таймер. Конечно, это весьма маловероятно, но все же... Но кто-то ведь гарантровал, то будут свободные пины, которые Вы читать собрались, или тоже нет  QUOTE 2. Как его конфигурировать? Так-же, как и все остальное - библиотека по любому имеет функцию инициализации. Вот и потребуйте вызов этой функции с указанием тактовой частоты.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 25 2015, 09:29
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Цитата(zltigo @ Aug 25 2015, 12:12)  Но кто-то ведь гарантровал, то будут свободные пины, которые Вы читать собрались, или тоже нет  Они не свободны, а жестко подключены к внешней периферии! Но Вашу мысль я понял. Буду решать. Возник еще вопрос. Допустим я задействую таймер. Т.к. я не знаю, какая в основной программе будет система прерываний (приоритеты и пр.), я буду контролировать интервал ожиданием флага переполнения. Если не принимать во внимание вопросы эстетики, то чем это решение принципиально будет отличаться от программной задержки с помощью цикла?
Сообщение отредактировал Harvester - Aug 25 2015, 10:14
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
Aug 25 2015, 11:44
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Harvester @ Aug 25 2015, 12:29)  Допустим я задействую таймер. Т.к. я не знаю, какая в основной программе будет система прерываний (приоритеты и пр.), я буду контролировать интервал ожиданием флага переполнения. Если не принимать во внимание вопросы эстетики, то чем это решение принципиально будет отличаться от программной задержки с помощью цикла? Я правильно понял, что эта "библиотека" будет содержать вечный цикл с ожиданием флажка таймера (с последующей обработкой данных) ? Это принципиально плохое решение. Хотя бы потому, что остальной, неизвестной части программы тоже нужно процессорное время.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Aug 25 2015, 12:16
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Цитата(esaulenka @ Aug 25 2015, 14:44)  Я правильно понял, что эта "библиотека" будет содержать вечный цикл с ожиданием флажка таймера (с последующей обработкой данных) ? Это принципиально плохое решение. Хотя бы потому, что остальной, неизвестной части программы тоже нужно процессорное время. Не совсем так. При вызове одной конкретной функции нужно взять 100 отсчетов с интервалом в 10 мкс (100 кГц) и обработать их. Т.е. весь вопрос в том, как реализовать, условно говоря, функцию delay_10us(). В любом случае возврат из функции возможен только после взятия всех отсчетов, а раз так, то какая разница как ждать: считать nop-ы или ждать флаг?
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
Aug 25 2015, 12:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Harvester @ Aug 25 2015, 15:16)  При вызове одной конкретной функции нужно взять 100 отсчетов с интервалом в 10 мкс (100 кГц) и обработать их. ... В любом случае возврат из функции возможен только после взятия всех отсчетов, И почему бы это сразу не описать, в первом же сообщении?.. Цитата(Harvester @ Aug 25 2015, 15:16)  Т.е. весь вопрос в том, как реализовать, условно говоря, функцию delay_10us(). Таймером, на мой взгляд - единственное нормальное решение. Без всяких прерываний, раз уж эту миллисекунду не жалко :-) Если в контроллере не используется встроенный ЦАП, можно задействовать самые простые таймеры - TIM6/TIM7. Считать nop'ы можно, но, во-первых, лениво (это после каждой правки расчётной части проверять, подбирать заново...), а во-вторых, частота опроса будет плавать, если алгоритм обработки нелинейный (например, входные значения меньше 100 обсчитаются по одной ветке, больше 100 - по другой).
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
Сообщений в этой теме
Harvester Подскажите по реализации библиотеки для МК? Aug 25 2015, 08:20 adnega Цитата(Harvester @ Aug 25 2015, 11:20) Од... Aug 25 2015, 08:24 Harvester Цитата(adnega @ Aug 25 2015, 11:24) А раз... Aug 25 2015, 08:33  adnega Цитата(Harvester @ Aug 25 2015, 11:33) Но... Aug 25 2015, 08:35      adnega Цитата(Harvester @ Aug 25 2015, 15:16) а ... Aug 25 2015, 12:59 ViKo Если все выводы принадлежат одному порту, можно по... Aug 25 2015, 12:34 Harvester Цитата(ViKo @ Aug 25 2015, 15:34) Если вс... Aug 25 2015, 13:34  demiurg1978 Я с этими МК не работаю. Но, как бы я сделал: наск... Aug 26 2015, 18:20   Harvester Цитата(demiurg1978 @ Aug 26 2015, 21:20) ... Aug 27 2015, 06:52    jcxz Цитата(Harvester @ Aug 27 2015, 12:52) Та... Aug 27 2015, 07:19     Harvester Цитата(jcxz @ Aug 27 2015, 10:19) Затем ч... Aug 27 2015, 13:18      jcxz Правильное ожидание готовности:
Разрешаем прерыван... Aug 28 2015, 12:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|