Atmel studio / GCC - oprimalizace

Jan Waclawek konfera na efton.sk
Středa Duben 1 17:16:15 CEST 2020


V avr-libc v xmega.h som nasiel

#ifdef __DOXYGEN__
/**
 \def _PROTECTED_WRITE
 \ingroup avr_io

 Write value \c value to IO register \c reg that is protected through
 the Xmega configuration change protection (CCP) mechanism.  This
 implements the timed sequence that is required for CCP.

 Example to modify the CPU clock:
 \code
 #include <avr/io.h>

 _PROTECTED_WRITE(CLK_PSCTRL, CLK_PSADIV0_bm);
 _PROTECTED_WRITE(CLK_CTRL, CLK_SCLKSEL0_bm);
 \endcode
 */
#define _PROTECTED_WRITE(reg, value)
#else  /* !__DOXYGEN__ */
#define _PROTECTED_WRITE(reg, value)				\
  __asm__ __volatile__("out %[ccp], %[ccp_ioreg]" "\n\t"	\
		       "sts %[ioreg], %[val]"			\
		       :					\
		       : [ccp] "I" (_SFR_IO_ADDR(CCP)),		\
			 [ccp_ioreg] "d" ((uint8_t)CCP_IOREG_gc),	\
			 [ioreg] "n" (_SFR_MEM_ADDR(reg)),	\
			 [val] "r" ((uint8_t)value))
#endif /* DOXYGEN */ 


Mozno to bude chciet trocha potunit pre ten tiny, neviem, ale na prvy
pohlad to vyzera dobre.

Nechat to v C je pristup "mne to funguje".

wek



----- Original Message ---------------


Dalsie cca 2 minuty hladania na avrfreaks.net a tu je naznaceny aj inline
asm aj normalny:

https://www.avrfreaks.net/forum/ccp-ccpioreggc-assembler-anyone

urcite sa toho tam da najst viac, alebo sa tam da aj opytat.

wek

__________________



Další informace o konferenci Hw-list