Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 24.09.2024
Сообщений: 10

Контроль 8 входов

24.09.2024, 12:09. Показов 4027. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте добрые люди помогите написать код который контролирует 8 входов , и если больше 2-х имеют положительный вход - на выход подаеться положительный уровень
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2024, 12:09
Ответы с готовыми решениями:

Применение Аналоговых Входов
Задание - составить электронную схему и запрограммировать Считываемые аналоговые значения для определения яркости светодиода. Чем темнее...

Применение Аналоговых входов
Составить электронную схему и запрограммировать Считываемые аналоговые значения для определения яркости светодиода. Чем темнее будет, тем...

Защита входов МК
Всем привет! Озадачился тут выбором способа защиты входов контроллера. Пока выбираю между двумя (просто детали для обоих вариантов есть в...

31
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
02.11.2024, 00:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Dushevny Посмотреть сообщение
О, если джентельмены проигрывают, они меняют правила? Уже не просто "запустить ШИМ на TIM1", но еще и вывести его на PA9? Извольте:
Нечего - нечего. "Запустить ШИМ" и означает "запустить ШИМ". То есть написать код, который приведет к появлению характерного сигнала на какой-нибудь ноге. Не нравится PA9 (я-то ее предложил только потому, что могу легко проверить на отладочной плате), можно на любой другой. Более того, настроек CFGHR, APB2PCENR я от вас не требовал. Речь, повторяю, шла только о таймере.
Цитата Сообщение от Dushevny Посмотреть сообщение
1) Включить тактирование GPIOA, TIM1 в RCC_APB2PCENR (биты IOPAEN, TIM1EN)
2) Выбрать режим ШИМ в TIM1_CHCTLR1 (биты OC2M выставить в 110 или 111)
3) Разрешить работу выхода второго канала модуля захвата/сравнения в TIM1_CCER (бит CC2E)
4) Разрешить выдачу сигнала ШИМ из таймера наружу в регистре TIM1_BDTR (бит MOE)
5) Выбрать режим альтернативного вывода для ноги PA9 в GPIOА_CFGHR (биты CNF9 выставить в 01, MODE9 в 01, 10 или 11)
C
1
2
3
4
5
6
7
8
9
10
11
  //PA9 = GPIO_APP50 (скорость максимальная, поскольку в демонстрационных целях нужды в экономии энергии нет)
  GPIOA->CFGHR = (GPIOA->CFGHR &~ (0b1111<<((9-8)*4))) | (0b1011<<((9-8)*4));
  RCC->APB2PCENR |= (1<<11); //TIM1
  TIM1->PSC = 14400-1; // F_CPU (144 MHz) / 14400 = 10kHz
  TIM1->ATRLR = 10000-1; // 10 kHz / 10000 = 1 Hz
  TIM1->CH2CVR = 5000; // t_on = t_off = 0.5 sec
  TIM1->CHCTLR1 |= (0b110 * TIM_OC2M_0); //non-inverse pwm
  TIM1->CHCTLR1 |= (0b00 * TIM_CC2S_0); //capture-compare as output
  TIM1->BDTR |= TIM_MOE;
  TIM1->CCER |= TIM_CC2E;
  TIM1->CTLR1 |= TIM_CEN;
