hi Titus, the maximum parameter for the frequency is 65535, but you could use the new Timer2 library which executes a command given a fraction of the the main CPU clock, (16Mhz) so if you need a frequency of 2Mhz then you an use a prescaler CLOCK_DIV8 which means the CPU clock divided by 8 or 2Mhz. In your user function you can toggle a pin, like in the example provided: http://wiring.org.co/reference/libraries/Timer2/index.html

The Timer 2 will generate an interruption every time executing your code, execution of code at high frequencies will slow down the general execution of the loop() but it doesn't stop the loop(), after finishing your function it will return to execute where it was before the interruption. You could try to run tests at slower frequencies, check the example provided with the library and uncomment the line of code that sets the Timer with the prescaler (comment the one that sets the timer with the milliseconds), you can load the example form the File->Examples-Libraries->Timer2 etc. (wiring version 0024 only)