Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

Jack_A писал(а):учите полумерам
Полумеры тоже надо знать, т.к. в некоторых случаях они являются достаточны. Я же не утверждаю это единственно верным способом :) Простой и вполне годный способ мигать диодами на атмеге. Триггеры туда городить точно не надо, не та высота полёта.

yron:

Код: Выделить всё

#include <avr/io.h>
#include <util/delay.h>

void main(void)
{
    while(1){
        if(PINC&(1<<PC0)){
            _delay_us(50);
            if(PINC&(1<<PC0)){
                // наше умное действие, дребезга не было
            }
        }
    }
}

Кнопка висит на PC0. Код под GCC. Задержку подбирать по уровню фиговости кнопки :)) Вообще лучше как-то хитре сделать все, сразу, и таймером, например. Но это уже на вашей совести :)
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение yron »

Спасибо с простой задержкой delay я уже знаю как работать мне сейчас таймер бы понять.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Jack_A »

yron писал(а):Но хотелось бы увидеть решение и в программном виде .

Чтоб не привязываться к конкретному типу МК, :roll: , возьмем вот такой простой алгоритм подавления дребезга.
Если его поместить в прерывание по таймеру, то п. 2 будет выполняться автоматически,
об опросе кнопок можно забыть и только в основной программе периодически посматривать
на состояние флага. При обработке измененного флага , конечно, его необходимо сбросить.
При этом легко реализуется срабатывание как по нажатию, так и по отпусканию кнопки.
Изображение
Вложения
A_K.JPG
(35.6 КБ) 586 скачиваний
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

чет я не понял во втором алгоритме сразу начинаем с паузы?зачем,?и зачем столько флагов держать?

yron, я так и не понял в какой момент должен второй светодиод потухнуть. в момент перехода ко второму пункту или когда,если так,то он и будет включаться каждые пять сек и выключиться через десять,пока не включится эта вторая кнопка
В поисках истины человек развивается.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Jack_A »

