Цитата(kovigor @ Apr 18 2011, 13:52)

А вы посмотрите файл листинга и узнаете. От себя добавлю, что ваша идея почти наверняка обречена на неудачу. 4.5МГц - это явно очень быстро. А современные компиляторы генерируют ну почти оптимальный код, и чтобы сделать лучше, программируя на ассемблере, придется серьезно потрудиться ...
CODE
59 void CameraTest(void)
60 {
\ CameraTest:
\ 00000000 30402DE9 PUSH {R4,R5,LR}
\ 00000004 2CD04DE2 SUB SP,SP,#+44
61
62 BYTE str1[40];
63
64 SCS |= 0x1;
\ 00000008 ........ LDR R0,??DataTable1 ;; 0xe01fc1a0
\ 0000000C 000090E5 LDR R0,[R0, #+0]
\ 00000010 010090E3 ORRS R0,R0,#0x1
\ 00000014 ........ LDR R1,??DataTable1 ;; 0xe01fc1a0
\ 00000018 000081E5 STR R0,[R1, #+0]
65 FIO0DIR_bit.P0_22 = 0;
\ 0000001C FF05A0E3 MOV R0,#+1069547520
\ 00000020 FF0980E3 ORR R0,R0,#0x3FC000
\ 00000024 000090E5 LDR R0,[R0, #+0]
\ 00000028 4008D0E3 BICS R0,R0,#0x400000
\ 0000002C FF15A0E3 MOV R1,#+1069547520
\ 00000030 FF1981E3 ORR R1,R1,#0x3FC000
\ 00000034 000081E5 STR R0,[R1, #+0]
66 #define HSYNC FIO0PIN_bit.P0_22
67 FIO2DIR_bit.P2_22 = 0;
\ 00000038 FF01E0E3 MVN R0,#-1073741761
\ 0000003C FE0DC0E3 BIC R0,R0,#0x3F80
\ 00000040 000090E5 LDR R0,[R0, #+0]
\ 00000044 4008D0E3 BICS R0,R0,#0x400000
\ 00000048 FF11E0E3 MVN R1,#-1073741761
\ 0000004C FE1DC1E3 BIC R1,R1,#0x3F80
\ 00000050 000081E5 STR R0,[R1, #+0]
68 #define PCLK FIO2PIN_bit.P2_22
69 DWORD PixelCount = 0;
\ 00000054 0000A0E3 MOV R0,#+0
\ 00000058 0040B0E1 MOVS R4,R0
70 bool FlagReady = false;
\ 0000005C 0000A0E3 MOV R0,#+0
\ 00000060 0050B0E1 MOVS R5,R0
71
72 while(1)
73 {
74 while(HSYNC == 1);
\ ??CameraTest_0:
\ ??CameraTest_1:
\ 00000064 AF01E0E3 MVN R0,#-1073741781
\ 00000068 FF0DC0E3 BIC R0,R0,#0x3FC0
\ 0000006C 000090E5 LDR R0,[R0, #+0]
\ 00000070 400810E2 ANDS R0,R0,#0x400000
\ 00000074 200BB0E1 LSRS R0,R0,#+22
\ 00000078 010050E3 CMP R0,#+1
\ 0000007C F8FFFF0A BEQ ??CameraTest_1
75 PixelCount = 0;
\ 00000080 0000A0E3 MOV R0,#+0
\ 00000084 0040B0E1 MOVS R4,R0
76 while(HSYNC == 0);
\ ??CameraTest_2:
\ 00000088 AF01E0E3 MVN R0,#-1073741781
\ 0000008C FF0DC0E3 BIC R0,R0,#0x3FC0
\ 00000090 000090E5 LDR R0,[R0, #+0]
\ 00000094 400810E2 ANDS R0,R0,#0x400000
\ 00000098 200BB0E1 LSRS R0,R0,#+22
\ 0000009C 000050E3 CMP R0,#+0
\ 000000A0 F8FFFF0A BEQ ??CameraTest_2
77 while(1)
78 {
79 if(HSYNC == 0) break;
\ ??CameraTest_3:
\ 000000A4 AF01E0E3 MVN R0,#-1073741781
\ 000000A8 FF0DC0E3 BIC R0,R0,#0x3FC0
\ 000000AC 000090E5 LDR R0,[R0, #+0]
\ 000000B0 400810E2 ANDS R0,R0,#0x400000
\ 000000B4 200BB0E1 LSRS R0,R0,#+22
\ 000000B8 000050E3 CMP R0,#+0
\ 000000BC 0B00001A BNE ??CameraTest_4
80 if(PCLK == 1)
81 {
82 if(FlagReady)
83 {
84 //BmpBuff[PixelCount] = 0x56;
85 PixelCount ++;
86 FlagReady = false;
87 }
88 }
89 else FlagReady = true;
90 }
91 sprintf((char*)str1,"%u",PixelCount);
\ 000000C0 0420B0E1 MOVS R2,R4
\ 000000C4 ........ ADR R1,??DataTable0 ;; 0x25, 0x75, 0x00, 0x00
\ 000000C8 04008DE2 ADD R0,SP,#+4
\ 000000CC ........ BL sprintf
92 lcd_put_str(10, 28, str1, 0x00FFFFFF,0);
\ 000000D0 0000A0E3 MOV R0,#+0
\ 000000D4 00008DE5 STR R0,[SP, #+0]
\ 000000D8 FF34E0E3 MVN R3,#-16777216
\ 000000DC 04208DE2 ADD R2,SP,#+4
\ 000000E0 1C10A0E3 MOV R1,#+28
\ 000000E4 0A00A0E3 MOV R0,#+10
\ 000000E8 ........ BL _Z11lcd_put_strttPhjj
\ 000000EC DCFFFFEA B ??CameraTest_0
\ ??CameraTest_4:
\ 000000F0 AF01E0E3 MVN R0,#-1073741781
\ 000000F4 FE0DC0E3 BIC R0,R0,#0x3F80
\ 000000F8 000090E5 LDR R0,[R0, #+0]
\ 000000FC 400810E2 ANDS R0,R0,#0x400000
\ 00000100 200BB0E1 LSRS R0,R0,#+22
\ 00000104 010050E3 CMP R0,#+1
\ 00000108 0600001A BNE ??CameraTest_5
\ 0000010C FF5015E2 ANDS R5,R5,#0xFF ;; Zero extend
\ 00000110 000055E3 CMP R5,#+0
\ 00000114 E2FFFF0A BEQ ??CameraTest_3
\ 00000118 014094E2 ADDS R4,R4,#+1
\ 0000011C 0000A0E3 MOV R0,#+0
\ 00000120 0050B0E1 MOVS R5,R0
\ 00000124 DEFFFFEA B ??CameraTest_3
\ ??CameraTest_5:
\ 00000128 0100A0E3 MOV R0,#+1
\ 0000012C 0050B0E1 MOVS R5,R0
\ 00000130 DBFFFFEA B ??CameraTest_3
\ 00000134 REQUIRE _A_SCS
\ 00000134 REQUIRE _A_FIO0DIR
\ 00000134 REQUIRE _A_FIO0PIN
\ 00000134 REQUIRE _A_FIO2DIR
\ 00000134 REQUIRE _A_FIO2PIN
93 }
94 }
Может вы своим провессиональным взглядом, что подскажите??? Где, что надо умотать, чтобы шустрее работало.
У меня даже 1 мегагерц сейчас пиксели пропускаются.