Главная категория > Программаторы
AVR Studio4 и оптимизация
drfaust:
--- Цитата: Two_byte от 25/07/2014 00:50:42 ---...
На Х86 реально можно вызвать прерывание из обработчика другого, но, только программным путем.
...
--- Конец цитаты ---
Там иерархия прерываний. Поэтому если сработал, допустим int 3 для того, что бы разрешить внутри обработчика int3 клаву (int 9) надо с PICом общаться. sti/cli работают по всем int`ам (исключение виртуальные режимы, например virt 86 внутри protected 386)
--- Цитата: Two_byte от 25/07/2014 00:50:42 ---...
Volatile прочитал вчера - ничего не нарушил, все по канонам написанного. ( по моим скудным понятиям ).
...
--- Конец цитаты ---
Я давно уже ничего серъёзного не писал, мог и накосячить. Но признаки были, будто i неинициализирована... Ну а точки и запятые - это да, бич СИ, так же как и скобки (если вложенность больше пяти одну забытую скобку в гигантской функции откапать сложно - ругань компилера начинается парой-тройкой экранов ниже)
Two_byte:
Я в общем то про то же и говорил, но!!!, из допустим INT3, можно вызвать INT9 программным путем, разрешив перепрограммирование контроллера прерываний. Это я про DOS. sti, cli не берем - это глобально.
Меня больше АВР волнует - у меня прерывание по искре может быть после INT1, а, вот это задница. Правда сегодня код малька подправил. Если интересует, могу завтра кинуть.
drfaust:
--- Цитата: Two_byte от 25/07/2014 01:06:27 ---Я в общем то про то же и говорил, но!!!, из допустим INT3, можно вызвать INT9 программным путем, разрешив перепрограммирование контроллера прерываний. Это я про DOS. sti, cli не берем - это глобально.
--- Конец цитаты ---
Я не про это. Програмно я могу вызвать что угодно и когда угодно. Допустим int3 - (дебаг поинт - плохой пример), пусть будет деление на 0 = int0. Лочит всё что ниже по приоритету. Допустим я пишу свой супер-пупер обработчик этого int`a, так вот для того, чтобы принять ввод с клавы внутри "деления на 0" мне нужно через PIC контроллер разрешить int 9 (при этом остальные могут висеть залоченные), а могу просто подать PICу команду, мол я отработал и он разрешить все прерывания. При этом cli не прокатит нужно вот это:
--- Код: ---
mov al,20H ;послать сигнал "конец прерывания"
out 20H,al ; контроллеру прерываний 8259
--- Конец кода ---
Two_byte:
Вах, Федя, давно с х86 не работал, мог и забыть что-то. Но ты мне лучше по АВР скажи, если юзал. Я просто в ДШ не увидел иерархии прерываний. Поэтому лучше завтра исходник кину, там и поглядим, где я не прав.
Самое главное алгоритм правильно вписать, остальное ерунда. Мне кстати VVM сказал, что, если в программе нет деления на ноль, то это моветон.
Юр:
Да, точно, в авр есть приоритеты, но это относится к их одновременному аппаратному вызову - первым выполняется то, которое имеет меньший адрес. Ты прав. А запрета на вложения по умолчанию никакого нет.
Навигация
Перейти к полной версии