[quote user="old_cow_yellow"]I kept hearing the Canon Rule that one must keep ISR as simple & fast as possible and set a software-flag to signal the main program to do the complex & slow work.[/quote]
Good job! Now you shall learn further - how to bend rules you just learned. For example simple projects of mine very often have just init code in main() and all the state machine code live in periodic timer ISR which in case of other ISR's have GIE at the very beginning. Well.. you have to know non-blocking state machine Canon Rule then :)
Screw rules :)