Проверил. Все работает. Ваша взяла. Я ожидал, что вы пропустите бит TIM_MOE, он в документации описан крайне слабо и в других таймерах не применяется. Правда, настройку делителей таймера (PSC, ATRLR) и его включение (TIM_EN) вы не описали, но будем считать, что эти настройки слишком очевидны чтобы заострять на них внимание.
Коротко говоря, я впечатлен. Как вам удалось не пропустить TIM_MOE? Я в свое время на нем надолго завис. То, как быстро вы нашли регистры от, полагаю, незнакомого вам контроллера, также вызывает уважение. Разве что под "Cortex-Mx" вы понимали stm32f...
0
1186 / 468 / 68
Регистрация: 22.09.2023
Сообщений: 1,404
02.11.2024, 02:14
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
"Запустить ШИМ" и означает "запустить ШИМ"
Но прерывания-то от него будут идти, даже если МОЕ и CCxE не установлены.



Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Разве что под "Cortex-Mx" вы понимали stm32f.
STM32F, L, H, G, LPC11xx, LPC17xx, MKE02P (для этого, правда, только запись EEPROM в openocd дописывал в процессе ремонта кофейного аппарата).

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Коротко говоря, я впечатлен. Как вам удалось не пропустить TIM_MOE?
В свое время тоже споткнулся на нем в STM32. Но нашел довольно быстро. Видимо потому, что начинал еще до интернета, когда документация была в виде толстых книг и когда что-то не получалось - приходилось эту документацию читать по нескольку раз, пока не начинал понимать даже то, что было "написано между строк". MSP430 освоил, кстати, за ночь в поезде "Рига-Москва", уж очень хорошо документация написана была.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
02.11.2024, 09:47
Цитата Сообщение от Dushevny Посмотреть сообщение
Но прерывания-то от него будут идти, даже если МОЕ и CCxE не установлены.
А прерывания тоже нужно настроить. Причем с незнакомым контроллером тоже могут быть грабли. Для gd32vf103 мне пришлось лезть в ассемблер и настраивать странные регистры. А в том же CH32 вообще 3.5 режима работы прерываний: может быть общий вектор вообще на все (и на Tim1, и на UART и даже на исключения), может быть таблица адресов как в stm32, и может быть таблица переходов (куда надо jmp вписывать). Плюс каждое прерывание можно настроить индивидуально. Плюс хитрый режим, при котором часть регистров автоматически сохраняется (но gcc его толком не поддерживает). Но там хотя бы шаблонный код это настраивает.
Цитата Сообщение от Dushevny Посмотреть сообщение
STM32F, L, H, G,
Тогда понятно.
Цитата Сообщение от Dushevny Посмотреть сообщение
MSP430 освоил, кстати, за ночь в поезде "Рига-Москва", уж очень хорошо документация написана была.
Повезло. Что у GD32, что у CH32 документация довольно скудная. Спасает что большая часть периферии - клон stm32. Хотя у того же GD32 чтобы разобраться с systick пришлось даже с китайского переводить. Правда, не помогло, но так или иначе разобрался.
---
В любом случае, если возникают хоть какие-то сомнения в своем коде или плате (сбой тактирования, непропаи, сопли, просто кривая разводка) уж лучше сделать дубовый блинк на делеях. Меньше шанса пропустить какой-нибудь бит и ломать голову это плата кривая или код.
0
1186 / 468 / 68
Регистрация: 22.09.2023
Сообщений: 1,404
02.11.2024, 12:19
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А прерывания тоже нужно настроить.
Это неважно. Важно, что сам таймер начал выдавать соответствующие запросы на прерывания - значит, он уже запущен в режиме ШИМ. А выходит этот ШИМ наружу или нет - это уже детали.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
уж лучше сделать дубовый блинк на делеях.
Бывало, что и просто вывод единицы с зацикливанием после него.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
02.11.2024, 12:29
Цитата Сообщение от Dushevny Посмотреть сообщение
Это неважно. Важно, что сам таймер начал выдавать соответствующие запросы на прерывания - значит, он уже запущен в режиме ШИМ.
Э, нет. Прерывания он генерирует всего лишь по сравнению и по переполнению. Само по себе это не ШИМ. ШИМ по определению предполагает генерирование импульсов различной ширины. Ну а просто проверить работу таймера можно и по изменению счетного регистра.
0
1186 / 468 / 68
Регистрация: 22.09.2023
Сообщений: 1,404
02.11.2024, 15:22
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Прерывания он генерирует всего лишь по сравнению и по переполнению. Само по себе это не ШИМ. ШИМ по определению предполагает генерирование импульсов различной ширины.
Так и время между прерываниями по сравнению и переполнению будет зависеть от значений регистров периода и сравнения, и это время будет широтно-импульсно модулировано.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
02.11.2024, 15:58
Цитата Сообщение от Dushevny Посмотреть сообщение
Так и время между прерываниями по сравнению и переполнению будет зависеть от значений регистров периода и сравнения, и это время будет широтно-импульсно модулировано.
Время - будет. Но не будет самих широтных импульсов. Формально можно было написать обработчик, дергиющий соответствующей ногой. Но это ничуть не проще, чем обычный аппаратный ШИМ.
0
649 / 402 / 76
Регистрация: 21.09.2008
Сообщений: 1,387
03.11.2024, 13:18
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
TIM1->BDTR |= TIM_MOE;
Отмечу, что ни в технической документации на чип CH32V203 (версии 2.7), ни в руководстве "QingKeV4 Microprocessor Manual" (версии 1.3), описывающий работу с ядром данного чипа, нет никакого описания о данных структурах таймеров. Находится оно в "CH32F/V20x_V30x_V31x Reference Manual" (версии 2.2). Новичкам это необходимо учесть.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
03.11.2024, 14:28
Это общая особенность многих контроллеров. В datasheet описываются общие характеристики, корпуса, потребление, тайминги и прочее. В reference manual - периферия и регистры. Еще в каком-то документе - ядро.
У stm32 так же. И у GD. И у ESP, если я правильно нагуглил.
Согласен, это важная особенность, которую нельзя упускать. Особенно когда пишешь, скажем, статьи для начинающих. К сожалению, большинство статей сейчас начинается с "устанавливаем Куб, тыкаем сюда, вон скриншот, вот еще один".
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
03.11.2024, 20:12
sharpey, COKPOWEHEU, Dushevny, прекращайте офтопить, последние сообщения никак не соответсвуют вопросу ТС
Цитата Сообщение от rewrerewre Посмотреть сообщение
Контроль 8 входов
тем более в ветке "Ардуино".
Есть желания создайте свою ветку и обсуждайте процессоры и их датащиты.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
03.11.2024, 21:57
Цитата Сообщение от ValeryS Посмотреть сообщение
никак не соответсвуют вопросу ТС
Потому что его вопрос никакого интереса не представляет и решается в две строчки
Цитата Сообщение от rewrerewre Посмотреть сообщение
который контролирует 8 входов , и если больше 2-х имеют положительный вход - на выход подаеться положительный уровень
C
1
2
char x = PIND;
if(x&(x-1))PORTB |= (1<<5); else PORTB &=~(1<<5);
Цитата Сообщение от ValeryS Посмотреть сообщение
Есть желания создайте свою ветку и обсуждайте процессоры и их датащиты.
Так мы ж здесь не спорим и не ищем ответа на какой-то вопрос.
0
0 / 0 / 0
Регистрация: 24.09.2024
Сообщений: 10
13.03.2025, 14:31  [ТС]
усложним задачу - кто поможет - без нытья и гордости дебила

Добавлено через 1 минуту
надо добавить алгоритм - с 10 кнопок - управление на 6 выходов по заданному алгоритму ,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2025, 14:31
Помогаю со студенческими работами здесь

Защита входов микроконтроллера.
Добрый день, во-первых извиняюсь, пишу не со своего аккаунта (в гостях). Тема такая - необходимо защитить входы STM32 от импульсных помех...

Защита входов микроконтроллера
ПОдскажите - подойдут ли такие http://www.ti.com/lit/ds/sdls017a/sdls017a.pdf диоды для защиты микроконтроллера от 12 вольт? Уточню - это...

Защита входов АЦП
Здравствуйте! Вопрос стоит в защите входов АЦП, процессор Silabs C8051F350. Защита нужна от перенапряжения причём с минимальным...

Защита входов МК от помех
Здравствуйте, интересует следующий вопрос и возможные пути его решения. Есть МК 1882ВЕ53У, также есть рабочая схема устройства(в...

Перемена знаков входов на ОУ
Как поменять знаки входов с +- на -+ в операционном усилителе?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru