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