Ich habe soetwas ähnliches auch vor kurzem gemacht. Ich habe einen attiny45 genommen. Es soll ein Sanftanlauf werden (Prototyp ist fertig). Ich habe es rein über Interrupts gelöst. Programm müsste ich am Rechner schauen, aber vom Prinzip funktioniert es so (bin mir aber nicht zu 100% sicher):
Code:
Int 0
(
Lade wert in OCR Register
Starte Timer 
)
Int Timer
(
Stoppe Timer 
Zünde triac (impuls)
)
Main
(
Prüfe Taster (wegen sanftanlauf)
Wenn gedrückt => ladewert Timer erhöhen damit Zündung früher 
Sonst => ladewert Timer niedriger damit Zündung später 
)
Hoffe der pseudocode ist verständlich.

MfG Hannes