Главная категория > Программаторы

AVR Studio4 и оптимизация

<< < (4/6) > >>

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 сказал, что, если в программе нет деления на ноль, то это моветон.

Юр:
Да, точно, в авр есть приоритеты, но это относится к их одновременному аппаратному вызову - первым выполняется то, которое имеет меньший адрес. Ты прав. А запрета на вложения по умолчанию никакого нет.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Произошла ошибка благодарности
Думаю...
Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
Перейти к полной версии