[an error occurred while processing this directive]
Точнее он дал ЭТО
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено link 26 октября 2006 г. 01:19
В ответ на: :-O А больше он ничего не дал ? отправлено DASM 26 октября 2006 г. 01:17

ПИК:

1. Накладные расходы по регистрам - 2*24 байта (счетчики ШИМ + уставки ШИМ) + _refr = 49 байт.

2. Накладные расходы по времени (вход/выход ISR, проверка-инициализация _refr и TMR0 и пр.)- 17 циклов (дальше буду для простоты называть тактами), или 17/24 = +0.71 такта к каждому каналу дают 17+(24*2)= 65 тактов на ISR или 2.71 такта на канал. При 100% загрузке 10-МИПСового ПИКа этой задачкой достижимая частота каждого из 24 каналов 250-ступенчатого ШИМ составит 615 ГЦ, а 256-ступенчатого - 600 ГЦ.


АВР:

A. Регистровый вариант 256-зубого ШИМ. Безвозвратно тратится 26 регистров из 32, R2..R25 - уставка ШИМ, R1 (tmp) - рабочий, R2 (pwm) - пила ШИМа. Таймер в режиме CTC - Clear On Compare (реинициализация и сброс флага автоматические):


t0isrREG:
in stsav,SREG ;Сохраняем статус. STSAV - общий для всех невложенных прерываний

inc pwm ;Добавляем очередной зуб к пиле ШИМ

cp r2,pwm ;Перенос=1 при Rx <= PWM ;Те же 2 такта на канал, что и у ПИКа
rol tmp ;Вдвигаем перенос в рабочий регистр ;
cp r3,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r4,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r5,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r6,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r7,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r8,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r9,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTA,tmp ;Выставляем ноги PWM 1..8

cp r10,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r11,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r12,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r13,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r14,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r15,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r16,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r17,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTB,tmp ;Выставляем ноги PWM 9..16

cp r18,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r19,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r20,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r21,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r22,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r23,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r24,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r25,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTC,tmp ;Выставляем ноги PWM 17..24

out SREG,stsav ;Восстанавливаем статус

reti


1A. Накладные расходы по регистрам - 26 байт: 24 уставки PWM, tmp и pwm.

2A. Накладные расходы по времени (вход-выход ISR, инкремент пилы, 4 вывода в порт, сохранение-восстановление статуса) точно такие же, как у ПИКа - 17 тактов, или 17/24 = +0.71 такта к каждому каналу дают 17+(24*2)= 65 тактов на ISR или 2.71 такта на канал. При 100% загрузке 20-МИПСового АВРа этой задачкой достижимая частота каждого из 24 каналов 256-ступенчатого ШИМ составит 1200 ГЦ, то есть ровно вдвое выше, чем у ПИКа, что и не удивительно.

B. RAM-вариант 256-зубого ШИМ - до упора оптимизированный вариант mse. Безвозвратно тратится 3 регистра (pwm, tmp, tmp1) из 32. PWM_array[24] - уставки ШИМ, tmp и tmp1 - рабочие, pwm - пила ШИМа. Таймер в режиме CTC - Clear On Compare (реинициализация и сброс флага автоматические):


t0isrRAM:
in stsav,SREG ;Сохраняем статус. STSAV - общий для всех невложенных прерываний

inc pwm ;Добавляем очередной зуб к пиле ШИМ

lds tmp1,PWM_array+0 ;Читаем уставку PWMx ;
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM ;4 такта на канал
rol tmp ;Вдвигаем перенос в рабочий регистр ;
lds tmp1,PWM_array+1 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+2 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+3 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+4 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+5 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+6 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+7 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTA,tmp ;Выставляем ноги PWM 1..8

lds tmp1,PWM_array+8 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+9 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+10 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+11 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+12 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+13 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+14 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+15 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTB,tmp ;Выставляем ноги PWM 9..16

lds tmp1,PWM_array+16 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+17 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+18 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+19 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+20 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+21 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+22 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
lds tmp1,PWM_array+23 ;Читаем уставку PWMx
cp tmp1,pwm ;Перенос=1 при tmp1 <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр

out PORTC,tmp ;Выставляем ноги PWM 17..24

out SREG,stsav ;Восстанавливаем статус

reti


1B. Накладные расходы по регистрам - 3 байта: tmp, tmp1 и pwm.

2B. Накладные расходы по времени (вход-выход ISR, инкремент пилы, 4 вывода в порт, сохранение-восстановление статуса) точно такие же, как у ПИКа - 17 тактов, или 17/24 = +0.71 такта к каждому каналу дают 17+(24*4)= 113 тактов на ISR или 4.71 такта на канал. При 100% загрузке 20-МИПСового АВРа этой задачкой достижимая частота каждого из 24 каналов 256-ступенчатого ШИМ составит 691 ГЦ, то есть все равно выше, чем у ПИКа, что тоже не удивительно.

Слив не засчитан :))ё

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

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


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание