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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> Подскажите пожалуйста, про многозадачность.
bodja74
сообщение Nov 1 2006, 16:41
Сообщение #61


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(=GM= @ Nov 1 2006, 14:07) *
GM Ну ладно, при случае(:-). А вы где территориально?

bodja74 Украина,Бердичев

Ясенько, вам пора музей контрабандистов открывать(:-). Еще вроде там венчание Бальзака было, в костеле...А Никольская церковь стоит?

Ааа,бывали в наших краях,будете проезжать ,свистните,пивка попьем smile.gif

Цитата
Ну раз пошла такая пьянка... Если хранить адрес проги не в памяти, а в регистрах (r5-r4), то получим суперсверхскоростной код(:-)
Код
PLANi:  in   r2,SREG      ;cохраням SREG
        movw r30,r4    ;current program address
        adiw zl,vector(i) ;реальный адрес вектора
        out  SREG,R2      ;востанавливаем SREG
        ijmp

Ужоснах, если сравнивать с исходным кодом(:-). Всего 5 слов кода на прерывание, не так уж и много для вставки. Зато скорость удвоилась: 10 тактов по сравнению с 20 исходными! Это ж скока пива! Не, я стока не выпью(:-)


ПЬЕМ ПИВО ДАЛЬШЕ!!!
Как вам такой вариант?
Код
.org 0
jmp PLAN_START
ldi R16,$04
rjmp PLAN
ldi R16,$08
rjmp PLAN
....

clr R17

....

PLAN:  in   r2,SREG        ;cохраням SREG
    movw zl,r4 ;current program address
                add zl,r16
                adc zh,r17
    out  SREG,R2      ;востанавливаем SREG
    ijmp


Очередной изврат заключается в подмене в векторах одной команды jmp (4байта) на ldi и rjmp (по 2 байта) ,правда такой номер не пройдет для 8 и 8535 мег,но это не смертельно учитывая ,что у них не так немного памяти для размещение нескольких программ.
Естественно планировщик в первых 2кило кода ,скорость таже,но зато не нужно дублировать PLAN для каждого прерывания smile.gif

ЗЫ ГЫ,неслабая ось получилась smile.gifsmile.gifsmile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 1 2006, 18:01
Сообщение #62


Ambidexter
*****

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



[quote name='bodja74' date='Nov 1 2006, 16:41' post='171352']
Ааа,бывали в наших краях,будете проезжать ,свистните,пивка попьем smile.gif
[/quote]
Замётано(:-)

Ну раз пошла такая пьянка... Если хранить адрес проги не в памяти, а в регистрах (r5-r4), то получим суперсверхскоростной код(:-)
Код
PLANi:  in   r2,SREG     ;cохраняем SREG
        movw r30,r4;current program address
        adiw zl,vector(i);реальный адрес вектора
        out  SREG,R2     ;востанавливаем SREG
        ijmp

Ужоснах, если сравнивать с исходным кодом(:-). Всего 5 слов кода на прерывание, не так уж и много для вставки. Зато скорость удвоилась: 10 тактов по сравнению с 20 исходными! Это ж скока пива! Не, я стока не выпью(:-)
[/quote]

ПЬЕМ ПИВО ДАЛЬШЕ!!!
Как вам такой вариант?
Код
.org 0
jmp PLAN_START
ldi R16,$04
rjmp PLAN
ldi R16,$08
rjmp PLAN
....

clr R17

....

PLAN:  in   r2,SREG    ;cохраням SREG
    movw zl,r4;current program address
                add zl,r16
                adc zh,r17
    out  SREG,R2     ;востанавливаем SREG
    ijmp


Очередной изврат заключается в подмене в векторах одной команды jmp (4байта) на ldi и rjmp (по 2 байта) ,правда такой номер не пройдет для 8 и 8535 мег,но это не смертельно учитывая ,что у них не так немного памяти для размещение нескольких программ.
Естественно планировщик в первых 2кило кода ,скорость таже,но зато не нужно дублировать PLAN для каждого прерывания smile.gif

ЗЫ ГЫ,неслабая ось получилась smile.gifsmile.gifsmile.gif
[/quote]

Тогда уж так, лишние регистры не помешают
Код
        ldi  r30,0x04
        rjmp PLAN

PLANi:  in   r2,SREG    ;cохраняем SREG
        clr  r31        ;current program address
        add  zl,r4      ;реальный адрес вектора
        adc  zh,r5
        out  SREG,R2    ;востанавливаем SREG
        ijmp


Почему бы и не попить(:-)


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 2 2006, 15:43
Сообщение #63


Ambidexter
*****

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



Цитата(bodja74 @ Nov 1 2006, 16:41) *
ЗЫ ГЫ,неслабая ось получилась smile.gifsmile.gifsmile.gif


To bodja74

Довёл до 8 тактов с незначительными ограничениями.

Или уже неинтересно(:-(?


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

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:31
Рейтинг@Mail.ru


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