Но вопрос в том, если INT0_Vect зависает МК ,то его нужно назвать не прерывание, а зависание?? Или как бороться с таким явлением? Удивительно что никто не задавался таким вопросом.
Мелкие вопросы по МК и ПЛИС.
- Сообщения: 29
- Зарегистрирован: Вт май 04, 2010 13:30:48
И как я узнаю что кнопка зажата 10 с. если я ставлю прерывание по спаду? Отжала и загорелся светодиод, накой он мне нужен без кнопки? Это все легко решается прерыванием PCINT0_vect.
Но вопрос в том, если INT0_Vect зависает МК ,то его нужно назвать не прерывание, а зависание?? Или как бороться с таким явлением? Удивительно что никто не задавался таким вопросом.
Но вопрос в том, если INT0_Vect зависает МК ,то его нужно назвать не прерывание, а зависание?? Или как бороться с таким явлением? Удивительно что никто не задавался таким вопросом.
- Реклама
прямо изнутри этого цикла можешь на часы поглядывать...
Добавлено after 1 minute 55 seconds:
ещё раз: прерывание завесит контроллер, если I==0, если I==1, то другое прерывание сможет прервать это прерывание и выполниться
Добавлено after 2 minutes 24 seconds:
при вызове прерывания I=0 (это происходит аппаратно, для того чтобы прерывания не выполнялись одновременно или прерывание не могло вызваться многократно и сорвать стек), при завершении прерывания I аппаратно возвращается в 1. но никто не мешает взвести его программно...
Добавлено after 3 minutes 53 seconds:
но это если знаешь, что делаешь... (нужно исключить возможность многократного вызова одного и того же прерывания, в вашем случае кнопку не получится нажать раньше, чем она будет отпущена...)
Добавлено after 1 minute 55 seconds:
ещё раз: прерывание завесит контроллер, если I==0, если I==1, то другое прерывание сможет прервать это прерывание и выполниться
Добавлено after 2 minutes 24 seconds:
при вызове прерывания I=0 (это происходит аппаратно, для того чтобы прерывания не выполнялись одновременно или прерывание не могло вызваться многократно и сорвать стек), при завершении прерывания I аппаратно возвращается в 1. но никто не мешает взвести его программно...
Добавлено after 3 minutes 53 seconds:
но это если знаешь, что делаешь... (нужно исключить возможность многократного вызова одного и того же прерывания, в вашем случае кнопку не получится нажать раньше, чем она будет отпущена...)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 29
- Зарегистрирован: Вт май 04, 2010 13:30:48
Ага, т.е. я в прерывании включаю прерывание(сбрасываю флаг запрета?), в итоге мой светодиод горит и счетчик тикает. Xотя где то читал что прерывание в прерывании может глюкнуть, но для моей задачи не страшно. Опыта мало, вот и набираюсь)
- Сообщения: 721
- Зарегистрирован: Сб ноя 16, 2013 23:34:34
С наслаждением прочёл последний десяток сообщений stason1982 и Ivanoff-iv. Давно так не смеялся
Особенно доставило
, иstason1982 писал(а):Удивительно что никто не задавался таким вопросом.
Пишите ещё!Ivanoff-iv писал(а):если I==1, то другое прерывание сможет прервать это прерывание
Уважаемый ААХ, если бы Вы читали внимательно, то увидели что я и начал тему с:[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3560495#p3560495"]если по колхозному...[/uquote], а вместо того, чтобы смеяться, взяли бы, да объяснили котёнку, как писать правильно, и чтобы он не послал всё это программирование... (ведь тут придется с нуля сами принципы написания кода переосмыслить, уверен он и до этого дорастет и до РТОС, возможно..., точно уверен, что кнопки на прерываниях перерастёт сразу, как только кнопок потребуется больше, чем доступно прерываний
)
пс: я сам иногда использую вложенные прерывания (хоть и знаю, что это "неправильно"), но я знаю где это возможно и что нужно предпринять, чтобы не случился айяйяй...
пс: я сам иногда использую вложенные прерывания (хоть и знаю, что это "неправильно"), но я знаю где это возможно и что нужно предпринять, чтобы не случился айяйяй...
- Реклама
- Сообщения: 721
- Зарегистрирован: Сб ноя 16, 2013 23:34:34
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3562569#p3562569"]кнопки на прерываниях перерастёт сразу, как только кнопок потребуется больше, чем доступно прерываний
[/uquote]а как же быть, если кнопок больше, чем доступно прерываний?
целая тема про это есть
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 721
- Зарегистрирован: Сб ноя 16, 2013 23:34:34
В приведённой Вами теме обсуждаются помимо данного вопроса другие, не менее важные, типа, "как включить подтягивающий резистор". Ваш ответ станет читать подрастающее поколение. Большинство современных молодых людей страдают синдромом рассеянного внимания, и могут не осилить 16 страниц. Не могли бы Вы коротко, конспективно, так сказать, обозначить путь решения проблемы прямо в этой теме?
по МК существуют специализированные форумы, если есть конкретный затык и никак не получается самостоятельно разобраться, то народ там всегда подскажет.
тут же общение на тему.
тут же общение на тему.
ZZZ С Нами Бог ZZZ
Коротко: неверный изначально концепт, который нужно полностью переделывать. Необходимо производить опрос состояния клавиатуры по периодическому прерыванию (например, от таймера), а не вызывать прерывание кнопкой, которая либо зажимается, либо дребезжит.AAX писал(а):Не могли бы Вы коротко, конспективно, так сказать, обозначить путь решения проблемы прямо в этой теме?
Работа клавиатур Радио-86РК, ZX-Spectrum, Орион-128 и подобных хорошо описана в литературе, ваша задача только найти и ознакомиться...
- Сообщения: 721
- Зарегистрирован: Сб ноя 16, 2013 23:34:34
[uquote="Slabovik",url="/forum/viewtopic.php?p=3563110#p3563110"]Работа клавиатур Радио-86РК, ZX-Spectrum, Орион-128 и подобных хорошо описана в литературе, ваша задача только найти и ознакомиться...[/uquote]С работой клавиатур Радио-86РК и "подобных" спектрум-совместимых клонов я ознакомился около 30-ти лет назад, когда они мне были интересны. У 8080 нет GPIO, опрос (и передача) состояния клавиатуры осуществляется контроллером. Причём тут "кнопок больше, чем прерываний"? Вроде, взрослый человек, а туда же... 
[uquote="Slabovik",url="/forum/viewtopic.php?p=3563110#p3563110"]Необходимо производить опрос состояния клавиатуры по периодическому прерыванию[/uquote]на "фабричных" устройствах с кучей кнопок, и совсем фуфельными AVR внутри, кнопки вешают на АЦП. Опрос состояния кнопок по таймеру ничем не отличается от опроса по внешнему прерыванию.
[uquote="Slabovik",url="/forum/viewtopic.php?p=3563110#p3563110"]Необходимо производить опрос состояния клавиатуры по периодическому прерыванию[/uquote]на "фабричных" устройствах с кучей кнопок, и совсем фуфельными AVR внутри, кнопки вешают на АЦП. Опрос состояния кнопок по таймеру ничем не отличается от опроса по внешнему прерыванию.
Последний раз редактировалось AAX Пн фев 04, 2019 11:07:07, всего редактировалось 1 раз.
Тогда мне вообще не понятно, зачем вы присоединились к стенаниям stason1982 
Взяли бы, да и объяснили человеку...
Взяли бы, да и объяснили человеку...
Просто подобные темы всплывают на форуме уж слишком регулярно...
ААХ если Вам ещё актуально, тут накинули несколько готовых вариантов... пользуйтесь...
ААХ если Вам ещё актуально, тут накинули несколько готовых вариантов... пользуйтесь...
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 721
- Зарегистрирован: Сб ноя 16, 2013 23:34:34
я даже 16 страниц первой темы просмотрел. Там было пару дельных советов - просто не совать пальцы в розетку километровые куски кода с бестолковыми wait циклами по пол-секунды в прерывания. Но это, видимо, не путь джедаев
джедаи сами упражняются в "прерывании прерываний", и тому же учат бестолковых детей. Ну, надо отметить, дети сами виноваты.
[uquote="Slabovik",url="/forum/viewtopic.php?p=3563160#p3563160"]Тогда мне вообще не понятно, зачем[/uquote]Ну, по началу оно смешно было
Но авторы скисли чот.
[uquote="Slabovik",url="/forum/viewtopic.php?p=3563160#p3563160"]Тогда мне вообще не понятно, зачем[/uquote]Ну, по началу оно смешно было
В РК-86 вообще нет прерываний. Клавиатура опрашивается по запросу от программы к подпрограмме МОНИТОРа или своими силами. История нажатий, аки в писюке ни предусмотрена.
Суть не в том, что есть прерывания или нет, а в том, что не кнопка (клавиатура) управляет процессором, а процессор периодически опрашивает кнопку, следя за её состоянием.
Ну, а с прерываниями это просто удобнее - появляется почти полная независимость от исполняемого кода.
Ну, а с прерываниями это просто удобнее - появляется почти полная независимость от исполняемого кода.
- Сообщения: 2406
- Зарегистрирован: Ср фев 23, 2011 12:12:31
Озадачился вопросом округления цифр... Вроде всё просто, а вроде и сомнения остаются.
Имеем датчик температуры, дискретность 0,25. Но не всегда такую цифру можно прилепить на вывод. Хочется иметь возможность округлить до 0,5 и до целого.
Мои соображения:
Первый столбец температура измеренная, второй округлённая до 0.5, третий до целого. Видится это так:
Может у кого есть другое мнение?
Имеем датчик температуры, дискретность 0,25. Но не всегда такую цифру можно прилепить на вывод. Хочется иметь возможность округлить до 0,5 и до целого.
Мои соображения:
Первый столбец температура измеренная, второй округлённая до 0.5, третий до целого. Видится это так:
Код: Выделить всё
3,00 3,0 3
2,75 3,0 3
2,50 2,5 3
2,25 2,0 2
2,00 2,0 2
1,75 2,0 2
1,50 1,5 2
1,25 1,0 1
1,00 1,0 1
0,75 1,0 1
0,50 0,5 1
0,25 0,0 0
0,00 0,0 0
-0,25 -0,0 0
-0,50 -0,5 -1
-0,75 -1,0 -1
-1,00 -1,0 -1
-1,25 -1,0 -1
-1,50 -1,5 -2
-1,75 -2,0 -2
-2,00 -2,0 -2
-2,25 -2,0 -2Глупый не задает вопросы. Глупый и так все знает.
не ясно - почему?AndTer писал(а):Но не всегда такую цифру можно прилепить на вывод
я таки не понимаю, чем ваши соображения отличаются от "естественных"? т.е. все понимают, что такое "округление до 0,5" - вы что-то другое понимаете под этим? в таблице, вроде, все традиционно...AndTer писал(а):Мои соображения
или в чем вопрос?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2406
- Зарегистрирован: Ср фев 23, 2011 12:12:31
Ну как же, например просто нет места на индикаторе для 4 цифр + знак + символ температуры. Не делать же бегущей строкой)
Потому и не всегда.
Мои соображения под вечер могут ошибаться.
Да и кто то просто отбрасывает дробную часть, кто то может по другому бы округлял.
Не всегда математика, иногда и рационализм и просто хитрые замыслы.
Потому и не всегда.
Мои соображения под вечер могут ошибаться.
Да и кто то просто отбрасывает дробную часть, кто то может по другому бы округлял.
Не всегда математика, иногда и рационализм и просто хитрые замыслы.
Глупый не задает вопросы. Глупый и так все знает.
а какие сложности?
округление с 0,25 до 0,5: х=(х+1)>>1;
округление с 0,25 до 1: х=(х+2)>>2;
отбросить n бит с округлением (округлениетв 2^n раз): x=(x+(1<<(n-1)))>>n;
округление в n раз: x=(x+(n/2))/n; или x=((2x/n)+1)>>1;
округление с 0,25 до 0,5: х=(х+1)>>1;
округление с 0,25 до 1: х=(х+2)>>2;
отбросить n бит с округлением (округлениетв 2^n раз): x=(x+(1<<(n-1)))>>n;
округление в n раз: x=(x+(n/2))/n; или x=((2x/n)+1)>>1;
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


