QUOTE (gerber @ Dec 7 2015, 15:12)

Вероятно, не поможет, 100.0 будет приведено к целому по первому операнду выражения q/100.0
Нужно s = (unsigned char) (125.0*(sin((float)q/100.0) + 1.0));
поможет. при операциях между int и float по стандарту всё переводится во float. однако 100.0 - это double. и как результат, q сначала будет переведено в double. хотя тут так или иначе будет конверсия в дабл, так как синус требует его на входе.
кроме того, так как результат синуса - дабл, то и добавляемая единичка, и 125 тоже будут переконверчены в double. и только в самом конце пребразованы в char.
для ATtiny261 работа с double - это аДъ. хотя возможно что родная математическая библиотека может иметь синус одинарной точности.