Und wozu das alles? Für PID-Regler oder so? Oder sin/cos?
Nette Spielwiese übrigens, hier der logarithmus dualis:
Code:static inline uint8_t log_2 (uint8_t); // log(x) / log(2) mit 1 <= x < 2 uint8_t log_2 (uint8_t x) { uint8_t log, cnt; asm volatile ("; %[log] = log_2 (%[x]) " "\n\t" "ldi %[cnt], 7" "\n\t" "clr %[log]" "\n" "0:" "\t" "lsl %[log]" "\n\t" "fmul %[x], %[x]" "\n\t" "brcc 1f" "\n\t" "ror r1" "\n\t" "inc %[log]" "\n" "1:" "\t" "mov %[x], r1" "\n\t" "dec %[cnt]" "\n\t" "brne 0b" "\n\t" "clr __zero_reg__" : [log] "=r" (log), [x] "=a" (x), [cnt] "=d" (cnt) : "1" (x) ); return log; }







Zitieren

Lesezeichen