0 / 0 / 0
Регистрация: 01.11.2021
Сообщений: 14
|
||||||
1 | ||||||
Как сделать так чтобы длительность импульса регулировалось кнопками + и -? МК Atmega328P04.11.2021, 08:21. Показов 969. Ответов 10
Метки нет Все метки)
(
идёт прерывание по спадающему фронту на INT0, после 3 прерываний должен последовать импульс регулируемой длины.
0
|
|
04.11.2021, 08:21 | |
Ответы с готовыми решениями:
10
Как сделать так, чтобы спад импульса был в 3р дольше (verilog) Необходимо сделать так, чтобы воздействие генерируемого импульса воздействовало определенное время Не знаю как сделать так чтобы как сделать так чтобы через каждые N строк таблицы выдача результатов останавливалась Как посчитать длительность Прямоугольного импульса (Меандр) Как влияет длительность импульса на спектр фаз или амплитуд периодического сигнала? |
2078 / 1173 / 486
Регистрация: 11.10.2018
Сообщений: 5,901
|
||||||||||||||||
04.11.2021, 10:00 | 2 | |||||||||||||||
![]() Решение
Попробуй так:
- для этой переменной и unsigned char хватит. Раз i уже используется, тогда задержка вых. импульса будет d
Добавлено через 2 минуты Не забываем про операторы << сдвиг влево >> сдвиг вправо & логическое И. Это для обработки байт от порта от кнопок. Добавлено через 35 минут выключение не так, а вот так:
1
|
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 562
|
|
04.11.2021, 12:38 | 3 |
Извиняюсь, что так беспардонно влезаю в Вашу тему:
Я правильно понимаю, что после этого PINn этой кнопки/вывода МК будет равен "единичке"?
0
|
2078 / 1173 / 486
Регистрация: 11.10.2018
Сообщений: 5,901
|
|
04.11.2021, 12:43 | 4 |
Нет, неправильно, там подключится подтягивающий резистор. Его можно подключить либо снаружи либо внутри записав в PORTC = 1 на соответствующий пин.
0
|
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 562
|
|
04.11.2021, 12:55 | 5 |
С этим всё понятно.
Я имею в виду, когда это всё будет сделано, с помощью команды PINn я могу опросить любой порт? Неважно, включен он на выход или на вход. И если я опрошу с помощью этой самой команды интересующий меня вывод микроконтроллера, допустим PINС2 или PIND5, я же должен получить в результате, что PINС2 или PIND5 этого вывода равен единичке? Или я совсем чего-то не понимаю?
0
|
2078 / 1173 / 486
Регистрация: 11.10.2018
Сообщений: 5,901
|
|
04.11.2021, 13:04 | 6 |
0
|
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 562
|
|
04.11.2021, 13:12 | 7 |
Извиняюсь, с этим мне всё понятно тоже.
Скажите пожалуйста, то что написано ниже: -------------------------------------------------------------------- Насколько понимаю, если я вывод микроконтроллера PD0 настроил на вход, то есть в Регистр направления данных порта D прописал нолик в нулевой бит: DDRD &= ~(1<<0); Затем в Регистр данных портa D прописал единичку в нулевой бит, PORTD |= (1<<0); тем самым подтянул его резистором к питанию, после этого, по моему мнению, регистр выводов порта D должен читать единичку с вывода PD0? PIND0 = 1 -------------------------------------------------------------------- Это всё верно? Добавлено через 1 минуту И ещё раз Извините, Вы не могли бы перейти в соседнюю тему: Запись битов в Регистр выводов порта D
0
|
2078 / 1173 / 486
Регистрация: 11.10.2018
Сообщений: 5,901
|
|
04.11.2021, 13:19 | 8 |
Да. Нет.
0
|
5 / 5 / 0
Регистрация: 25.06.2017
Сообщений: 562
|
|
04.11.2021, 15:02 | 9 |
0
|
0 / 0 / 0
Регистрация: 01.11.2021
Сообщений: 14
|
||||||
04.11.2021, 17:22 [ТС] | 10 | |||||
Спасибо за ответ. Он выдаёт ошибку. Подскажите в чём дело
Error __builtin_avr_delay_cycles expects a compile time integer constant
0
|
2078 / 1173 / 486
Регистрация: 11.10.2018
Сообщений: 5,901
|
|
04.11.2021, 17:40 | 11 |
Для этого компилятора нужно вставлять константу в функцию _delay_us();
Поэтому, нужно искать другие пути решения изменения длины импульса, например через Таймер0. Добавлено через 6 минут Да просто циклом задержку сделай и переменная до которой считает переменная будет. Добавлено через 41 секунду int это 2 байта в WinAVR, не забывайте это. Добавлено через 2 минуты Просто цикл, который считает до этой переменной и в нем задержка _delay_us(1);
1
|
04.11.2021, 17:40 | |
04.11.2021, 17:40 | |
Помогаю со студенческими работами здесь
11
как сделать чтобы на конец импульса 1 порта включался 2ой порт
Длительность импульса RESET Измерить длительность импульса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |