Вот что "код почти без лишнего мусора" я бы, пожалуй, не согласился...Mildi wrote: 04 Jan 2025 09:41...пишешь на чистом С/С++ в Ардуино ИДЕ и получаешь код почти без лишнего мусора по быстродействию на уровне других компиляторов С/С++.
 
 Довелось мне в этот раз посмотреть, какой код делает С/С++, как говорится, не было счастья, да несчастье помогло!
 
 Никак у меня таймер не работал, как в даташите написано, и полез я в Интернет, посмотреть как люди делают...
А люди все модные! На С/С++ пишут, ну мануал по-русски как я понимают! Т.е. по идее делают то же самое...
И выяснилась неожиданная вещь: в Proteus 7.7 в модели ATMega встроен дизассемблер для отладки!
То есть, он код С/С++ позволяет дебужить без исходника...
Ну я и увидел, как С/С++ организует прерывание таймера:
Code: Select all
;-----(TIMER1 COMPA)Timer/Counter1 Compare Match A --- ***
M00C4:
       PUSH   R1      ;
       PUSH   R0      ;
       IN     R0,$3F  ; SREG - Status Register, флаги
       PUSH   R0      ; сохранить
       CLR    R1
       PUSH   R18
       PUSH   R19
       PUSH   R20
       PUSH   R21
       PUSH   R22
       PUSH   R23
       PUSH   R24
       PUSH   R25
       PUSH   R26
       PUSH   R27
       PUSH   R30
       PUSH   R31
       LDS    R24,$0060
       CPI    R24,$0A
       BRCS   M00F2
       STS    $0060, R1
M00F2:
       LDS    R24,$0060
       RCALL  M005C ; $-009A
       LDS    R24,$0060
       SUBI   R24,$FF
       STS    $0060,R24
       POP    R31
       POP    R30
       POP    R27
       POP    R26
       POP    R25
       POP    R24
       POP    R23
       POP    R22
       POP    R21
       POP    R20
       POP    R19
       POP    R18
       POP    R0
       OUT    $3F,R0
       POP    R0
       POP    R1
       RETI
 
				
 
  
  
 



