Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Передаю по буквам.

Отправлено ReAl 14 июля 2007 г. 16:27
В ответ на: Ответ: отправлено <font color=gray>Дктор Т_у_амОс__ес</font> 14 июля 2007 г. 15:44

1) Читал и не раз.
Если я, скажем, в обработчике одного прерывания не могу сказать "так, всё, с этого момента все, кто имеют приоритет выше меня - могут меня прервать, все, которые ниже - не могут", то нет приоритетной системы прерывания. Когда она есть, я могу одной-двумя командами разрешить более приоритетные прерывания, не задумываясь о том, какие из менее приоритетных сейчас разрешены персональными битами, какие - нет.
Покурите ещё даташиты на хотя бы классический MCS51, помедитируйте над тем, для чего там можно в обработчике прерывания сделать call на одну-единственную команду reti - станет понятно, о чём речь.
Там ещё "не совсем оно", но уже лучше (или "ещё пока лучше", учитывая возраст MCS51 и AVR :-) )
А ещё лучше на какой-то более приличный процессор, у которого в слове состояния на битик I, а поле "приоритет процессора".
Можно сказать так - у AVR есть только приоритеты ОДНОВРЕМЁННО АНАЛИЗИРУЕМЫХ ЗАПРОСОВ. Приоритетов обработчиков нет, уровень приоритета всех обработчиков один, только, как я уже говорил, некоторые из них стоят в очереди впереди. А приоритетная система - это когда очередей несколько - обычная, льготная, "для своих" :-)

Представте себе, что в каком-то процессоре глобального разрешения прерываний нет вообще. И кто-то к этому привык. А вы пытаетесь объяснить ему - насколько это удобно - одним битиком, одной командой cli поднять приоритет текущего выполняемого кода выше приоритетов всех прерываний, потом одной командой sei опустить ниже. А он говорит, что это фигня, читайте даташиты и запрещайте/разрешайте всех, кого хотите в любом порядке - это же гораздо гибче.


2) Доктор не читатель, доктор писатель.

Доктор) Опять бред...А про запрещение отдельных прерываний
Доктор) при глобальном разрешении Вы не в курсе?

перед этим я писал:

ReAl) Наэмулировать на регистрах устройств приоритетную систему, конечно,
ReAl) можно - сохраняя/сбрасывая/восстанавливая состояние разрешения для
ReAl) различных источников персонально, но это костыли.

Причём костыли в форме грабель. Ну сохранил я состояние двух "менее приоритетных" прерываний, запретил их и разрешил все. А потом окажется, что одно из "более приоритетных" по какому-то условию запрещает одно из тех "менее приоритетных", возвращает управление и тут я "восстанавливаю" в разрешение. И всё ломается. И исключить это никак нельзя - я ведь не на уровне всей низкоприоритетной "очереди" работаю, а на уровне отдельных "претендентов".
Чтобы такого не было - надо вводить дополнительные флаги и т.п., усложнять и удлиннять обработчики (все или многие) - в конце концов становится, что лучше ничего в нём не разрешать, а просто сделать своё дело и уйти - быстрее будет. Да и лишние связи между разными кусками программы ещё никого счастливее не делали и даже работу не облегчали - наоборот, затрудняется анализ (то, что предпочитаю я) или увеличивается число комбинаций, которое надо прогнать в симуляторе (что предпочитаете Вы).
Конечно, в определённых случаях можно таким образом немного улучшить ситуацию. Но когда самих прерываний мало, т.е. когда и так не так страшно.

3) да так, фигня, один UART на 2400 либо 9600 в зависимости от радиомодема - его пакеты лучше не терять, это "дорогое" удовольствие, но скорость низкая. А второй луше побыстрее, но потеря пакета не так страшна. У USART двойная буферизация, в обработчике я выбираю всё, что пришло. Там по ходу написания остальных обработчиков (и выяснения максимальной зажержки) посмотрю. Если решу, что на 115200 даже при наличии случайных потерь пакета скорость в, к примеру, 99% случаев всё равно выше, чем, допустим, при 38400 без потерь - поставлю на 115200. На этом канале я хозяин.
Каналов вообще без потерь не бывает. Ну, у простых людей типа меня. У спецов по супернадёжному - возмнжно. Когда-то и где-то.
Дело ведь не в отсутствии пропусков как таковых, если их частота достаточно низкая и на уровне протокола это прячется от более высоких уровней, то кому какое дело?



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru