ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
67279 Топик полностью
AVR (30.08.2006 20:51, просмотров: 1) ответил jaga-jaga на в листинге у пика пара промахов оптимизатора - исключаем, мипсы авра уменьшаем до 16 ;)
Нэ надо! Все, что вне канальной итерации: Вход в ISR = 3 такта Выход из ISR = 2 такта ;tst16.c: 24: TMR0 -= 199; movlw -199 = 1 такт clrf 3 = 1 такт addwf 1 = 1 такт ;tst16.c: 25: T0IF = 0; bcf 11,2 = 1 такт ;tst16.c: 26: if(--refr) decf _refr = 1 такт btfsc 3,2 = 2 такта, т.к. будет skip в 249 из 250 случаев (goto 14 = 0 тактов, т.к. пропускается в 249 из 250 случаев) ;tst16.c: 27: { ... btfsc 3,2 = 2.5 такта вместе с goto, т.к. или будет skip, или goto goto 15 - учтено строчкой выше ... ... ... ;tst16.c: 51: if(--(chan[23])) RD7 = 1; ... btfsc 3,2 = 2.5 такта вместе с goto, т.к. или будет skip, или goto goto 13 - учтено строчкой выше Итого 17 тактов на каждую ISR. Кроме того, если не сохранять-восстанавливать w и status, то работа вне этой ISR становится абсурдом. Это, кстати, еще 7 тактов - итого будет 24 такта. А чистка промахов оптимизатора уменьшит накладные всего на 4 такта, и останется 20 тактов против тех же 17 у АВР. В ISR АВР-версии я включил сохранение-восстановление статуса. А инициализация регистров одинаково нужна и в ПИК-, и в АВР-версиях (btw - для ПИКа она вдвое больше, т.к. надо инитить и 24 уставки, и 24 счетчика, а для АВР - только 24 уставки и один счетчик), но она выполняется main-ом только один раз после сброса, и на производительность не влияет. А мипсы АВРа зачем уменьшать - 20 МИПС минимум у четверти моделей, не говоря уже о том, что изначально некоторые из них шли как 24 МИПС, и сейчас такие есть в продаже