Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 15.11.2007, 10:57  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от nokazus
... Но точно знаю, что во многих процессорах ядро не станет обрабатывать прерывание, пока обрабатывается прерывание с таким же приоритетом.
Поскольку ни в одном даташите я таких сведений не встречал, хочу спросить - это где-то описано или на уровне непроверенных наблюдений? Специально проверялось? Если да, то - на каких камнях?
Реклама:
tempora вне форума  
Непрочитано 15.11.2007, 11:43  
rremix
Временная регистрация
 
Регистрация: 01.11.2006
Сообщений: 66
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rremix на пути к лучшему
По умолчанию

Цитата:
Поскольку ни в одном даташите я таких сведений не встречал, хочу спросить - это где-то описано или на уровне непроверенных наблюдений? Специально проверялось? Если да, то - на каких камнях?
во всех даташитах в разделе Interrupts написано как они работают на конкретном камне. Для АВР (в частности МЕГА64) приоритет прерывания определяется его позицией в таблице векторов (т.е. жестко задан аппаратно). Думаю, что в других АВР недалеко ушли.
На тему выдергивания переменной побайтно:
а зачем под контроллер писать как под ПиСи? предложенный код ресурсов сожрет немеряно. гораздо проще:
Код:
unsigned long a;
char * ptr=(char *)&a;
Send(*(ptr++));
Send(*(ptr++));
Send(*(ptr++));
Send(*(ptr++));
а вообще удобней перед началом передачи готовить данные в буфере, а лишь потом начинать передачу. В этом случае проще использовать memcpy:
Код:
unsigned long a;
char  buf[BUFSIZE];
char bufptr = 0;
memcpy(&buf[ptr],&a,sizeof(a));
bufptr+=sizeof(a);
PS: Наглядность и эстетичность кода - дело святое. Особенно это понимаешь, когда меняешь чужую прогу, написанную по принципу "работать будет, и хорошо"
rremix вне форума  
Непрочитано 15.11.2007, 12:28  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от tempora
Сообщение от nokazus
... Но точно знаю, что во многих процессорах ядро не станет обрабатывать прерывание, пока обрабатывается прерывание с таким же приоритетом.
Поскольку ни в одном даташите я таких сведений не встречал, хочу спросить - это где-то описано или на уровне непроверенных наблюдений? Специально проверялось? Если да, то - на каких камнях?
Выдержки из ДШ на Mega8. Что касается приоритета rremix абсолютно прав:
Цитата:
The lowest addresses in the Program memory space are by default defined as the
Reset and Interrupt Vectors. The complete list of Vectors is shown in “Interrupts” on
page 44. The list also determines the priority levels of the different interrupts. The lower
the address the higher is the priority level. RESET has the highest priority, and next is
INT0 – the External Interrupt Request 0.
Что касается запрета в AVR:
Цитата:
When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts
are disabled. The user software can write logic one to the I-bit to enable nested interrupts.
All enabled interrupts can then interrupt the current interrupt routine. The I-bit is
automatically set when a Return from Interrupt instruction – RETI – is executed.
Если нужны комментарии на русском - пишите.
2 rremix
По преобразованию в байты. Тут Вы совершенно правы. Просто я не знаю как компилятор CV сделает кусок со сдвигами. Может он очень умный и сформирует временную переменную, которую будет сдвигать последовательно на 8 бит. Терзают сомнения, но кто его знает. Не работаю я с CV. Адресная ссылка или буфер - "правильное" решение. В ковычках, потому что строгих правил тут нет. Скорее это общепринято.
Удачи.
nokazus вне форума  
Непрочитано 15.11.2007, 12:56  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Что касаемо пиков - то при вызове прерывания устанавливается автоматом бит запрета прерываний gie в 0. При выполнении возврата retif тоже идет автоматическая установка его в 1. Так что ситуация с переполнением стека ... Вряд ли.
urry вне форума  
Непрочитано 15.11.2007, 15:40  
Plant
Частый гость
 
Регистрация: 11.01.2005
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Plant на пути к лучшему
По умолчанию

Сообщение от urry
Что касаемо пиков - то при вызове прерывания устанавливается автоматом бит запрета прерываний gie в 0. При выполнении возврата retif тоже идет автоматическая установка его в 1.
Для АВРов такая же фигня ...
Plant вне форума  
Непрочитано 15.11.2007, 16:17  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

rremix, nokazus, urry - вы меня неверно прочитали. Поясню мысль. Итак, nokazus утверждал, что два прерывания от одного источника запрещены к вложению аппаратно, на уровне ядра, вот его слова:
Цитата:
а)... точно знаю, что во многих процессорах ядро не станет обрабатывать прерывание, пока обрабатывается прерывание с таким же приоритетом ...
б)... Например, в MSC-51 есть скрытый регистр (подчеркнуто мной, t.), запрещающий реакцию на прерывания (с таким же или низшим приоритетом) на время от начала реакции (занесения в стек адреса возврата) до исполнения команды reti.
Про то, что большинство камней (если не все) при возникновении прерывания выставляют флаг, запрещащющий вложенные прерывания от того же источника (а иногда и глобально), я, слава богу, знаю - читать не разучился еще , но флаг этот можно сбросить программно, разрешив вложенные прерывания одного и того же типа, а nokazus высказал мысль прежде мне неизвестную - что ядро не будет обрабатывать такое же прерывание, пока не выполнится инструкция iret. Если он прав, то сбрасывай флаг программно, не сбрасывай - вложенных прерываний все равно не будет. Есть разница?
Таки, я хотел бы услышать ответ на свой вопрос от nokazus'а и других участников... мм? Только, плиз, говорите о фактах - здравый смысл уже весь прозвучал.
tempora вне форума  
Непрочитано 15.11.2007, 17:09  
Plant
Частый гость
 
Регистрация: 11.01.2005
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Plant на пути к лучшему
По умолчанию

Сообщение от tempora
Таки, я хотел бы услышать ответ на [u]свой вопрос
При входе в обработчик прерываний флаг глобального разрешения прерываний "I" аппаратно сбрасывается . Но его можно программно установить для разрешения вложенных прерываний .... Действительно интересно узнать , что будет если условия для данного (первого) прерывания ещё не прошли или опять наступили - например на входе внешнего прерывания присутствует необходимый уровень . По идее тогда МК "приклинет" , заполнится до отказа стек и проц подвиснет .Короче будет ЗЛО .
Но если требуется обработать вложенные прерывания , то можно попробовать в теле обработчика перед установкой флага "I" запретить первичное прерывание , а по выходу из него -снова разрешить .
Plant вне форума  
Непрочитано 15.11.2007, 17:15  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от Plant
Действительно интересно узнать , что будет если условия для данного (первого) прерывания ещё не прошли или опять наступили - например на входе внешнего прерывания присутствует необходимый уровень .
Тогда установится флаг прерывания, и если его програмно не очистить, то как только будут разрешены общие прерывания, программа перейдет на вектор прерывания...
Кстати это все четко прослеживается в аврстудио
dimonbest вне форума  
Непрочитано 15.11.2007, 17:21  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

1. MSC-51 не сбрасывает/восстанавливает общий флаг запрета прерываний во время обрабртки.
2. Приоритет прерываний может изменяться (для 52). Существует 2 уровня, во время обработки низшего, может обрабатываться прерывание с высшим приоритетом.
3. В даташите Вы никогда не найдете описания работы регистров, недоступных пользователю. Фирменную техническую документацию не читал (кроме ДШ и АПН).
4. В книге "Проектирование цифровых устройств на однокристальных микроконтроллерах" В.В. Сташин, ... , которую я уважаю, на стр.77 написано
Цитата:
Система прерываний сформирует аппаратурно вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблогирована одним из следующих условий:
...
5. Блокировка может быть осуществлена только триггером, как элементом, сохраняющим устойчивое состояние.
6. Разницы между триггером и регистром не вижу.

Все. Дела. Удачи.
nokazus вне форума  
Непрочитано 15.11.2007, 17:21  
Plant
Частый гость
 
Регистрация: 11.01.2005
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Plant на пути к лучшему
По умолчанию

Сообщение от dimonbest
Тогда установится флаг прерывания, и если его програмно не очистить, то как только будут разрешены общие прерывания, программа перейдет на вектор прерывания...
Я же про то же (для АВР)... Если это делать в обработчике , то после установки общего флага , опять произойдет это -же прерывание (если правда оно первое по приоритету) . Опять вызов этого же обработчика и т д , пока не заполнится стек .
Plant вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Схема на частотомер smg123 Измерительное оборудование 5 08.09.2007 02:48
Частотомер Ч3-34А Modul-x Поиск схем. Делимся схемами 0 24.08.2007 23:00
Частотомер ЦД2120.1 Slava_shp Поиск схем. Делимся схемами 0 10.08.2007 21:18
Частотомер KLMZ Измерительное оборудование 4 12.01.2007 12:06


Часовой пояс GMT +4, время: 01:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot