это самое начало кода (ассемблер и прошивка на языке МК): сначала (h00) ссылка на начало исполнимого кода(reset), потом ссылки на начала подпрограмм прерываний (h02 - int0, h04 - int1 и т.д....) эти ссылки стоят здесь жестко (при компиляции меняется записанный в них вектор) т.е при вызове инт0 контроллер прыгнет на 2е слово (1слово = 2 байта) прошивки (это железно в нём заложено) и прочитает там команду перехода на обработчик прерывания. распишу по кодевижну (думаю в других С компиляторах ненамного отличается): гдето недалеко от исполнимого файла есть папка "inc" в ней файлы по названиям микросхем, в них адреса перевода битов, регистров, переходов... для перевода с человеческого языка на машинный цифровой, покопайся, может станет понятней (только не меняй ничего), а ещё можно почитать книги, (наверно лучше или про устройство МК или по ассемблеру - он к железу ближе), (конкретных не посоветую, но думаю, сейчас коты помогут). пс: тот кусок, что я приводил - это перевод из С в ассемблер (а потом уже он превращается в прошивку) - если открыть этот файл целиком, то можно увидеть, насколько много скрыто от С программиста
когда мы прописываем обработчик компилятор его помещает куда считает нужным, но ссылку закидывает получается по адресу вектора прерывания для INT0 $002 простым языком по адресу вектора прерывания хранится ссылка на обработчик так чтоли? так же в принципе можно и вручную закинуть ссылку какой-нибудь функции по адресу вектора прерывания и не прописывать обработчик...
в ассемблере, наверно, даст, а вот как в С это сделать я не знаю. кстати не ссылка, а команда перехода, ассемблерщики иногда туда RETI вписывают и получается сразу выход обратно в исходную программу, или вписывают переход на подпрограмму вывода ошибки (чтобы зафиксировать неправильный переход).
Добавлено after 2 minutes 28 seconds: только полезность сих манипуляций в готовом изделии сомнительна (т.к. этих переходов не должно быть впринципе, и добиться этого не сложно - достаточно не накосячить с масками прерываний)
Добавлено after 1 minute 57 seconds:
ROMan2947 писал(а):
в принципе можно и вручную закинуть ссылку какой-нибудь функции по адресу вектора прерывания и не прописывать обработчик...
так эта функция и станет обработчиком
Добавлено after 28 minutes 37 seconds: а вообще туда можно любую команду вставить, она будет выполнена, счетчик команд инкрементируется и АЛУ приступит к выполнению следующей команды (той, что отвечает за следующее прерывание)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
если рассматривать всё это взглядом ассемблерщика (а ассемблер к железу всётаки ближе) обработчик прерывания и обработчик подпрограммы похожи: и там и там в стек запихивается текущее состояние исполняемой программы, а после завершения извлекается обратно, но при завершении прерывания ещё восстанавливается флаг I. в С они, конечно, не взаимозаменяемы, в С вообще много что упрощено для понимания и скрыто (повторяюсь) от программиста, но, если хочешь понять железо - учи ассемблер, ну или хотябы алгоритмбилдер скачай (там, правда, вопросы прерываний тоже не совсем прозрачны, но поизгаляться хватит
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
1) аппаратно адрес возврата, но, часто сами компиляторы дописывают сохранение-восстановление части регистров. 2) ну, да RETI, но на С такого оператора нет... его сам компилятор подставляет при выходе из прерывания. при выходе из подпрограммы используется оператор RET, но в ассемблере никто не запретит их использовать и наоборот (например если при выходе из прерывания I восстанавливать не надо, и, хоть это дурной тон и источник граблей, МК команду поймёт). 4) конечно, о каком инкременте речь, если и так обращение к счетчику команд идет.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
1. чтобы не загружать программиста рутиной. Заметь - именно те регистры, которые используются в данной подпрограмме. 2. С сам определяет что подставить, разгружая программиста. Точно так же никто не запретит программисту сделать так, как ему нужно, а не компилятору. 4. " туда можно любую команду вставить, она будет выполнена, счетчик команд инкрементируется"
4) признаю, я имел в виду, что эта область ни чем не отличается от другой области памяти программ и выполняется код, записанный туда, как код, записанный в другом месте, только попасть на исполнение этого кода также можно словив прерывание. пс. pyzhman, внимание к мелочам, особенно когда у когото его больше чем у тебя, конечно раздражает, но это правильно, и да восторжествует истина!
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения