Например TDA7294

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

Текущее время: Ср дек 10, 2025 11:57:50

Часовой пояс: UTC + 3 часа


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



Начать новую тему Ответить на тему  [ Сообщений: 70 ]    , 2, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт июл 22, 2025 16:57:12 
Мудрый кот

Карма: 25
Рейтинг сообщений: 483
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1780
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
После того, как МК перезагрузится из-за проблема, распечатайте этот регистр и приведите содержимое.
(Думаю над МК над 8-pins AVR с отладкой - миссия почти невыполнима).
---
Если нет другого варианта - "телефрагируйте" его содержимое через один выход со LED :).

Код:
MCUSR – MCU Status Register
The MCU Status Register provides information on which reset source caused an MCU Reset.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт июл 22, 2025 17:46:35 
Поставщик валерьянки для Кота

Карма: 34
Рейтинг сообщений: 313
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Сообщений: 2132
Откуда: Харьков
Рейтинг сообщения: 0
Цитата:
После того, как МК перезагрузится

Он НЕ ПЕРЕЗАГРУЖАЕТСЯ, а просыпается и продолжает выполнять код с текущего места (и с текущими значениями переменных), не выполняя обработчик прерывания. Перезагрузка была бы заметна по сбросу в ноль переменной m_index - она остаётся с тем значением, которое было в неё записано.
Подозреваю, что дело всё-таки в кнопке с токопроводящей резинкой - при нажатии напряжение на пине поднимается недостаточно быстро.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт июл 22, 2025 19:49:05 
Мудрый кот

Карма: 25
Рейтинг сообщений: 483
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1780
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Тогда сразу после пробуждения подождите некоторое время, прежде чем принимать какие-либо новые решения. Так динамические вариации состояния кнопок будут игнорироваться.

Вот как "пробуждаю" ATtiny13A одной из двух кнопок, затем через 5 секунд он снова "засыпает".

Код:
#define PIN_TA  PB1
#define PIN_TI  PB2
...
  PORTB |= (1 << PIN_TI) | (1 << PIN_TA);  // pull-ups
  GIMSK |= (1 << PCIE);                    // sets the Pin change interrupt mask
  PCMSK |= (1 << PCINT1) | (1 << PCINT2);  // wake up from PB1 or PB2
...
  если время > 5000 ms  {
    sei();
    WDTCR &= ~(1 << WDTIE);  // disable Watchdog Timer interrupt
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    sleep_cpu();
  }

ISR(PCINT0_vect) {  // wake up
  sleep_disable();
  cli();
  WDTCR |= (1 << WDTIE);  // enable Watchdog Timer interrupt
}

Потребление равно нулю :) (почти) - одна батарейка CR2032 с 02.2023 работает до сих пор.
Не то чтобы пользовался устройством, но саморазряд определенно выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср июл 23, 2025 02:34:58 
Поставщик валерьянки для Кота

Карма: 34
Рейтинг сообщений: 313
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Сообщений: 2132
Откуда: Харьков
Рейтинг сообщения: 0
Ещё два вопроса по внешним прерываниям.
1. Безопасно ли на лету менять значения PCMSK и/или GIMSK? Не могу отследить, почему очень редко (два раза за неделю при сотнях запусков в день как от часов, так и с кнопки) контроллер намертво зависает. Есть подозрение на запись в PCMSK (включение внешнего прерывания) непосредственно перед уходом в спящий режим.
2. Можно ли сделать обработчик прерывания полностью пустым, т. е. использовать внешнее прерывание чисто для пробуждения чипа?

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


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср июл 23, 2025 04:56:58 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
Приветствую.
1 - Думаю, прежде чем делать такие изменения, лучше глобально запретить прерывания командой
Код:
 CLI

2 - Можно. Например
Спойлер
Код:
   .INCLUDE "tn25def.inc"

.def   R_FF=R19
;*******************************
   .CSEG
RESET:
   RJMP   START
.org   0x02   ;PCINT0
   RET      ;RETI
.org   0x05   ;T0_OVER
   RETI
;*************************************************
START:
;   SER   R_FF

   SBI   PORTB,2   ;включить подтяжку

