What you experience does not really make sense. Reasoning:
- If you can generate a signal using tone() and get the expected frequency on the scope, the board is a 16MHz board.
- Unless the board has a bootloader modified for 32MHz, it would fail a normal upload.
What happens when you just use a simple code that prints something like "Hello world"; does that work as expected or do you also get reverse question marks?