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

 
 
> __raw прерывания
fmdost
сообщение Jun 11 2007, 22:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Доброго времени суток, подскажите pls как в прерывании перенести сохранение регистров по своему усмотрению. Мне нужно как можно быстрее дёрнуть ногой, а потом выполнить С код.

камень mega88;

__interrupt //Штатно сохраняет все далее используемые регистры.

// и только после этого
PORTx=1;

//~далее С код

==========
А надо так

__interrupt

PORTx=1;

//Штатно сохранить все далее используемые регистры.
//~С код

В асме так делается очень часто, в описании на IAR и на CAVR нашёл только __raw, но он не сохраняет регистры вообще.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
fmdost
сообщение Jun 12 2007, 13:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Принцип такой tc0 это прерывание по переполнению
tc0_compa это прерывание по сравнению, с tco
тс0 0-255 как досчитал так прерывание, и с 0 и тд.
tc0_compa любое число 0-255 как только tc0=tc0_compa так прерывание.
tc0 используется для зажигания цифры
тс0_compa для гашения(автоматическая регулировка яркости). Вот тут то и загвоздка! При малых значениях tc_compa заметен "муар" на индикаторе.

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

Насчёт иара. Если там нет вещей которые применяются в 60% случаев, то возникает вопрес о целесообразности применения подобных сред. Поэтому НЕВЕРЮ.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 12 2007, 14:57
Сообщение #3


Гуру
******

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



Цитата(Т.Достоевский @ Jun 12 2007, 16:58) *
Вот тут то и загвоздка! При малых значениях tc_compa заметен "муар" на индикаторе.
Занесите в tc_compa значение на "лишние" 5-10-20 (сколько там вам не хватает тактов) меньше. Прерывание будет возникать на столько же тактов раньше. "Муар" изчез? Нет. Вывод - виновата не _константная_ задержка, которая возникает из-за сохранения контекста, а джиттер, который возникает из-за того, что в момент возникновения этого прерывания обрабатывалось другое прерывание или какой-либо другой кусок кода, во время которого прерывания запрещены. Копайте там. Или используйте вывод compa, который формируется аппаратно и не зависит от запрета/разрешения прерываний. Не верите - сделайте как написал singlskv и убедитесь.
Цитата(Т.Достоевский @ Jun 12 2007, 16:58) *
Ещё раз повторю что, программа есть на асме. И прерывание там значительно длиннее по времени чем на С (На С я и так уже выкинул всё что мог).
А я вам повторю, что _константная_ задержка в этом месте не виновата.
Цитата(Т.Достоевский @ Jun 12 2007, 16:58) *
Насчёт иара. Если там нет вещей которые применяются в 60% случаев, то возникает вопрес о целесообразности применения подобных сред. Поэтому НЕВЕРЮ.
Вопрос о целесообразности каждый решает для себя сам. Вы можете решить его в пользу асма. Раз там нет таких вещей, значит ваша цифра 60% завышена как минимум на два порядка. Делайте выводы.


--------------------
На любой вопрос даю любой ответ
"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
singlskv
сообщение Jun 12 2007, 16:05
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Сергей Борщ @ Jun 12 2007, 18:57) *
Не верите - сделайте как написал singlskv и убедитесь.

Если честно, я вобще не вникал в суть алгоритма/проблемы автора smile.gif
На сахаре автар попросил не вникать 07.gif

А вобще как-то это все странно, 25 лишних тактов и уже мерцание...

