When should one use polling method and when should one use interrupt based method ? Are there scenarios in which both can be used ?
If the event of interest is:
then an interrupt based handler would make sense.
If the event of interest is:
then polling might be a better fit.
Other considerations include whether you are writing a device driver for an OS or just writing bare metal code with no thread support. In bare metal situations the CPU is often just looping when it isn't busy so it might as well be polling something.