реклама на сайте
подробности

 
 
6 страниц V  « < 3 4 5 6 >  
Reply to this topicStart new topic
> Приоритет прерываний, и прерывание прерываний
ReAl
сообщение Sep 1 2008, 11:20
Сообщение #61


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Rst7 @ Sep 1 2008, 14:02) *
Кстати, не пора ли любителям гнуся озаботиться патчем для него, дабы он смотрел, востребованы ли в обработчике эти регистры?
Да давно пора, но некому :-(
Я вон обещал потестить один патч и то утонул на несколько недель, даже на форумы почти не заглядывал. Что-то тормозить голова начинает :-( Куда уж в потрохах разбираться.
А тот небольшой коллектив, который что-то реальное делает - просто не успевает всё.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 11:21
Сообщение #62


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Rst7 @ Sep 1 2008, 10:07) *
Кстати, где вы там нашли 83 такта на все?

Кодвижн такие времена даёт для интиджер.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 1 2008, 11:24
Сообщение #63


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Кодвижн такие времена даёт для интиджер.


Дык пользуйте вменяемые компиляторы smile.gif

И не лобовые алгоритмы wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 1 2008, 11:34
Сообщение #64


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(PhX @ Sep 1 2008, 11:07) *
p.s. А в WinAVR можно результат работы компилятора как в посте Rst7, да и где взять время выполнения команд? Вообщем как можно быстро расчитать время обработки прерывания?

Проэмулировать прерывание в AVR-Studio.

Запускаем отладку, открываем окно дизассемблера. Запускаем выполнение программы.

Жмем паузу. убеждаемся что стоим не на команде ®JMP/®CALL/RET. Ставим точку останова на сл. команду. Выставляем условия для возбуждения проверяемого обработчика. Запоминаем показания счетчика циклов в отладчике как C0. жмем "run". считываем показания счетчика циклов как C1. Время выполнения обработчика соответвенно (C1 - C0) + 4 такта макс длинная команда во время выполнения которой произошло прерывание.

еще вариант:
Открываем дизассемблер в отладчике, ставим break point на вектор интересующего прерывания. Запускаем отладку. Запоминаем C0 когда отладчик остановится, по шагам проходим обработчик прерывания пока из него не выйдем, тогда запоминаем C1. Время работы обработчика будет C1 - C0 + Tcall + 3такта => C1 - C0 + 8


PS: Cycle Counter находится в view->toolbars->processor.

Цитата(Rst7 @ Sep 1 2008, 14:07) *
Кстати, где вы там нашли 83 такта на все? 27+36, а если сделать через таймерное прерывание через OCR, то еще меньше.

Это не я нашел, это =GM= нашел в #46, его спросите wink.gif
Если меньше тогда вообще никаких вопросов.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 11:40
Сообщение #65


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Rst7 @ Sep 1 2008, 10:24) *
Дык пользуйте вменяемые компиляторы smile.gif

А я на асме, по старинке (:-). Хочется тратить время на задачу, а не на борьбу с компилятором, пусть и вменяемым. К примеру, у вас прерывание выполняется за 27 тактов для 8-битных переменных, а у меня на асме - за 17 для 16-битных, прямо в лоб, даже без оптимизации. Потому и спрашивал код для 16-битных. А уж что будет для 32-битных, даже не могу представить.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 1 2008, 11:45
Сообщение #66


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
К примеру, у вас прерывание выполняется за 27 тактов для 8-битных переменных, а у меня на асме - за 17 для 16-битных, прямо в лоб, даже без оптимизации.


Ага, знаем. Значения уже в регистрах, читать их из ОЗУ не надо, SREG сохраняем прямо в отведенный только для этих целей регистр. Я так тоже могу. Только неспортивно. Добавьте все сохранение/восстановление - и резултат будет тем-же.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
PhX
сообщение Sep 1 2008, 11:50
Сообщение #67


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(Rst7 @ Sep 1 2008, 16:24) *
Дык пользуйте вменяемые компиляторы smile.gif

Если не жалко пульните в PM ссылку где можно скачать свежий пролеченный IAR, а то на ftp какой-то старенький лежит.

Цитата
А я на асме, по старинке (:-).

Асм это хорошо, но голова одна, а разновидностей процессоров все больше и больше...


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 1 2008, 11:54
Сообщение #68


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(PhX @ Sep 1 2008, 14:50) *
где можно скачать свежий пролеченный IAR

eval
лечение делается отдельно и для всех одинаково (см. соотв. ветки в форуме по IAR).
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 12:05
Сообщение #69


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Rst7 @ Sep 1 2008, 10:45) *
Значения уже в регистрах, читать их из ОЗУ не надо, SREG сохраняем прямо в отведенный только для этих целей регистр. Я так тоже могу. Только неспортивно. Добавьте все сохранение/восстановление - и результат будет тем-же

