Processamento de execução paralela com ATmega

Acredito que você esteja se referindo a multitask, processo no qual um sistema operacional aloca um tempo de processamento para cada task (programa) iniciado. Isto dá a impressão de processamento paralelo, mas na verdade o tempo do processador foi dividido. Isto é feito através de uma interrupção interna. Por exemplo, um programa com 4 funções independentes (tasks) e interrupção de timer a cada 40 mseg. Veja que estas tasks não rodam no main(), elas são controladas apenas pela interrupção.
Sequencia: interrupçaõ, salva no stack ambiente da task n+3, recupera do stack ambiente da task n, roda task n
interrupção, salva no stack ambiente da task n, recupera do stack ambiente da task n+1, roda task n+1
interrupção, salva no stack ambiente da task n+1, recupera do stack ambiente da task n+2, roda task n+2
interrupção, salva no stack ambiente da task n+2, recupera do stack ambiente da task n+3, roda task n+3
interrupção, salva no stack ambiente da task n+3, e assim indefinidamente.
Isto é usado no caso de processos que não necessitam dedicação integral, como esperar pelo teclado, atualização de tela, sensor de presença e outros.