Thank for reply.
Frankly I am not experienced in the field of assambly language.
I have tried to test
00080148 <loop>:
80148: b510 push {r4, lr}
8014a: f5ad 5dfa sub.w sp, sp, #8000 ; 0x1f40
This function disables IRQ interrupts by setting the I-bit in the CPSR.
Can only be executed in Privileged modes.
*/
__attribute__( ( always_inline ) ) static __INLINE void __disable_irq(void)
{
__ASM volatile ("cpsid i");
8014e: b672 cpsid i
80150: 4b2d ldr r3, [pc, #180] ; (80208 <loop+0xc0>)
80152: 492e ldr r1, [pc, #184] ; (8020c <loop+0xc4>)
80154: 688a ldr r2, [r1, #8]
80156: 6bd8 ldr r0, [r3, #60] ; 0x3c
80158: b2c0 uxtb r0, r0
8015a: 9000 str r0, [sp, #0]
8015c: 6bd8 ldr r0, [r3, #60] ; 0x3c
8015e: b2c0 uxtb r0, r0
80160: 9001 str r0, [sp, #4]
80162: 6bd8 ldr r0, [r3, #60] ; 0x3c
80164: b2c0 uxtb r0, r0
80166: 9002 str r0, [sp, #8]
80168: 6bd8 ldr r0, [r3, #60] ; 0x3c
8016a: b2c0 uxtb r0, r0
8016c: 9003 str r0, [sp, #12]
8016e: 6bd8 ldr r0, [r3, #60] ; 0x3c
80170: b2c0 uxtb r0, r0
80172: 9004 str r0, [sp, #16]
80174: 6bd8 ldr r0, [r3, #60] ; 0x3c
80176: b2c0 uxtb r0, r0
80178: 9005 str r0, [sp, #20]
8017a: 6bd8 ldr r0, [r3, #60] ; 0x3c
8017c: b2c0 uxtb r0, r0
8017e: 9006 str r0, [sp, #24]
80180: 6bd8 ldr r0, [r3, #60] ; 0x3c
80182: b2c0 uxtb r0, r0
with Arduino IDE But I couldn't work.
although I do not know assambly language I want to run reading process as fast as possible.
and this my read values block
void readValues() {
EthernetClient client = server.available();
byte X[8000];
uint32_t i, t0, t1,t[8000];
byte *a = &X[0];
elapsed_Time = 0;
noInterrupts();
//PIO_PDSR&0B00000000000000000000000011111111 ARDUINO DUE (MSB)D11 D14 D15 D25 D26 D27 D28 D29(LSB) PORTLARININ STATUS REGISTER
t0 = SysTick->VAL; //
// first reading 7clk laters 3clk
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //1) 3008tick //A[0] dan A[1000] e tek satirda atama yapiyor
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //2) 3000tick
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //3) 3000tick //PIO_PDSR= Pin Data Status Register
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //4) 3000tick
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //5) 3000tick
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //6) 3000tick
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //7) 3000tick
T(T(T(*a++ = PIOD->PIO_PDSR & 0B00000000000000000000000011111111))) //8) 3000tick
t1 = SysTick->VAL; // to-t1=24008ticks
interrupts();
a=&X[0];//pointer adresini tekrar başa al
T(T(T( client.write(*a++))))//1)
T(T(T( client.write(*a++))))//2)
T(T(T( client.write(*a++))))//3)
T(T(T( client.write(*a++))))//4)
T(T(T( client.write(*a++))))//5)
T(T(T( client.write(*a++))))//6)
T(T(T( client.write(*a++))))//7)
T(T(T( client.write(*a++))))//8)
Serial.print("n_ticks: ");
Serial.println( ((t0 < t1) ? 84000 + t0 : t0) - t1 );
Serial.println();
delay(30);
}
My purpose is to send readed values without increased number of ticks.
So how do I insert your assambly solution to my readvalues() block ?