;   OUT   DDRB,R_FF

   SBI   ACSR,ACD

   LDI   R16,1<<PRTIM1|1<<PRUSI|1<<PRADC
   OUT   PRR,R16
;запретить тактирование неиспольэуемых модулей
   LDI   R16,1<<PCINT2
   OUT   PCMSK,R16

   LDI   R16,1<<PCIE
   OUT   GIMSK,R16
   OUT   GIFR,R16

   LDI   R16,1<<SE|1<<SM1
   OUT   MCUCR,R16   ; режим SLEEP PWD

   LDI   R16,1<<TOIE0      ;1<<OCIE0A
   OUT   TIMSK,R16   ;разрешить прерывание Timer0_OVER
   OUT   TIFR,R16

   LDI   R16,1<<CS10      ;R16=1
   OUT   TCCR0B,R16
GO:
;   LDI   ZH,HIGH(2*TB_02)
;   LDI   ZL,LOW(2*TB_02)

WAIT:
   SEI
   SLEEP
   NOP
   BRID   VAR_KEY
;обработка прерываний от других модулей
;*
;*
;*
   RJMP   WAIT
;*******
VAR_KEY:
;обработка внешнего прерывания
;*
;*
;*
   RJMP   WAIT
.EXIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт авг 05, 2025 16:10:40 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 151
Рейтинг сообщения: 0
Не могу отследить, почему очень редко (два раза за неделю при сотнях запусков в день как от часов, так и с кнопки) контроллер намертво зависает.

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

Можно ли сделать обработчик прерывания полностью пустым, т. е. использовать внешнее прерывание чисто для пробуждения чипа?

Вроде как изначально все обработчики прерывания пустые, на месте вектора прерывания просто стоит команда RETI.

Насчёт дребезга. Надо сделать нормальную программную защиту от дребезга кнопки, это просто, а не надеяться на авось. В нормальной среде разработки есть готовая команда, чтобы не морочиться.

После того, как МК перезагрузится из-за проблема, распечатайте этот регистр и приведите содержимое.
(Думаю над МК над 8-pins AVR с отладкой - миссия почти невыполнима).

Дело не в МК AVR, а в отсутствии или наличии хорошей среды разработки и программатора-отладчика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт авг 05, 2025 16:36:00 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
AQ29 писал(а):
адо сделать нормальную программную защиту от дребезга кнопки, это просто, а не надеяться на авось. В нормальной среде разработки есть готовая команда, чтобы не морочиться.
Приведите , пожалуйста, команду языка Си, на котором пишет ТС, что бы защититься от дребезга?

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт авг 05, 2025 18:02:36 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3415
Откуда: Казань
Рейтинг сообщения: 2
Just_Fluffy, пожалуйста. :)

Код:
#define BROTHERLY_ANTI-BOUNCE "Не дребезжи по-братски есть же!"

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт авг 05, 2025 19:08:59 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
smacorp, использование данного дефайна даст ашыбку компиляции...
Обернуть строку в какой то printf надо....
И вообще, в нормальных средах разработки такие дефайны не нужны. Там уже все есть встроенное. И одна большая кнопка - сгенерировать код. Даже думать не надо, жми и наслаждайся

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Вт авг 05, 2025 19:30:08 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3415
Откуда: Казань
Рейтинг сообщения: 0
Just_Fluffy, ашыбку не даёт, даёт ворнинг:

Код:
src\main.cpp:9:23: warning: ISO C++11 requires whitespace after the macro name
 #define BROTHERLY_ANTI-BOUNCE "Не дребезжи по-братски есть же!"
                       ^

Вот релиз:

Код:
#define BROTHERLY_ANTIBOUNCE "Не дребезжи по-братски есть же!"

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 05:34:37 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
...Вроде как изначально все обработчики прерывания пустые, на месте вектора прерывания просто стоит команда RETI...
Зависит от среды разработки. На ассемблере делается вручную и необязательно RETI. Можно, при необходимости, выйти из обработчика по RET, т.е. с запретом прерываний. В вышеприведенном примере именно таким образом разделяются события, вызвавшие прерывание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 10:28:54 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 151
Рейтинг сообщения: 0
Приведите , пожалуйста, команду языка Си, на котором пишет ТС, что бы защититься от дребезга?

