Страница 330 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 10:23:41
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. Задержку подбирать по уровню фиговости кнопки

Вообще лучше как-то хитре сделать все, сразу, и таймером, например. Но это уже на вашей совести

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 10:30:55
yron
Спасибо с простой задержкой delay я уже знаю как работать мне сейчас таймер бы понять.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 11:08:15
Jack_A
yron писал(а):
Но хотелось бы увидеть решение и в программном виде .
Чтоб не привязываться к конкретному типу МК,

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

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 11:38:07
vitalik_1984
чет я не понял во втором алгоритме сразу начинаем с паузы?зачем,?и зачем столько флагов держать?
yron, я так и не понял в какой момент должен второй светодиод потухнуть. в момент перехода ко второму пункту или когда,если так,то он и будет включаться каждые пять сек и выключиться через десять,пока не включится эта вторая кнопка
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 11:50:29
Jack_A
Если поместить в прерывание , то п.2 не нужен, я же сказал, что он выполняется автоматически, если прерывание настроено на 10мс. А если чаще, то п.2 -- это внутренний счетчик : "N-1 прерываний пропускаем, а на N-ом срабатываем". 3 раза - для надежности. Из проверенной рабочей программы.
И пот`ом каждый автор имеет свой стиль. "Что ни город, то норов".
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 11:59:49
yron
vitalik_1984 писал(а):чет я не понял во втором алгоритме сразу начинаем с паузы?зачем,?и зачем столько флагов держать?
yron, я так и не понял в какой момент должен второй светодиод потухнуть. в момент перехода ко второму пункту или когда,если так,то он и будет включаться каждые пять сек и выключиться через десять,пока не включится эта вторая кнопка
Да он будет включатся каждые 5 сек и выключатся через 10 пока не включится эта вторая кнопка. Пока нажата 2 кнопка все 3 светодиода горят безостановочно.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 15:30:48
КРАМ
Из темы:
http://radiokot.ru/forum/viewtopic.php? ... &start=120
КРАМ писал(а):UR5FDG писал(а):И еще вопрос, а если у меня матричная клавиатура, то при нажатии любой кнопки генерировать сигнал прерывания?
Ни при одной кнопке ни при матрице прерывания от клавиатуры формировать не нужно. Делают это так.
Верхняя эпюра - это входной сигнал от кнопки (кнопок).
Средняя - это прерывания от таймера.
Нижняя - это программное состояние кнопки (кнопок).
Т.е. в прерываниях от таймера, которые должны следовать реже, чем длительность дребезга, но чаще, чем необходимая скорость реакции на нажатие кнопки, происходит защелкивание состояния входа от кнопки. Программное состояние кнопки фиксируется только тогда, когда два защелкнутых состояния подряд одинаковы.
КРАМ писал(а):...............
Выбираете свободный таймер или используете уже имеющийся. Интервал переполнения этого таймера (прерываний от него) берете больше времени дребезга выбранных кнопок (смотрите в даташите, обычно порядок этого времени 10...50 мс). Пусть это будет 65 мс. Значит если таймер 16 битный, а частота на его входе 1 МГц, то прерывания будут следовать примерно через 65 мс.
Вот в обработчике этого прерывания читаете состояние порта к которому подключена кнопка. Это состояние вдвигаете справа на лево в некую переменную и тут же маскируете у нее все разряды кроме двух младших. Если значение этой переменной = 0, то пишите в программное состояние кнопки 0, если значение этой переменной = 3, то программное состояние кнопки 1, а если переменная равна 1 или 2, то изменять значение программной кнопки нельзя - оно останется прежним.
В программе пользуетесь только программным значением кнопки (0 или 1).
Дребезга у программного значения не будет.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 16:29:00
Eprinter
yron, нашёл ошибку
Меняем строку
if (!step_2 && !PIND.3) PORTD.7 = 1; //если на входе ноль то выводим на третий выход единицу
на две строки
if (!step_2)
if (!PIND.3) PORTD.7 = 1; //если на входе ноль то выводим на третий выход единицу
Протупил, как мышара... Теперь всё моргает, проверил в протеусе.
С дребезгом сами разберётесь, или покумекать за компанию?
И кстати, тут прочёл ваши уточнения - если датчик после загорания 3-го св.диода вдруг станет 1, цикл так же начинаем с начала? Если да, то надо править, я под первое ТЗ лепил.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 16:58:20
Eprinter
Всё, победился и дребезг, и прочая. Весь проект (кодевижн + протеус) в архиве.
Прерывание по входу можно отключить (а можно и не трогать), теперь всё привязано только к таймеру 10Гц, так оказалось проще.
Удачи, я спать
Да, включение-выключение через 2 сек, как тут где-то проскакивало...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 17:06:05
vitalik_1984
просто добавить в конце прерывания что то вроде
Код: Выделить всё
if (PIND.3) PORTD.7 = 0;PORTD.6 = 0; step_1=50;
я уже делал почти так с одним третьим выходом- нормально тухнет.
сейчас негде попробовать пока что.
UPD
Молодец
Eprinter всех удивил, вроде циферблат никто не говорил делать

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс июн 17, 2012 22:11:56
mahury
в качестве диплома писал реализацию алгоритма шифрования ГОСТ 28147-89 на ПЛИС xilinx на VHDL.
стоит ли здесь выложить текст основной части + текст программы в качестве мануала как писать для совсем нубов + разбор типичных ошибок при написании?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 02:11:23
Eprinter
vitalik_1984 писал(а):вроде циферблат никто не говорил делать

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

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

Только оформить лучше как статью, деталей не подскажу, сам не делал.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 11:26:26
yron
Всем большое спасибо за помощь.
Eprinter Благодарю вас особенно за тот труд который вы сделали для меня.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 15:54:18
isx
Добрый день)) Решил вот тут поюзать EEPROM.
Есть устройство, которое управляет координатами станка. При первом подключении происходит его калибровка (устанавливается значение переменной х = 0, а устройство передвигается в нулевое положение), а в последующем все перемещения осуществляются либо увеличением х, либо его уменьшением.
Необходимо чтобы даже после выключения устройство знало о текущем местоположении втулки станка, чтоб при последующем запуске правильно управлять втулкой.
Ранее было решено использовать EEPROM для этой цели, но сегодня наткнулся на статью, что EEPROM позволяет перезаписывать себя только 10000 раз, а моя установка будет делать это около 100 раз в сутки... Так ли это, и если да, то какие ещё можно рассмотреть варианты?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 15:55:45
КРАМ
Зачем писать в энергонезависимую память, если станок не выключается? Для этого есть ОЗУ.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 15:59:18
isx
Устройство работает от сети. Тоесть после каждого использования оно обесточивается...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 16:14:26
Frogfot
isx писал(а):Тоесть после каждого использования оно обесточивается...
В зависимости от объёма кода - или RTC (DS1307 - 56 байт, PCF8583 - до 256 байт) c батарейкой, или FRAM FM24xx, FM25xx
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 16:17:11
КРАМ
Обесточивается путем выдергивания из розетки?
Можно применить резервный источник питания - МК в слипе потребляет единицы микроампер. Обычной 3 вольтовой литиевой таблетки хватит на 2...3 года.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 16:25:54
isx
Frogfot
Что то я совсем не понимаю о чём вы

... Хранить нужно число от 0 до 999.
КРАМ писал(а):Обесточивается путем выдергивания из розетки?
Можно применить резервный источник питания - МК в слипе потребляет единицы микроампер.
Из розетки. Насчёт резерва.. Батарейки то может и хватит, вопрос проработает ли сам МК (AtMega8 кстати...) без перерыва хотя бы год?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн июн 18, 2012 16:32:28
ILYAUL
без перерыва хотя бы год?
Один точно знаю. Уже семь лет пашет - не выключаясь!!