выделяешь в памяти области, по 40 байт будет в самый раз. Сколько потоков столько и областей. И по прирыванию от таймера копируешь рабочие регистры текущего потока (R0-R31, SREG, SP, итд) в ту область памяти которая выделена для текущего потока. Потом из области памяти для следующего потока копируешь содержимое в рабочие регистры. И так по кругу. Это и есть элементарная наколенная многопоточность. И нечего тебе искать готовые решения когда пока в кайф писать самому. Потом уже, когда заматереешь, можно пользоваться готовыми библиотеками.