Например TDA7294

 Форум РадиоКот • Просмотр темы - Формирование случайной импульсной последовательности
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Чт окт 18, 2018 01:12:40



Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Пн дек 11, 2017 05:29:24 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
Так, мужики, давайте разберемся.

Я вот сейчас посмотрел свой код, а именно его часть с кнопками и случайной задержкой.

Ещё посмотрел disassembly listing. Да, возможно, часть со случайной задержкой неоптимизирована, не спорю, НО!

В чем преимущество работы с таймером при опросе кнопок? Я получаю одинаковый результат же!

Вот при случайной задержке да, это неточно - раз и громоздко - два.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Пн дек 11, 2017 05:42:59 
Друг Кота
Аватар пользователя

Карма: 86
Зарегистрирован: Чт сен 12, 2013 01:54:12
Сообщений: 3830
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
SpeedFighter писал(а):
...В чем преимущество работы с таймером при опросе кнопок? Я получаю одинаковый результат же!...
Если вас не беспокоит, что когда контроллер "болтается в delay" он больше ничего делать не может - и так сойдёт.


Вернуться наверх
 Профиль  
 
JLCPCB, 10 прототипов ПП всего за $2 и 2 дня доставка!

Крупнейший производитель печатных плат в Китае, 300,000+ заказчиков, 10,000+ он-лайн заказов в день.

Рассчитайте цену онлайн:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Пн дек 11, 2017 06:06:23 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
Не беспокоит, в том ведь и дело.

Я прикинул его работу и подумал, а нужно ли где-то его прерывать, ответ - нет.

Не спорю, если бы я делал что-то сложнее - то так нельзя было бы делать.

Я правильно понял, мой пичок (PIC10F322) не поддерживает внешних прерываний (например, по нажатию кнопки)?


Вернуться наверх
 Профиль  
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Второй конкурс по дизайну печатных плат от PCBWay!
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Пн дек 11, 2017 17:08:36 
Друг Кота
Аватар пользователя

Карма: 97
Зарегистрирован: Чт янв 10, 2008 23:01:02
Сообщений: 14222
Откуда: Московская область
Рейтинг сообщения: 0
Я немного по-другому делаю: Так сложилось что, обычно, системный таймер всегда настраиваю на 1mS и, для дискретных мембранных кнопок, я выставляю время срабатывания 5mS и время отпускания 50mS.
По программе - на каждую кнопку один счётчик + два бита ("кнопка нажата" и "факт нажатия"; последний - для передачи в подпрограмму обработки нажатия кнопок).

А что это дает?
Если нужен системный таймер на 1 мс, то в его обработчике еще делается счетчик-делитель. В чем смысл разделять дребезг нажатия и дребезг отпускания?
И зачем все это делать на каждую кнопку? А если это матрица? :dont_know:

Добавлено after 4 minutes 5 seconds:
Я правильно понял, мой пичок (PIC10F322) не поддерживает внешних прерываний (например, по нажатию кнопки)?

Неправильно. В этом контроллере есть ОДНО внешнее тактируемое прерывание (INT) и ЧЕТЫРЕ входа прерываний по изменению состояния порта (IOC).
Тактируемое не вешают на кнопки. Оно никак не поможет с дребезгом. А IOC применяют для вывода контроллера из сна при нажатии кнопок.


Вернуться наверх
 Профиль  
 
Более 10 000 000 оригинальных новых компонентов

Поставка электронных компонентов под ваш проект

Комплексные решения поставки электронных компонентов

Сэкономьте $30 при первом заказе на сумму боле $200 (только для посетителей нашего форума)
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Пн дек 11, 2017 20:05:13 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
Вот, пока сделал так, как понял, прерывание для опроса клавиш. Правильно ли? Если нет, то что именно неправильно?

Код:


Вот, НО! Вопрос заключается в том, а как правильно сделать прерывание раз в 10-30 мс?
Как рассуждаю я:

0. Я настроил тактовую частоту генератора на 16 МГц в OSCCON .
1. Таймер TMR0 настроен при этом на 8 МГц
2. При такой частоте, таймер переполнится за 256*(1/8) = 32 мкс
3. Мало, нужно получить 20-30 мс, но я же не смогу получить её, даже с предделителем в 256.
4. Вывод - нужно понижать тактовую частоту в OSCCON до 4х МГц, но не хотелось бы.