На СИ не работаю, на мой взгляд, морочный язык. На котором работаю, есть простая команда чтения кнопок с подавлением дребезга и без всякого «обёртывания».
Чтение кнопок очень часто используется, поэтому, на мой взгляд, должна быть в хороших языках, это удобно.

Обычно надо дождаться окончания дребезга, затем отпускания кнопки, потом выполнять программу. Неясно, как сделано у ТС, возможно, тут заморочка.
Зависит от среды разработки. На ассемблере делается вручную и необязательно RETI. Можно, при необходимости, выйти из обработчика по RET, т.е. с запретом прерываний. В вышеприведенном примере именно таким образом разделяются события, вызвавшие прерывание.

Ассемблеры разные бывают. На близком к ассемблеру программе АБ вроде как RETI автоматически прописываются.
В моём случае можно включить или выключить эту автоматику.
Стандартный выход из прерывания по RETI вроде как предпочтительнее. Насколько обоснован нестандартный выход – вопрос.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 11:36:13 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
AQ29, но ведь топикстартер пишет на си. Зачем вы ему рекламируете АБ и ваш современный ассемблер и среду разработки, имя которой вы так нигде и не назвали?

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 17:50:15 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
Даёшь неморочный АБ в массы!
На ассемблере можно почти всё сделать одной командой. На макроассемблере.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 18:11:34 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
OKF писал(а):
Даёшь неморочный АБ в массы!
Пардоньте, но нет.
Лио нормальный асм, либо си.... А вот это вот... поделие... хоть и визуальное, и ассемблерно-приближенное... Может, если бы я потрогала АБ до изучения асма - то может и зашло б... Но обычный асм и студия 4й версии - наше всё.
А может и не зашло, ибо до микроконтроллеров было много программирования на си, паскале, pl/sql, немного на JS..

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 21:28:34 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
А вот начинала бы с Бейсика, тогда и АБ засчастье был бы.)
Серьёзно. Это потому что люди не с того начали. Вот сознание и исказилось.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Ср авг 06, 2025 22:55:26 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
OKF, не поверишь, но в школе был Бейсик. В студенчестве - Паскаль. На халтурке - Борланд Си++

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Чт авг 07, 2025 09:09:10 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
OKF, не поверишь, но в школе был Бейсик.

Значит кто-то пошел неправильным путём. Бывают исключения. Видать халтурки этому виной.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Чт авг 07, 2025 17:28:20 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
Да не халтурки, а уроки информатики... Сначала алгоритм ы тетради, а потом превращение алгоритма в текст программы. И препод правильно сказал - что, имея алгоритм, не важно, какой потом будет язык программирования. А учили нас Бейсику, поскольку он был прописан в школьной программе для школ, которые оборудованы были компьютерными классами.

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny45 - странность с внешним прерыванием
СообщениеДобавлено: Пт авг 08, 2025 21:16:31 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 151
Рейтинг сообщения: 0
AQ29, но ведь топикстартер пишет на си. Зачем вы ему рекламируете АБ и ваш современный ассемблер и среду разработки, имя которой вы так нигде и не назвали?

Тут вроде рекламы нет. На чём пишу, пока в разработке, да и имени пока нет, хотя в ваших постах неявно прозвучал интересный вариант названия.

Кстати, в моём варианте поиск такой ошибки был бы скорее всего очень простым. За несколько минут поставил несколько команд по ходу программы – вот и ясен путь программы и значения переменных в этих точках.
А вот так на СИ тратить массу времени на простую ошибку - это не моё.

Даёшь неморочный АБ в массы!
На ассемблере можно почти всё сделать одной командой. На макроассемблере.)

АБ давно устарела. Запоздали вы с таким лозунгом лет на 20.
Сомневаюсь в таких возможностях макроассемблера. Наверно, даже прочитать кнопки без дребезга одной командой не получится.

OKF, не поверишь, но в школе был Бейсик. В студенчестве - Паскаль. На халтурке - Борланд Си++

Что вы так на бейсик обрушились. Для компьютера и сейчас бейсик вроде как активно развивается, только название стало Visual Basic.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 70 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: Santa55 и гости: 26


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

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


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