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

 
 
> __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
Ответов
SasaVitebsk
сообщение Jun 14 2007, 17:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



В этом смысле платформы для микропроцессоров даже лучше чем аналогичные для PC. Некоторых вещей совершенно не упоминается, к примеру, в DELFI, хотя это совершенно не мешает их использовать. Если конечно знаешь что они есть! smile.gif Но в этом как раз и вопрос!

Поэтому как бы не хвалили родную документацию, хорошая книга на русском языке от знающего автора и умеющего донести свои знания, - безусловно лучше. Только вот где эти авторы в области МК? К сожалению их практически нет и выбирать не из чего.

Приведу пример для DELFI. Использую процедуру
BitBlt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,BackGnd2.Canvas.Handl
e,0,0,SRCCOPY);
Появилась ещё в DELFI5. Подсмотрел у Стива Тейксейры и Ксавье Паченко http://www.libex.ru/detail/book66580.html. Великолепная книга, ставшая для меня настольной с совершенно отличным изложением.
В хелпе DELFI 7 упоминания о ф-ции не нашёл. Но прекрасно работает. И такие примеры - на каждом углу в области программирования на PC.

Думаю лет ч/з 20 появится хорошие книги по IAR, правда будут ли они кому нужны???


При том при всём - не отчаивайтесь. Я например недавно пытался переписать одну маленькую процедуру, которая вызывается огромное число раз, в IAR C на ассемблер. При этом следует признать, что на ассемблере я писал длительное время. Так вот при том что конкретные единичные операции удаётся написать эффективней, компилятор красивей работает с переменными. И выигрыш в результате получился плёвый, по сравнению с более грамотной Си программой. Так что я оставил Си текст, просто оптимизировал его. Вот и получается что знание ассемблера помогает красивее написать Си процедуру. Потому, что ты заранее предполагаешь как компилятор будет поступать. А следовательно - чем лучше ты знаешь компилятор - тем эффективней будут программы. Надо отходить от асемблера.
Go to the top of the page
 
+Quote Post
fmdost
сообщение Jun 14 2007, 18:42
Сообщение #3


Местный
***

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



Цитата(SasaVitebsk @ Jun 14 2007, 21:44) *
Вот и получается что знание ассемблера помогает красивее написать Си процедуру. Потому, что ты заранее предполагаешь как компилятор будет поступать. А следовательно - чем лучше ты знаешь компилятор - тем эффективней будут программы. Надо отходить от асемблера.

От себя добавлю "надо отходить от асемблера" особенно в свете появления двух, и 8-и(восьми) ядерных микроконтроллеров.
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
- - Т.Достоевский   Принцип такой tc0 это прерывание по переполнению t...   Jun 12 2007, 13:58
|- - Сергей Борщ   Цитата(Т.Достоевский @ Jun 12 2007, 16:58...   Jun 12 2007, 14:57
|- - singlskv   Цитата(Сергей Борщ @ Jun 12 2007, 18:57) ...   Jun 12 2007, 16:05
|- - Т.Достоевский   Цитата(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
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Jun 14 2007, 20:44) ...   Jun 14 2007, 18:37
- - 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 Текстовая версия Сейчас: 24th July 2025 - 02:26
Рейтинг@Mail.ru


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