Как быть?

Вот скрин из даташита, кому интересно:



Как сделать случайную задержку, т.е. чтобы таймер считал до числа N, которое было определено ранее?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 05:23:14 
Друг Кота
Аватар пользователя

Карма: 86
Зарегистрирован: Чт сен 12, 2013 01:54:12
Сообщений: 3830
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 1
Медали: 5
Получил миской по аватаре (5)
В чем смысл разделять дребезг нажатия и дребезг отпускания?
И зачем все это делать на каждую кнопку? А если это матрица? :dont_know:
Кнопка, для пользователя, должна сработать максимально быстро, но не с "первого пичка" (который может оказаться импульсной помехой), а собственно "дребезг" я убираю на отпускании кнопки.
Для каждой кнопки: Почти во всех моих изделиях есть возможность входа в некоторые функции по нажатию (и удержанию) нескольких кнопок в определённой последовательности (по аналогии с Ctrl+Alt+Del).
Матричная клавиатура отличается от дискретных кнопок только способом опроса кнопок. Подавление "дребезга" остаётся прежним.
Естественно, если по условию, в любой момент времени может быть нажата только одна кнопка - тогда всё намного проще...
-------------------
SpeedFighter писал(а):
Как быть?
Не забывайте, что на таймеры подаётся FOSC/4.
С Timer0 максимальное время 16,384mS (FOSC/4/256/256) при тактовой 16MHz.
У PIC10F322 есть ещё Timer2, с которого вы можете получить чуть более 65mS (65,536mS) при тактовой 16MHz.
SpeedFighter писал(а):
чтобы таймер считал до числа N
Таймер всегда даст прерывание при переходе на "0". Перефразируйте задачу: "Надо записать в таймер стартовое значение".


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 06:17:46 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
Хорошо, спасибо.

Но я, честно говоря, не понял, в чем преимущество таймера для опроса кнопок в ДАННОЙ программе.

А вот преимущество задержки через таймеры - я вижу, но как сделать задержку от 100 мкс до 400 мс, если таймер TMR2 может только до 65 мс задерживать?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 06:24:57 
Друг Кота
Аватар пользователя

Карма: 86
Зарегистрирован: Чт сен 12, 2013 01:54:12
Сообщений: 3830
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
С какой дискретностью (какой шаг) от 100 мкс до 400 мс?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 10:16:01 
Друг Кота
Аватар пользователя

Карма: 97
Зарегистрирован: Чт янв 10, 2008 23:01:02
Сообщений: 14222
Откуда: Московская область
Рейтинг сообщения: 0
Кнопка, для пользователя, должна сработать максимально быстро

Зачем? Реакция человека на подобные события определяется величиной 0,1...0,2 сек.
Кнопка - типичное устройство НЕ реального времени.
Но я, честно говоря, не понял, в чем преимущество таймера для опроса кнопок в ДАННОЙ программе.
А вот преимущество задержки через таймеры - я вижу, но как сделать задержку от 100 мкс до 400 мс, если таймер TMR2 может только до 65 мс задерживать?

Преимущество в "прозрачности" такого алгоритма для остального кода. И отличной переносимости в практически в ЛЮБОЙ код. Делать нужно сразу правильно.
Про задержки.
Таймер генерирует лишь МИНИМАЛЬНЫЙ ДИСКРЕТ времени, а остальное реализуется ПРОГРАММНЫМ счетчиком ВНУТРИ ОБРАБОТЧИКА прерываний от таймера.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 15:39:50 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
С какой дискретностью (какой шаг) от 100 мкс до 400 мс?


Если честно, я не задавался этим вопросом, поэтому встречный вопрос: а какие есть варианты? :)

Кнопка, для пользователя, должна сработать максимально быстро

Зачем? Реакция человека на подобные события определяется величиной 0,1...0,2 сек.
Кнопка - типичное устройство НЕ реального времени.
Но я, честно говоря, не понял, в чем преимущество таймера для опроса кнопок в ДАННОЙ программе.
А вот преимущество задержки через таймеры - я вижу, но как сделать задержку от 100 мкс до 400 мс, если таймер TMR2 может только до 65 мс задерживать?

