Например TDA7294

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





Текущее время: Пт апр 19, 2024 01:01:14

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


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



Начать новую тему Ответить на тему  [ Сообщений: 49 ]    , , 3
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 14:37:35 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
это самое начало кода (ассемблер и прошивка на языке МК): сначала (h00) ссылка на начало исполнимого кода(reset), потом ссылки на начала подпрограмм прерываний (h02 - int0, h04 - int1 и т.д....) эти ссылки стоят здесь жестко (при компиляции меняется записанный в них вектор) т.е при вызове инт0 контроллер прыгнет на 2е слово (1слово = 2 байта) прошивки (это железно в нём заложено) и прочитает там команду перехода на обработчик прерывания.
распишу по кодевижну (думаю в других С компиляторах ненамного отличается): гдето недалеко от исполнимого файла есть папка "inc" в ней файлы по названиям микросхем, в них адреса перевода битов, регистров, переходов... для перевода с человеческого языка на машинный цифровой, покопайся, может станет понятней (только не меняй ничего), а ещё можно почитать книги, (наверно лучше или про устройство МК или по ассемблеру - он к железу ближе), (конкретных не посоветую, но думаю, сейчас коты помогут).
пс: тот кусок, что я приводил - это перевод из С в ассемблер (а потом уже он превращается в прошивку) - если открыть этот файл целиком, то можно увидеть, насколько много скрыто от С программиста :)


когда мы прописываем обработчик компилятор его помещает куда считает нужным, но ссылку закидывает получается по адресу вектора прерывания для INT0 $002 простым языком по адресу вектора прерывания хранится ссылка на обработчик так чтоли? так же в принципе можно и вручную закинуть ссылку какой-нибудь функции по адресу вектора прерывания и не прописывать обработчик...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 15:27:41 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
в ассемблере, наверно, даст, а вот как в С это сделать я не знаю.
кстати не ссылка, а команда перехода, ассемблерщики иногда туда RETI вписывают и получается сразу выход обратно в исходную программу, или вписывают переход на подпрограмму вывода ошибки (чтобы зафиксировать неправильный переход).

Добавлено after 2 minutes 28 seconds:
только полезность сих манипуляций в готовом изделии сомнительна (т.к. этих переходов не должно быть впринципе, и добиться этого не сложно - достаточно не накосячить с масками прерываний)

Добавлено after 1 minute 57 seconds:
ROMan2947 писал(а):
в принципе можно и вручную закинуть ссылку какой-нибудь функции по адресу вектора прерывания и не прописывать обработчик...
:))) :))) :))) так эта функция и станет обработчиком

Добавлено after 28 minutes 37 seconds:
а вообще туда можно любую команду вставить, она будет выполнена, счетчик команд инкрементируется и АЛУ приступит к выполнению следующей команды (той, что отвечает за следующее прерывание)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 16:07:46 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
так эта функция и станет обработчиком
в моем понимании обработчик это ISR(INTn_vect) я ошибаюсь?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 16:24:18 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
если рассматривать всё это взглядом ассемблерщика (а ассемблер к железу всётаки ближе) обработчик прерывания и обработчик подпрограммы похожи: и там и там в стек запихивается текущее состояние исполняемой программы, а после завершения извлекается обратно, но при завершении прерывания ещё восстанавливается флаг I. в С они, конечно, не взаимозаменяемы, в С вообще много что упрощено для понимания и скрыто (повторяюсь) от программиста, но, если хочешь понять железо - учи ассемблер, ну или хотябы алгоритмбилдер скачай (там, правда, вопросы прерываний тоже не совсем прозрачны, но поизгаляться хватит :)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 18:38:58 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...и там и там в стек запихивается текущее состояние исполняемой программы...

На самом деле - только адрес возврата.
...при завершении прерывания ещё восстанавливается флаг I...

Командой RETI.

Добавлено after 2 minutes 33 seconds:
...вручную...

Всё, что заблагорассудится.

Добавлено after 2 minutes 31 second:
...а вообще туда можно любую команду вставить...

и если это команда перехода, то инкремента не будет (ну, если это не команда jmp $+1).

_________________
Docendo discimus


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Пт фев 23, 2018 19:09:50 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
1) аппаратно адрес возврата, но, часто сами компиляторы дописывают сохранение-восстановление части регистров.
2) ну, да RETI, но на С такого оператора нет... его сам компилятор подставляет при выходе из прерывания. при выходе из подпрограммы используется оператор RET, но в ассемблере никто не запретит их использовать и наоборот (например если при выходе из прерывания I восстанавливать не надо, и, хоть это дурной тон и источник граблей, МК команду поймёт).
4) конечно, о каком инкременте речь, если и так обращение к счетчику команд идет.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Сб фев 24, 2018 06:41:00 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
1. чтобы не загружать программиста рутиной. Заметь - именно те регистры, которые используются в данной подпрограмме.
2. С сам определяет что подставить, разгружая программиста. Точно так же никто не запретит программисту сделать так, как ему нужно, а не компилятору.
4. " туда можно любую команду вставить, она будет выполнена, счетчик команд инкрементируется"

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Сб фев 24, 2018 07:28:23 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
4) признаю, я имел в виду, что эта область ни чем не отличается от другой области памяти программ и выполняется код, записанный туда, как код, записанный в другом месте, только попасть на исполнение этого кода также можно словив прерывание.
пс. pyzhman, внимание к мелочам, особенно когда у когото его больше чем у тебя, конечно раздражает, но это правильно, и да восторжествует истина! :beer:

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прерывания в AVR
СообщениеДобавлено: Сб фев 24, 2018 14:21:34 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
И да будет мир во всём мире!

_________________
Docendo discimus


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


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

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


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