AnalogRead takes 100us right?
I believe it is 125 us.
I want a max speed of something like 10Hz. (I don't expect someone to push the pushbutton that fast...
Depends on the button and the human. A good button with a fast hand will do better than that. But, your application does not have to be everything to everyone. Or does it?
So I guess it might work after all?
Seems doable. There are some things you can bring to bear that will make a very significant difference...
• It is not necessary to read the potentiometer every pass through loop. We are talking about a (relatively speaking) very slow human.
• Use the analog-to-digital converter in an asynchronous fashion.
• Configure the analog-to-digital converter to run continuously (in the background). What does Atmel call it ... there it is .. Auto Triggering.
• Use a timer interrupt to perform the time-critical tasks (updating the PWM output). I believe this has been recommended: http://www.arduino.cc/playground/Main/MsTimer2
But, I suggest you try fixing the problem after you determine there is a problem.
BUT I haven't accounted the time for the micro to do it's other operations, I'm assuming here the analogRead is the bulk of that time.
From what you've described that is very likely the case.
Is it okay to assume that?
I would.
Is there a way to figure out how many cycles it's going to take to do x y z?
Yes. But, again, I suggest you do that after you determine there is a problem.
In a PIC it's fairly easy but with writing this in C??
Like the PIC, for an AVR processor there are various techniques you can use to either measure the processing time or calculate the processing time.