Если поместить в прерывание , то п.2 не нужен, я же сказал, что он выполняется автоматически, если прерывание настроено на 10мс. А если чаще, то п.2 -- это внутренний счетчик : "N-1 прерываний пропускаем, а на N-ом срабатываем". 3 раза - для надежности. Из проверенной рабочей программы.
И пот`ом каждый автор имеет свой стиль. "Что ни город, то норов".
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение yron »

vitalik_1984 писал(а):чет я не понял во втором алгоритме сразу начинаем с паузы?зачем,?и зачем столько флагов держать?

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

Да он будет включатся каждые 5 сек и выключатся через 10 пока не включится эта вторая кнопка. Пока нажата 2 кнопка все 3 светодиода горят безостановочно.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25122
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

Из темы: viewtopic.php?f=20&t=39341&start=120

КРАМ писал(а):
UR5FDG писал(а):И еще вопрос, а если у меня матричная клавиатура, то при нажатии любой кнопки генерировать сигнал прерывания?

Ни при одной кнопке ни при матрице прерывания от клавиатуры формировать не нужно. Делают это так.
Изображение

Верхняя эпюра - это входной сигнал от кнопки (кнопок).
Средняя - это прерывания от таймера.
Нижняя - это программное состояние кнопки (кнопок).
Т.е. в прерываниях от таймера, которые должны следовать реже, чем длительность дребезга, но чаще, чем необходимая скорость реакции на нажатие кнопки, происходит защелкивание состояния входа от кнопки. Программное состояние кнопки фиксируется только тогда, когда два защелкнутых состояния подряд одинаковы.


КРАМ писал(а):...............
Выбираете свободный таймер или используете уже имеющийся. Интервал переполнения этого таймера (прерываний от него) берете больше времени дребезга выбранных кнопок (смотрите в даташите, обычно порядок этого времени 10...50 мс). Пусть это будет 65 мс. Значит если таймер 16 битный, а частота на его входе 1 МГц, то прерывания будут следовать примерно через 65 мс.
Вот в обработчике этого прерывания читаете состояние порта к которому подключена кнопка. Это состояние вдвигаете справа на лево в некую переменную и тут же маскируете у нее все разряды кроме двух младших. Если значение этой переменной = 0, то пишите в программное состояние кнопки 0, если значение этой переменной = 3, то программное состояние кнопки 1, а если переменная равна 1 или 2, то изменять значение программной кнопки нельзя - оно останется прежним.
В программе пользуетесь только программным значением кнопки (0 или 1).
Дребезга у программного значения не будет.
Аватара пользователя
Eprinter
Опытный кот
Сообщения: 802
Зарегистрирован: Сб дек 19, 2009 14:51:11
Откуда: Нашенский

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Eprinter »

yron, нашёл ошибку :music:
Меняем строку
if (!step_2 && !PIND.3) PORTD.7 = 1; //если на входе ноль то выводим на третий выход единицу
на две строки
if (!step_2)
if (!PIND.3) PORTD.7 = 1; //если на входе ноль то выводим на третий выход единицу

Протупил, как мышара... Теперь всё моргает, проверил в протеусе.
С дребезгом сами разберётесь, или покумекать за компанию?

И кстати, тут прочёл ваши уточнения - если датчик после загорания 3-го св.диода вдруг станет 1, цикл так же начинаем с начала? Если да, то надо править, я под первое ТЗ лепил.
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
Аватара пользователя
Eprinter
Опытный кот
Сообщения: 802
Зарегистрирован: Сб дек 19, 2009 14:51:11
Откуда: Нашенский

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Eprinter »

Всё, победился и дребезг, и прочая. Весь проект (кодевижн + протеус) в архиве.
Прерывание по входу можно отключить (а можно и не трогать), теперь всё привязано только к таймеру 10Гц, так оказалось проще.
Удачи, я спать :sleep:

Да, включение-выключение через 2 сек, как тут где-то проскакивало...
Вложения
mega8.zip
(59.01 КБ) 146 скачиваний
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

просто добавить в конце прерывания что то вроде

Код: Выделить всё

if (PIND.3) PORTD.7 = 0;PORTD.6 = 0;  step_1=50;

я уже делал почти так с одним третьим выходом- нормально тухнет.
сейчас негде попробовать пока что.
UPD
Молодец Eprinter всех удивил, вроде циферблат никто не говорил делать :)))
В поисках истины человек развивается.
mahury
Родился
Сообщения: 7
Зарегистрирован: Вс июн 17, 2012 22:05:31

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение mahury »

в качестве диплома писал реализацию алгоритма шифрования ГОСТ 28147-89 на ПЛИС xilinx на VHDL.
стоит ли здесь выложить текст основной части + текст программы в качестве мануала как писать для совсем нубов + разбор типичных ошибок при написании?
Аватара пользователя
Eprinter
Опытный кот
Сообщения: 802
Зарегистрирован: Сб дек 19, 2009 14:51:11
Откуда: Нашенский

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Eprinter »

vitalik_1984 писал(а):вроде циферблат никто не говорил делать :)))

Дык без него никак не получалось отловить, в каком же месте перекодил в первой версии :)
А так видно, идёт ли отсчёт и какой из двух.

Кстати, в коде много что ещё можно (и нужно) улучшить, например исключить срабатывание при залипании кнопки, таки что не расслабляйся, yron :wink:

mahury писал(а):в качестве диплома писал реализацию алгоритма шифрования ГОСТ 28147-89 на ПЛИС xilinx на VHDL.
стоит ли здесь выложить текст основной части + текст программы в качестве мануала как писать для совсем нубов + разбор типичных ошибок при написании?

А почему собственно нет? :)
Только оформить лучше как статью, деталей не подскажу, сам не делал.
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение yron »

Всем большое спасибо за помощь.
Eprinter Благодарю вас особенно за тот труд который вы сделали для меня.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение isx »

Добрый день)) Решил вот тут поюзать EEPROM.
Есть устройство, которое управляет координатами станка. При первом подключении происходит его калибровка (устанавливается значение переменной х = 0, а устройство передвигается в нулевое положение), а в последующем все перемещения осуществляются либо увеличением х, либо его уменьшением.
Необходимо чтобы даже после выключения устройство знало о текущем местоположении втулки станка, чтоб при последующем запуске правильно управлять втулкой.
Ранее было решено использовать EEPROM для этой цели, но сегодня наткнулся на статью, что EEPROM позволяет перезаписывать себя только 10000 раз, а моя установка будет делать это около 100 раз в сутки... Так ли это, и если да, то какие ещё можно рассмотреть варианты?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25122
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

Зачем писать в энергонезависимую память, если станок не выключается? Для этого есть ОЗУ.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение isx »

Устройство работает от сети. Тоесть после каждого использования оно обесточивается...
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Frogfot »

isx писал(а):Тоесть после каждого использования оно обесточивается...

В зависимости от объёма кода - или RTC (DS1307 - 56 байт, PCF8583 - до 256 байт) c батарейкой, или FRAM FM24xx, FM25xx
Хорошему коту и в декабре - март :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25122
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

Обесточивается путем выдергивания из розетки?
Можно применить резервный источник питания - МК в слипе потребляет единицы микроампер. Обычной 3 вольтовой литиевой таблетки хватит на 2...3 года.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение isx »

Frogfot

Что то я совсем не понимаю о чём вы :) ... Хранить нужно число от 0 до 999.
КРАМ писал(а):Обесточивается путем выдергивания из розетки?
Можно применить резервный источник питания - МК в слипе потребляет единицы микроампер.

Из розетки. Насчёт резерва.. Батарейки то может и хватит, вопрос проработает ли сам МК (AtMega8 кстати...) без перерыва хотя бы год?
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ILYAUL »

без перерыва хотя бы год?
Один точно знаю. Уже семь лет пашет - не выключаясь!!
Ответить

Вернуться в «Разные вопросы по МК»