При чём здесь вы? Это должен делать компилятор, причём во всех мыслимых и немыслимых ситуациях, тогда так и быть, буду его использовать.

Спортивно, неспортивно...чтобы прочувствовать разницу между 17 тактами и 27, представьте вашу зарплату 17000 или 27000 гривен...


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 1 2008, 12:18
Сообщение #70


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Это должен делать компилятор, причём во всех мыслимых и немыслимых ситуациях, тогда так и быть, буду его использовать.


Хорошее желание. Вот только качество кода, когда будет отнято минимум 2 верхних регистра у остальной программы оставит желать лучшего...

Цитата
чтобы прочувствовать разницу между 17 тактами и 27, представьте вашу зарплату 17000 или 27000 гривен...


Именно. За 27 тактов я заработаю 27000 гривен. Потому как кроме этого прерывания есть еще остальная программа, наверняка намного объемнее. И ее я буду очень долго ваять на асме. Было бы всего 30 строк - нет проблем... Обычная проблема time-to-market.

Давайте не будем спорить C vs Asm...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 12:56
Сообщение #71


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(PhX @ Sep 1 2008, 10:50) *
Асм это хорошо, но голова одна, а разновидностей процессоров все больше и больше...

То-то все сишники то и дело рассматривают ассемблерный код (:-). А чего на него смотреть, если вы пишете на си?

Или вот, попробуйте перенести ваш сишный код двух прерываний на пик18. Думаете не надо будет ничего делать? Как бы не так.

Или вы думаете, заменив одни трудности другими, будет легче? Вот на вскидку два сообщения о глюках в компиляторе иар http://electronix.ru/forum/index.php?showtopic=40698, http://electronix.ru/forum/index.php?showtopic=40231.

Ещё раз повторю, хочется тратить время на задачу, а не на борьбу с компилятором.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 1 2008, 13:11
Сообщение #72


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(=GM= @ Sep 1 2008, 15:56) *
Ещё раз повторю, хочется тратить время на задачу, а не на борьбу с компилятором.
Тратьте, кто ж вам не дает? Только не нужно агитировать за свою веру.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 1 2008, 13:12
Сообщение #73


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Sep 1 2008, 15:56) *
То-то все сишники то и дело рассматривают ассемблерный код (:-). А чего на него смотреть, если вы пишете на си?

Вообще-то это очень редкое занятие. Я например в своих проектах практически никогда не рассматриваю асм код, про причине "нахренненужности" © zltigo. На глаз видно потянет или не потянет тот или иной проц, ту или иную задачу.
Цитата
Или вот, попробуйте перенести ваш сишный код двух прерываний на пик18. Думаете не надо будет ничего делать? Как бы не так.

Конечно настройку периферии нужно будет переделать.
А в остальном (при организации программы, как приводил выше в #24 ничего менять не придется).
Цитата
Или вы думаете, заменив одни трудности другими, будет легче?

Определенно.
Go to the top of the page
 
+Quote Post
sKWO
сообщение Sep 1 2008, 15:19
Сообщение #74


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(PhX @ Sep 1 2008, 14:50) *
Если не жалко пульните ссылку где можно скачать свежий IAR

пулька на полную рабочую с к-р-я-к-о-м внутри


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 15:25
Сообщение #75


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Sep 1 2008, 12:12) *
Определенно

Ну, прекрасно, раз трудностей нет. Предлагаю в качестве эксперимента написать для авр на си программную выдачу 37-бит данных, сопровождаемых стробом:
1) смена бита на линии D
2) выждатьТо
3) строб=1 на линии C
4) выждать 2*То
5) строб=0 на линии C
6) выждатьТо
7) повторить пп1-6 N=37 раз
Простая задача, раз плюнуть.
А потом перенести сишный код на другую платформу - ЦСП TMS320F2808, To=50нс.
Вот мой код для референса
Код
sndbit:
   mov    *xar5,ah
   mov    @th,ah
   nop    
   nop    
   or     @th,#0x0002
   mov    *xar5,t
   lsr    ah,#1
   lsl64  acc:p,#1
   rpt    #6-2
   ||nop
   and    @th,#~0x0002
   mov    *xar5,t
   banz   sndbit,ar0--
   tset   *xar5,#2

Клок 100 МГц, 1такт=10нс, 20 тактов на бит, битовая скорость 5Мбит/с. Для авр 20 МГц клок ожидается 5=100/20 раз меньшую скорость, т.е. 1 МГц.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

6 страниц V  « < 3 4 5 6 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 05:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016