Цитата(singlskv @ Sep 20 2007, 00:04)

Перед тем как чего-нить заявлять, таки придется все точно подсчитать

Пожалуста считайте на здоровье это FIQ,для IRQ+VIC закоментированые строчки стоит убрать ,прервание по ИНТ1
Код
#include <LPC21XX.H>
volatile long y=0xffffffff;
#pragma ARM
void FIQ_Handler(void)__fiq {
IOSET0=0x00F00000;
EXTINT=0x00000002;
}
void IRQ_vic_int1(void)__irq {
IOSET0=0x000F0000;
EXTINT=0x00000002;
//VICVectAddr0=0x00000000;
}
void main (void) {
IODIR0=0x00FF0000;
PINSEL0=0x20000000;
VICIntSelect=0x00008000;
//VICVectCntl0=0x0000002F;
//VICVectAddr0=(unsigned long) IRQ_vic_int1;
VICIntEnable=0x00008000;
IOCLR0=0x00FF0000;
while(1);
}
Цитата
А кто Вам сказал что задача будет такой что потребует быстых 32битных вычислений ?
Окей ,пускай не будет 32битных вычислений.
Давайте такого плана вычисления
R0=R1+R2
это делается одной командой за один такт
ADD R0,R1,R2
Я уже не говорю о том что это может быть выполнено по условию и со сдвигом второго операнда.
Тоесть самих асм команд у АРМ может быть гораздо меньше.
Цитата
А вот здесь я с Вами даже спорить не буду, задам тока один вопрос, при шевелении ногами
АРМ, вы сами четко себе представляете когда и как он ими пошевелит ?
Наверное плохо представляю ,проверьте сами

Код
#include <LPC21XX.H>
#pragma ARM
volatile long y=0xffffffff;
void main (void) {
IODIR0=0xFFFFFFFF; //открываем все порты
__asm
{
LDR R0,0xF0000001;Выбираем какими пинами будем дергать 0,28,29,30,31
LDR R1,0x3FFFC018;Загружаем указатель на IOSET
LDR R2,0x3FFFC01C;Загружаем указатель на IOCLR
STR R0,[R1] ; пины 0,28,29,30,31=1
STR R0,[R2] ; пины 0,28,29,30,31=0
STR R0,[R1] ; пины 0,28,29,30,31=1
STR R0,[R2] ; и т.д.
}
while(1);
}
кстати шевелить можно сразу несколькими произвольными пинами,не трогая остальные ,сколько АВРу требуется для подобных маневров?
ЗЫ я уже писал ,тут нету смысла сравнивать - это разные по классу задач контроллеры.