Alex-lab 4 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба Доброго дня, Есть вот такой простой код, который суммирует данные с АЦП для последующей обработки. Частота ядра 72МГц. По факту, с помощью осциллографа, выяснилось, что этот кусок исполняется за примерно 2,6мкс, что кажется непомерно долгим для таких простых операций (в зависимости от условий выполняются отдельные ветви). GCC (Arduino). Может быть, что суммирование идет в 64битное целое вызывает проблему? Спасибо. Spoiler inline void countiu () { if (b_voltamp == 1 ) { //Current calculations for current control if (u8_p == 2) { u64_tempin += i32_ADCcor[0]; u32_countin++; //Number of negative currents u32_countipn++; //Number of negative and positive currents } if (u8_p == 1) { u64_tempip += i32_ADCcor[0]; u32_countip++; //Number of positive currents u32_countipn++; //Number of negative and positive currents } } else if (b_voltamp == 0) { //Current calculations for voltage control if (u8_p == 2) { //It is not for correction, only for chronograms u64_tempin2 += i32_ADCcor[0]; } if (u8_p == 1) { u64_tempip2 += i32_ADCcor[0]; } } u32_countipnp++; //Number of total times for averaging chronogram data if (b_inject) { //Calculation of injected charge separately u64_tempQinj += i32_ADCcor[0]; u32_countQinj ++; } if (!b_diag_flag && !b_inject && !b_DontVoltage) { //Exclude amplitude of diagnostic and injecting pulses from peaks calculation if (u8_p == 2) { //Negative peak if (u16_Umaxn < i32_ADCcor[1]) { u16_Umaxn = (3 * u16_Umaxn + i32_ADCcor[1]) >> 2; } } if (u8_p == 1) { //Positive peak if (u16_Umaxp < i32_ADCcor[1]) { u16_Umaxp = (3 * u16_Umaxp + i32_ADCcor[1]) >> 2; } } } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 18 минут назад, Alex-lab сказал: Может быть, что суммирование идет в 64битное целое вызывает проблему? Видимо: что такое и как объявлена вся эта куча переменных/констант - предлагаете угадывать читателям? Чтобы узнать что и сколько выполняется, нужно смотреть листинг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dOb 10 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба У вас очень много условных переходов, а каждый такой переход сбивает конвейер. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 9 минут назад, dOb сказал: У вас очень много условных переходов Это в каком хрустальном шаре вы такое увидели? Может там везде в выражениях if () - константы, вычисляемые на этапе компиляции? А тормоза например из-за того, что какая-то из входных переменных - double. И время тратится на double-вычисления. А может на float. Хрустальный шар молчит. А условных переходов тот код может генерить совсем чуть (даже с переменными в if()). Потому как в Cortex-M-ядрах есть команды условного выполнения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 26 minutes ago, dOb said: У вас очень много условных переходов, а каждый такой переход сбивает конвейер. Хм, интересно. То есть получается нужно как можно раньше узнать о нужном ветвлении сразу выбирать ветку целиком. У меня есть четыре параметра: положительный, отрицательный, ток или напряжение. То есть имеет смысл сразу сделать четыре варианта счетчика? А выбирать я могу на самом раннем этапе, оставив лишь один switch вместо ifs? 25 minutes ago, jcxz said: А тормоза например из-за того, что какая-то из входных переменных - double Все целочисленное. 33 minutes ago, jcxz said: как объявлена вся эта куча переменных/констант Там префиксы показывают. Константы просто числами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 33 минуты назад, Alex-lab сказал: Хм, интересно. То есть получается нужно как можно раньше узнать о нужном ветвлении сразу выбирать ветку целиком. Откройте наконец-то листинг! При полной оптимизации у вас там ветвлений должно быть с гулькин нос. Так как бОльшая часть ваших if-ов должна скомпилиться в команды условного выполнения IT. Если конечно оптимизация включена. И при прочих условиях, которые вы утаиваете. 33 минуты назад, Alex-lab сказал: Там префиксы показывают. Что именно показывают? Есть-ли volatile у переменных? у каких? Выровнены ли все эти переменные? и т.д. PS: Если продолжите играть в угадайку, то толку никакого не будет. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба Ну как бы это получается около 187 тактов. Посмотрите ассемблерный листинг. Ну и включите оптимизацию в режим максимальной скорости. Да, оптимизацию можно настраивать для отдельных функций через атрибуты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 1 hour ago, EdgeAligned said: Посмотрите ассемблерный листинг. Не уверен, вроде оно? Команд действительно много... Spoiler 08000518 <countiu()>: 8000518: 4b46 ldr r3, [pc, #280] ; (8000634 <countiu()+0x11c>) 800051a: 781a ldrb r2, [r3, #0] 800051c: b510 push {r4, lr} 800051e: 2a00 cmp r2, #0 8000520: d036 beq.n 8000590 <countiu()+0x78> 8000522: 4c45 ldr r4, [pc, #276] ; (8000638 <countiu()+0x120>) 8000524: 7823 ldrb r3, [r4, #0] 8000526: 2b02 cmp r3, #2 8000528: d111 bne.n 800054e <countiu()+0x36> 800052a: 4a44 ldr r2, [pc, #272] ; (800063c <countiu()+0x124>) 800052c: 4b44 ldr r3, [pc, #272] ; (8000640 <countiu()+0x128>) 800052e: 6818 ldr r0, [r3, #0] 8000530: e9d2 3100 ldrd r3, r1, [r2] 8000534: 181b adds r3, r3, r0 8000536: eb41 71e0 adc.w r1, r1, r0, asr #31 800053a: e9c2 3100 strd r3, r1, [r2] 800053e: 4a41 ldr r2, [pc, #260] ; (8000644 <countiu()+0x12c>) 8000540: 6813 ldr r3, [r2, #0] 8000542: 3301 adds r3, #1 8000544: 6013 str r3, [r2, #0] 8000546: 4a40 ldr r2, [pc, #256] ; (8000648 <countiu()+0x130>) 8000548: 6813 ldr r3, [r2, #0] 800054a: 3301 adds r3, #1 800054c: 6013 str r3, [r2, #0] 800054e: 7823 ldrb r3, [r4, #0] 8000550: 2b01 cmp r3, #1 8000552: d111 bne.n 8000578 <countiu()+0x60> 8000554: 4a3d ldr r2, [pc, #244] ; (800064c <countiu()+0x134>) 8000556: 4b3a ldr r3, [pc, #232] ; (8000640 <countiu()+0x128>) 8000558: 6818 ldr r0, [r3, #0] 800055a: e9d2 3100 ldrd r3, r1, [r2] 800055e: 181b adds r3, r3, r0 8000560: eb41 71e0 adc.w r1, r1, r0, asr #31 8000564: e9c2 3100 strd r3, r1, [r2] 8000568: 4a39 ldr r2, [pc, #228] ; (8000650 <countiu()+0x138>) 800056a: 6813 ldr r3, [r2, #0] 800056c: 3301 adds r3, #1 800056e: 6013 str r3, [r2, #0] 8000570: 4a35 ldr r2, [pc, #212] ; (8000648 <countiu()+0x130>) 8000572: 6813 ldr r3, [r2, #0] 8000574: 3301 adds r3, #1 8000576: 6013 str r3, [r2, #0] 8000578: 4a36 ldr r2, [pc, #216] ; (8000654 <countiu()+0x13c>) 800057a: 4c37 ldr r4, [pc, #220] ; (8000658 <countiu()+0x140>) 800057c: 6813 ldr r3, [r2, #0] 800057e: 3301 adds r3, #1 8000580: 6013 str r3, [r2, #0] 8000582: 4b36 ldr r3, [pc, #216] ; (800065c <countiu()+0x144>) 8000584: 781b ldrb r3, [r3, #0] 8000586: bb13 cbnz r3, 80005ce <countiu()+0xb6> 8000588: 7823 ldrb r3, [r4, #0] 800058a: 2b00 cmp r3, #0 800058c: d02f beq.n 80005ee <countiu()+0xd6> 800058e: bd10 pop {r4, pc} 8000590: 781b ldrb r3, [r3, #0] 8000592: 2b00 cmp r3, #0 8000594: d1f0 bne.n 8000578 <countiu()+0x60> 8000596: 4c28 ldr r4, [pc, #160] ; (8000638 <countiu()+0x120>) 8000598: 7823 ldrb r3, [r4, #0] 800059a: 2b02 cmp r3, #2 800059c: d109 bne.n 80005b2 <countiu()+0x9a> 800059e: 4a30 ldr r2, [pc, #192] ; (8000660 <countiu()+0x148>) 80005a0: 4b27 ldr r3, [pc, #156] ; (8000640 <countiu()+0x128>) 80005a2: 6818 ldr r0, [r3, #0] 80005a4: e9d2 3100 ldrd r3, r1, [r2] 80005a8: 181b adds r3, r3, r0 80005aa: eb41 71e0 adc.w r1, r1, r0, asr #31 80005ae: e9c2 3100 strd r3, r1, [r2] 80005b2: 7823 ldrb r3, [r4, #0] 80005b4: 2b01 cmp r3, #1 80005b6: d1df bne.n 8000578 <countiu()+0x60> 80005b8: 4a2a ldr r2, [pc, #168] ; (8000664 <countiu()+0x14c>) 80005ba: 4b21 ldr r3, [pc, #132] ; (8000640 <countiu()+0x128>) 80005bc: 6818 ldr r0, [r3, #0] 80005be: e9d2 3100 ldrd r3, r1, [r2] 80005c2: 181b adds r3, r3, r0 80005c4: eb41 71e0 adc.w r1, r1, r0, asr #31 80005c8: e9c2 3100 strd r3, r1, [r2] 80005cc: e7d4 b.n 8000578 <countiu()+0x60> 80005ce: 4a26 ldr r2, [pc, #152] ; (8000668 <countiu()+0x150>) 80005d0: 4b1b ldr r3, [pc, #108] ; (8000640 <countiu()+0x128>) 80005d2: 6818 ldr r0, [r3, #0] 80005d4: e9d2 3100 ldrd r3, r1, [r2] 80005d8: 181b adds r3, r3, r0 80005da: eb41 71e0 adc.w r1, r1, r0, asr #31 80005de: e9c2 3100 strd r3, r1, [r2] 80005e2: 4a22 ldr r2, [pc, #136] ; (800066c <countiu()+0x154>) 80005e4: 6813 ldr r3, [r2, #0] 80005e6: 3301 adds r3, #1 80005e8: 6013 str r3, [r2, #0] 80005ea: 7823 ldrb r3, [r4, #0] 80005ec: e7cf b.n 800058e <countiu()+0x76> 80005ee: 4b20 ldr r3, [pc, #128] ; (8000670 <countiu()+0x158>) 80005f0: 781b ldrb r3, [r3, #0] 80005f2: 2b00 cmp r3, #0 80005f4: d1cb bne.n 800058e <countiu()+0x76> 80005f6: 4a10 ldr r2, [pc, #64] ; (8000638 <countiu()+0x120>) 80005f8: 7813 ldrb r3, [r2, #0] 80005fa: 2b02 cmp r3, #2 80005fc: d10a bne.n 8000614 <countiu()+0xfc> 80005fe: 491d ldr r1, [pc, #116] ; (8000674 <countiu()+0x15c>) 8000600: 480f ldr r0, [pc, #60] ; (8000640 <countiu()+0x128>) 8000602: 880b ldrh r3, [r1, #0] 8000604: 6840 ldr r0, [r0, #4] 8000606: 4283 cmp r3, r0 8000608: bfbf itttt lt 800060a: eb03 0343 addlt.w r3, r3, r3, lsl #1 800060e: 181b addlt r3, r3, r0 8000610: 109b asrlt r3, r3, #2 8000612: 800b strhlt r3, [r1, #0] 8000614: 7813 ldrb r3, [r2, #0] 8000616: 2b01 cmp r3, #1 8000618: d1b9 bne.n 800058e <countiu()+0x76> 800061a: 4a17 ldr r2, [pc, #92] ; (8000678 <countiu()+0x160>) 800061c: 4908 ldr r1, [pc, #32] ; (8000640 <countiu()+0x128>) 800061e: 8813 ldrh r3, [r2, #0] 8000620: 6849 ldr r1, [r1, #4] 8000622: 428b cmp r3, r1 8000624: bfbf itttt lt 8000626: eb03 0343 addlt.w r3, r3, r3, lsl #1 800062a: 185b addlt r3, r3, r1 800062c: 109b asrlt r3, r3, #2 800062e: 8013 strhlt r3, [r2, #0] 8000630: e7ad b.n 800058e <countiu()+0x76> 8000632: bf00 nop 8000634: 20000032 .word 0x20000032 8000638: 2000119a .word 0x2000119a 800063c: 200002d0 .word 0x200002d0 8000640: 20000ae8 .word 0x20000ae8 8000644: 20000b1c .word 0x20000b1c 8000648: 20000b24 .word 0x20000b24 800064c: 200002c8 .word 0x200002c8 8000650: 20000b20 .word 0x20000b20 8000654: 20000b28 .word 0x20000b28 8000658: 200021d6 .word 0x200021d6 800065c: 200021d2 .word 0x200021d2 8000660: 200002c0 .word 0x200002c0 8000664: 200002b8 .word 0x200002b8 8000668: 200002b0 .word 0x200002b0 800066c: 20000ae4 .word 0x20000ae4 8000670: 200021d4 .word 0x200021d4 8000674: 20000b80 .word 0x20000b80 8000678: 20000b7e .word 0x20000b7e 2 hours ago, jcxz said: При полной оптимизации у вас там ветвлений должно быть с гулькин нос. Вообще пробовал все от -Os (2.8мкс) до -O3(2,6мкс). Разница не значительная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 9 minutes ago, Alex-lab said: Вообще пробовал все от -Os (2.8мкс) до -O3(2,6мкс). Разница не значительная. Ногодрыгом GPIO измеряли? А если длительность __NOP(); так же измерить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 11 minutes ago, aaarrr said: Ногодрыгом GPIO измеряли? Если вы имеете ввиду, что он сам по себе медленный (с чего бы ему?), то вот полна осциллограмма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 23 minutes ago, Alex-lab said: с чего бы ему? Arduino 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 1 час назад, Alex-lab сказал: Не уверен, вроде оно? Команд действительно много... Показать контент 08000518 <countiu()>: 8000518: 4b46 ldr r3, [pc, #280] ; (8000634 <countiu()+0x11c>) 800051a: 781a ldrb r2, [r3, #0] 800051c: b510 push {r4, lr} 800051e: 2a00 cmp r2, #0 8000520: d036 beq.n 8000590 <countiu()+0x78> 8000522: 4c45 ldr r4, [pc, #276] ; (8000638 <countiu()+0x120>) 8000524: 7823 ldrb r3, [r4, #0] 8000526: 2b02 cmp r3, #2 8000528: d111 bne.n 800054e <countiu()+0x36> 800052a: 4a44 ldr r2, [pc, #272] ; (800063c <countiu()+0x124>) 800052c: 4b44 ldr r3, [pc, #272] ; (8000640 <countiu()+0x128>) 800052e: 6818 ldr r0, [r3, #0] 8000530: e9d2 3100 ldrd r3, r1, [r2] 8000534: 181b adds r3, r3, r0 8000536: eb41 71e0 adc.w r1, r1, r0, asr #31 800053a: e9c2 3100 strd r3, r1, [r2] 800053e: 4a41 ldr r2, [pc, #260] ; (8000644 <countiu()+0x12c>) 8000540: 6813 ldr r3, [r2, #0] 8000542: 3301 adds r3, #1 8000544: 6013 str r3, [r2, #0] 8000546: 4a40 ldr r2, [pc, #256] ; (8000648 <countiu()+0x130>) 8000548: 6813 ldr r3, [r2, #0] 800054a: 3301 adds r3, #1 800054c: 6013 str r3, [r2, #0] 800054e: 7823 ldrb r3, [r4, #0] 8000550: 2b01 cmp r3, #1 8000552: d111 bne.n 8000578 <countiu()+0x60> 8000554: 4a3d ldr r2, [pc, #244] ; (800064c <countiu()+0x134>) 8000556: 4b3a ldr r3, [pc, #232] ; (8000640 <countiu()+0x128>) 8000558: 6818 ldr r0, [r3, #0] 800055a: e9d2 3100 ldrd r3, r1, [r2] 800055e: 181b adds r3, r3, r0 8000560: eb41 71e0 adc.w r1, r1, r0, asr #31 8000564: e9c2 3100 strd r3, r1, [r2] 8000568: 4a39 ldr r2, [pc, #228] ; (8000650 <countiu()+0x138>) 800056a: 6813 ldr r3, [r2, #0] 800056c: 3301 adds r3, #1 800056e: 6013 str r3, [r2, #0] 8000570: 4a35 ldr r2, [pc, #212] ; (8000648 <countiu()+0x130>) 8000572: 6813 ldr r3, [r2, #0] 8000574: 3301 adds r3, #1 8000576: 6013 str r3, [r2, #0] 8000578: 4a36 ldr r2, [pc, #216] ; (8000654 <countiu()+0x13c>) 800057a: 4c37 ldr r4, [pc, #220] ; (8000658 <countiu()+0x140>) 800057c: 6813 ldr r3, [r2, #0] 800057e: 3301 adds r3, #1 8000580: 6013 str r3, [r2, #0] 8000582: 4b36 ldr r3, [pc, #216] ; (800065c <countiu()+0x144>) 8000584: 781b ldrb r3, [r3, #0] 8000586: bb13 cbnz r3, 80005ce <countiu()+0xb6> 8000588: 7823 ldrb r3, [r4, #0] 800058a: 2b00 cmp r3, #0 800058c: d02f beq.n 80005ee <countiu()+0xd6> 800058e: bd10 pop {r4, pc} 8000590: 781b ldrb r3, [r3, #0] 8000592: 2b00 cmp r3, #0 8000594: d1f0 bne.n 8000578 <countiu()+0x60> 8000596: 4c28 ldr r4, [pc, #160] ; (8000638 <countiu()+0x120>) 8000598: 7823 ldrb r3, [r4, #0] 800059a: 2b02 cmp r3, #2 800059c: d109 bne.n 80005b2 <countiu()+0x9a> 800059e: 4a30 ldr r2, [pc, #192] ; (8000660 <countiu()+0x148>) 80005a0: 4b27 ldr r3, [pc, #156] ; (8000640 <countiu()+0x128>) 80005a2: 6818 ldr r0, [r3, #0] 80005a4: e9d2 3100 ldrd r3, r1, [r2] 80005a8: 181b adds r3, r3, r0 80005aa: eb41 71e0 adc.w r1, r1, r0, asr #31 80005ae: e9c2 3100 strd r3, r1, [r2] 80005b2: 7823 ldrb r3, [r4, #0] 80005b4: 2b01 cmp r3, #1 80005b6: d1df bne.n 8000578 <countiu()+0x60> 80005b8: 4a2a ldr r2, [pc, #168] ; (8000664 <countiu()+0x14c>) 80005ba: 4b21 ldr r3, [pc, #132] ; (8000640 <countiu()+0x128>) 80005bc: 6818 ldr r0, [r3, #0] 80005be: e9d2 3100 ldrd r3, r1, [r2] 80005c2: 181b adds r3, r3, r0 80005c4: eb41 71e0 adc.w r1, r1, r0, asr #31 80005c8: e9c2 3100 strd r3, r1, [r2] 80005cc: e7d4 b.n 8000578 <countiu()+0x60> 80005ce: 4a26 ldr r2, [pc, #152] ; (8000668 <countiu()+0x150>) 80005d0: 4b1b ldr r3, [pc, #108] ; (8000640 <countiu()+0x128>) 80005d2: 6818 ldr r0, [r3, #0] 80005d4: e9d2 3100 ldrd r3, r1, [r2] 80005d8: 181b adds r3, r3, r0 80005da: eb41 71e0 adc.w r1, r1, r0, asr #31 80005de: e9c2 3100 strd r3, r1, [r2] 80005e2: 4a22 ldr r2, [pc, #136] ; (800066c <countiu()+0x154>) 80005e4: 6813 ldr r3, [r2, #0] 80005e6: 3301 adds r3, #1 80005e8: 6013 str r3, [r2, #0] 80005ea: 7823 ldrb r3, [r4, #0] 80005ec: e7cf b.n 800058e <countiu()+0x76> 80005ee: 4b20 ldr r3, [pc, #128] ; (8000670 <countiu()+0x158>) 80005f0: 781b ldrb r3, [r3, #0] 80005f2: 2b00 cmp r3, #0 80005f4: d1cb bne.n 800058e <countiu()+0x76> 80005f6: 4a10 ldr r2, [pc, #64] ; (8000638 <countiu()+0x120>) 80005f8: 7813 ldrb r3, [r2, #0] 80005fa: 2b02 cmp r3, #2 80005fc: d10a bne.n 8000614 <countiu()+0xfc> 80005fe: 491d ldr r1, [pc, #116] ; (8000674 <countiu()+0x15c>) 8000600: 480f ldr r0, [pc, #60] ; (8000640 <countiu()+0x128>) 8000602: 880b ldrh r3, [r1, #0] 8000604: 6840 ldr r0, [r0, #4] 8000606: 4283 cmp r3, r0 8000608: bfbf itttt lt 800060a: eb03 0343 addlt.w r3, r3, r3, lsl #1 800060e: 181b addlt r3, r3, r0 8000610: 109b asrlt r3, r3, #2 8000612: 800b strhlt r3, [r1, #0] 8000614: 7813 ldrb r3, [r2, #0] 8000616: 2b01 cmp r3, #1 8000618: d1b9 bne.n 800058e <countiu()+0x76> 800061a: 4a17 ldr r2, [pc, #92] ; (8000678 <countiu()+0x160>) 800061c: 4908 ldr r1, [pc, #32] ; (8000640 <countiu()+0x128>) 800061e: 8813 ldrh r3, [r2, #0] 8000620: 6849 ldr r1, [r1, #4] 8000622: 428b cmp r3, r1 8000624: bfbf itttt lt 8000626: eb03 0343 addlt.w r3, r3, r3, lsl #1 800062a: 185b addlt r3, r3, r1 800062c: 109b asrlt r3, r3, #2 800062e: 8013 strhlt r3, [r2, #0] 8000630: e7ad b.n 800058e <countiu()+0x76> 8000632: bf00 nop 8000634: 20000032 .word 0x20000032 8000638: 2000119a .word 0x2000119a 800063c: 200002d0 .word 0x200002d0 8000640: 20000ae8 .word 0x20000ae8 8000644: 20000b1c .word 0x20000b1c 8000648: 20000b24 .word 0x20000b24 800064c: 200002c8 .word 0x200002c8 8000650: 20000b20 .word 0x20000b20 8000654: 20000b28 .word 0x20000b28 8000658: 200021d6 .word 0x200021d6 800065c: 200021d2 .word 0x200021d2 8000660: 200002c0 .word 0x200002c0 8000664: 200002b8 .word 0x200002b8 8000668: 200002b0 .word 0x200002b0 800066c: 20000ae4 .word 0x20000ae4 8000670: 200021d4 .word 0x200021d4 8000674: 20000b80 .word 0x20000b80 8000678: 20000b7e .word 0x20000b7e Ужас! Выкинуть, компилить IAR-ом. Зачем у вас одни и те же переменные многократно читаются??? Они что - volatile (спрашиваю уже в 3-й раз)? PS: Тут только - включать голову и переписывать всё по-новой, нормально. И компилятор нормальный взять. Или свой настроить корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба Можно замерить число машинных циклов через счетчик DWT (гугл фпомощь) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба А PLL ядра-то правильно настроена? Другие участки кода быстро исполняются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 24 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба а сишника не будет я так понял Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться