Обсуждаем контроллеры компании Atmel.
Ответить

Re: attiny13 и PCINT0 в железе

Ср мар 17, 2021 18:28:13

Ну а зачем так делать? Сразу целиком писать весь регистр без его предварительного чтения. Ведь какие прерывания необходимы, а каие нет - известно. Тоже самое и регистрами флагов. Там всего 2 флага. Ну так и пиши туда сразу 0xFF. Зачем его читать???

ну, хотя бы потому, что такая конструкция гораздо нагляднее. Когда через год или десять, я открою этот код, я не задамся вопросом "а нафига я тут в регистр 0xFF" записал. Впрочем это спор а-ля "делать ли отступы и если делать, то сколько" :) Если б бился за каждый так процессорного времени, тогда да. А так...
Тем более, что вряд-ли это к сути проблемы может иметь отношение.

Добавлено after 4 hours 19 minutes 18 seconds:
Радиоэлектроника -- наука о контактах. Короче, начал я выпаивать кнопку и два вывода просто остались на контактных дорожках. С новой кнопкой все работает. Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены. Большое спасибо всем откликнувшимся. Но wdr я тоже убрал ;)
Если кому интересно, это был велофонарь с али плюс вибродатчик и датчик освещенности
Изображение
Вложения
Велофонарь.rar
(111.34 KiB) Скачиваний: 122

Re: attiny13 и PCINT0 в железе

Ср мар 17, 2021 18:36:13

Открою вам маааленький секрет. В прерывания можно делать что угодно. Всё зависит от задачи. Когда ты знаешь возможности мк.
Кнопка, вам кажется, вы решили проблему? Нет. Вы её обошли. Десятой дорогой. Лично я никогда не вешал кнопки на прерывания. Нет такой задачи, чтобы за несколько тактов отреагировать. Я не Flesh, не супермен. Оперировать на уровне нескольких тактов. И повешу кнопку на внешнее прерывание в одном единственном случае. Когда мне потребуется энергосбережения.

Re: attiny13 и PCINT0 в железе

Ср мар 17, 2021 19:33:47

Demiurg, к чему столько пафоса? Ну не вешаете вы кнопки на прерывания -- и не вешайте. Ну кажется вам, что я "обошел" проблему -- бога ради. Зело любопытно, как бы вы программно "обходили" проблему микротрещин в выводах кнопки.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 09:41:25

"а нафига я тут в регистр 0xFF"

Пиши битами. Зачем я в регистр флагов записал 255, я и через десять лет не буду вопросов задавать. И так понятно, что для сброса всех флагов.

Добавлено after 50 seconds:
Радиоэлектроника -- наука о контактах.

А причём здесь радио, если речь о цифровой технике???

Добавлено after 4 minutes 26 seconds:
Лично я никогда не вешал кнопки на прерывания.


Я вешаю, если нет каких-то других внешних воздействий, ибо я всегда сплю, когда МК ничем не занят. Но опять-таки AVR крайне тухлый вариантв этом плане - нельзя тактировть таймеры и при этом находится в глубоком сне. Даже в новых AVR. Вот на хера так делать???

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 11:04:55

Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены

Да хватит уже. Никто не говорил "нельзя". Си прекрасно позволяет стрелять себе в ногу, если вы этого хотите. Просто говорили о том, что это плохая идея/практика и даже объяснили почему.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 11:19:09

Радиоэлектроника -- наука о контактах.

А причём здесь радио, если речь о цифровой технике???

вы это серьезно? :shock: Оксфордский словарь дает такое определение
Радиоэлектроника -- Общее название отдельных отраслей знания, развившихся из радиотехники и электроники.
Хотя вы, само-собой, можете считать, что ЦТ не имеет ни малейшего отношения к электронике.

Добавлено after 2 minutes 40 seconds:
Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены

Да хватит уже. Никто не говорил "нельзя". Си прекрасно позволяет стрелять себе в ногу, если вы этого хотите. Просто говорили о том, что это плохая идея/практика и даже объяснили почему.

Такое впечатление, что вам очень обидно, что все работает, хотя не должно, потому, что вы так сказали :))) Расслабьтесь.

Добавлено after 2 minutes 7 seconds:
Я вешаю, если нет каких-то других внешних воздействий, ибо я всегда сплю, когда МК ничем не занят. Но опять-таки AVR крайне тухлый вариантв этом плане - нельзя тактировть таймеры и при этом находится в глубоком сне. Даже в новых AVR. Вот на хера так делать???

да в общем-то совершенно очевидно. Потому, что это не будет режимом "глубокого сна" (Power Down). Для того, чтобы таймеры тикали, есть другие режимы энергосбережения.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 12:18:08

Land. Осади. Тебе объяснили что и как. Делай выводы сам. А мы сами разберёмся, что нам делать в прерываниях.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 14:00:09

Land. Осади. Тебе объяснили что и как. Делай выводы сам. А мы сами разберёмся, что нам делать в прерываниях.

ой, обиделся бедный :)))
1 - кнопки это человекоинтерфейс. Реакция человека десятки, сотни миллисекунд. Реакция микроконтроллера, если кнопка повешана на прерывание - несколько тактов. Хочется спросить, куда вы так торопитесь, все равно не успеете.
На прерывание есть смысл вешать кнопки только в случае энергосбережения, спящего режима. Ещё в случае экономии ввода вывода. И то варианты.
2 - дребезг контактов.
3 - режим внешнего прерывания, по уровню или фронту.
Как здесь уже правильно подметили, могут быть неучтенные отложенные прерывания.
Вывод, разберитесь что такое дребезг контактов. Какие режимы внешнего прерывания, как правильно инициализировать внешние прерывания. И нужно ли вешать кнопки на внешние прерывания, если нет энергосбережения.

Вывод: одна вода, ничего конкретного.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 14:18:29

{позволяет стрелять себе в ногу,}
Если в ногу - так и ХсН. Вот если, например, надо обновлять индикатор каждые 3 мС, а епром пишет 10 мС, то это как и яйца отстрелить.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 14:19:27

Хотя вы, само-собой, можете считать, что ЦТ не имеет ни малейшего отношения к электронике.

К радиотехнике - так точно. Это отдельный пласт.

Просто говорили о том, что это плохая идея/практика и даже объяснили почему.

Я так и не увидел объяснения. Просто отсылки на практику и не более того.


Потому, что это не будет режимом "глубокого сна" (Power Down). Для того, чтобы таймеры тикали, есть другие режимы энергосбережения.

Можно подумать, что их много. Всего-то один - IDLE. Но это у AVR так. В MSP430 совершенно иначе. Асинхронный таймер тикает себе и тикает, потребляя менее микроампера. AVR такое и не снилось даже.

Re: attiny13 и PCINT0 в железе

Чт мар 18, 2021 15:12:56

Land. Если ты так себя ведёшь, ты сам себе злобный Буратина. Мне вообще на тебя накласть. Это походу ты какие то свои обидки на нас проецируешь.
Ответить