Преимущество в "прозрачности" такого алгоритма для остального кода. И отличной переносимости в практически в ЛЮБОЙ код. Делать нужно сразу правильно.
Про задержки.
Таймер генерирует лишь МИНИМАЛЬНЫЙ ДИСКРЕТ времени, а остальное реализуется ПРОГРАММНЫМ счетчиком ВНУТРИ ОБРАБОТЧИКА прерываний от таймера.


Насчет опроса кнопок:
1. После выполнения функции прерывания, микроконтроллер вернется на какой этап? С того момента, на котором прервался? Даже если был в цикле?
2. Если сделать глобальную переменную и в обработчике прерываний сделать присваивание этой переменной какого-либо числа, то сохранится ли в ней значение?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 19:52:25 
Друг Кота
Аватар пользователя

Карма: 86
Зарегистрирован: Чт сен 12, 2013 01:54:12
Сообщений: 3830
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
SpeedFighter писал(а):
...я не задавался этим вопросом, поэтому встречный вопрос: а какие есть варианты?
Это надо ТЗ смотреть... :)


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Вт дек 12, 2017 20:07:43 
Открыл глаза

Зарегистрирован: Вс май 28, 2017 20:07:32
Сообщений: 57
Рейтинг сообщения: 0
Ну допустим, что на мое усмотрение.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Ср дек 13, 2017 04:28:27 
Друг Кота
Аватар пользователя

Карма: 97
Зарегистрирован: Чт янв 10, 2008 23:01:02
Сообщений: 14222
Откуда: Московская область
Рейтинг сообщения: 1
Насчет опроса кнопок:
1. После выполнения функции прерывания, микроконтроллер вернется на какой этап? С того момента, на котором прервался? Даже если был в цикле?
2. Если сделать глобальную переменную и в обработчике прерываний сделать присваивание этой переменной какого-либо числа, то сохранится ли в ней значение?

1. При выходе из обработчика программа попадет на следующую после прерванной команду. То есть для основного кода прерывания как бы не существуют, при их исполнении выполнение основного кода замирает, а затем восстанавливается ровно с того места на котором произошла остановка.
2. Глобальная переменная измененная в прерывании останется измененной. Но есть несколько другая опасность. Компилятор может проигнорировать часть исходного кода основного цикла, если увидит, что переменная в основном цикле не модифицируется, а так же может произойти ошибка при чтении переменной в основном цикле, если ее разрядность выше разрядности контроллера (прерывание может произойти между чтениями младшей и старшей частями переменной). Поэтому все глобальные переменные, которые модифицируются в прерывании должны при объявлении иметь квалификатор volatile перед типом, например
volatile int count;
Это позволит компилятору избежать генерации ошибочного кода.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Ср дек 13, 2017 07:54:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12401
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Какую тему не возьми, все в итоге сведется либо к политике, либо к кнопкам, либо к обсуждению крутости ARM. ведь про случайную последовательность тема же была, при чем тут кнопки, прерывания, DMA?!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Ср дек 13, 2017 15:14:47 
Друг Кота
Аватар пользователя

Карма: 97
Зарегистрирован: Чт янв 10, 2008 23:01:02
Сообщений: 14222
Откуда: Московская область
Рейтинг сообщения: 1
при чем тут кнопки, прерывания, DMA?!

Про ДМА разговор не идет. По крайней мере тут.
Про прерывания и кнопки разговор идет ровно потому, что автор реализует свое устройство посредством КНОПОК. Про случайную последовательность уже все разобрали.
Правила форума не ограничивают круг обсуждаемых вопросов в топике формулировкой заголовка. Тема обсуждения вольна уходить В ЛЮБУЮ ТЕХНИЧЕСКУЮ СТОРОНУ.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Формирование случайной импульсной последовательности
СообщениеДобавлено: Ср дек 13, 2017 22:28:06 
Друг Кота
Аватар пользователя

Карма: 12
Зарегистрирован: Пн июл 28, 2008 23:12:01
Сообщений: 3229
Рейтинг сообщения: 0
Какую тему не возьми, все в итоге сведется либо к политике, либо к кнопкам, либо к обсуждению крутости ARM. ведь про случайную последовательность тема же была, при чем тут кнопки, прерывания, DMA?!


Все просто, стареешь вот и брюзжишь.
Делом займись , всяко веселей будет..


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y