Афтар, приведите минимальный код в котором будет эта проблема
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Т.Достоевский   __raw прерывания   Jun 11 2007, 22:07
- - rezident   Вам в пустыне уже все разжевали, теперь еще и тут ...   Jun 11 2007, 22:50
- - Т.Достоевский   Это СОВСЕМ не то что мне нужно, тк он НЕ СОХРАНИЛ ...   Jun 11 2007, 23:10
- - rezident   Опс! Ну да. Вы правы. Я забыл что это прерыван...   Jun 11 2007, 23:32
- - Т.Достоевский   Но тогда придётся сохранять юзанные регистры ручка...   Jun 11 2007, 23:39
|- - Сергей Борщ   Цитата(Т.Достоевский @ Jun 12 2007, 02:39...   Jun 12 2007, 06:34
|- - IgorKossak   Цитата(Т.Достоевский @ Jun 12 2007, 02:39...   Jun 12 2007, 07:37
||- - Сергей Борщ   Цитата(IgorKossak @ Jun 12 2007, 10:37) Э...   Jun 12 2007, 10:30
|- - singlskv   Цитата(Т.Достоевский @ Jun 12 2007, 03:39...   Jun 12 2007, 13:59
- - Т.Достоевский   "Ваша ошибка в самом алгоритме, вам на нее =A...   Jun 12 2007, 11:29
|- - Сергей Борщ   Цитата(Т.Достоевский @ Jun 12 2007, 14:29...   Jun 12 2007, 12:46
|- - Т.Достоевский   Цитата(singlskv @ Jun 12 2007, 20:05) Есл...   Jun 12 2007, 16:14
- - Т.Достоевский   Вы совеошенно правы прерывание мешает другое (адс)...   Jun 12 2007, 15:56
|- - singlskv   Цитата(Т.Достоевский @ Jun 12 2007, 19:56...   Jun 12 2007, 16:15
|- - Т.Достоевский   Цитата(singlskv @ Jun 12 2007, 20:15) jmp...   Jun 12 2007, 16:19
|- - singlskv   по Вашей ссылке прерывания ADC не увидел, дальше н...   Jun 12 2007, 16:36
- - Т.Достоевский   В том то и дело, в меге нету абсолютного jmp!....   Jun 12 2007, 16:48
- - slog   Ты и тут уже :-) __indirect_jump_to((unsigned lon...   Jun 12 2007, 17:11
|- - Т.Достоевский   Цитата(slog @ Jun 12 2007, 21:11) Ты и ту...   Jun 12 2007, 17:15
||- - singlskv   Цитата(Т.Достоевский @ Jun 12 2007, 21:15...   Jun 12 2007, 17:21
||- - rezident   Цитата(singlskv @ Jun 12 2007, 23:21) не....   Jun 12 2007, 19:57
|- - Т.Достоевский   Цитата(slog @ Jun 12 2007, 21:11) __indir...   Jun 12 2007, 20:14
|- - rezident   Цитата(Т.Достоевский @ Jun 13 2007, 02:14...   Jun 12 2007, 20:37
- - Т.Достоевский   __indirect_jump_to((unsigned long)&Имя_функции...   Jun 12 2007, 20:49
|- - Сергей Борщ   Цитата(Т.Достоевский @ Jun 12 2007, 23:49...   Jun 13 2007, 07:07
|- - Т.Достоевский   Цитата(Сергей Борщ @ Jun 13 2007, 11:07) ...   Jun 13 2007, 09:50
|- - IgorKossak   Цитата(Т.Достоевский @ Jun 13 2007, 12:50...   Jun 13 2007, 14:19
|- - Т.Достоевский   Цитата(IgorKossak @ Jun 13 2007, 18:19) Т...   Jun 13 2007, 17:02
|- - IgorKossak   Цитата(Т.Достоевский @ Jun 13 2007, 20:02...   Jun 13 2007, 18:21
|- - Т.Достоевский   Цитата(IgorKossak @ Jun 13 2007, 22:21) Н...   Jun 13 2007, 19:24
- - slog   Незнаю #pragma vector = TIMER0_OVF0_vect __interr...   Jun 13 2007, 04:03
- - Rst7   Делаю так обычно, ужос конечно, но что поделать: ...   Jun 13 2007, 08:12
- - SasaVitebsk   Извините, что я вмешиваюсь в столь лихо закрученну...   Jun 13 2007, 20:20
|- - Т.Достоевский   Цитата(SasaVitebsk @ Jun 14 2007, 00:20) ...   Jun 13 2007, 21:04
- - Rst7   Про недокументированные модификаторы для AVR поищи...   Jun 14 2007, 05:12
- - SasaVitebsk   В этом смысле платформы для микропроцессоров даже ...   Jun 14 2007, 17:44
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Jun 14 2007, 20:44) ...   Jun 14 2007, 18:37
|- - Т.Достоевский   Цитата(SasaVitebsk @ Jun 14 2007, 21:44) ...   Jun 14 2007, 18:42
- - IgorKossak   Вот и славненько! На этой мажорной ноте предла...   Jun 14 2007, 21:04
- - Т.Достоевский   Цитата(IgorKossak @ Jun 15 2007, 01:04) В...   Jun 14 2007, 21:39


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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