Thank you for your replies!
My function generator probably won't be based around the PIC16F18875, I thought of it as more of a intro to PIC programming as I don't know much about programming micros I'll see what I can accomplish on the PIC16F18875 and move on from there once I have a clearer picture of what I want the function generator to do.
If anyone have any more tips I will be glad to hear them.
Some additional things to think about:
My Function Generator is based on the AD9834.
I choose it because I could use the 'FS_Adjust' pin to control the amplitud.
Also, I added additional capabilities not built into the AD9834.
- I implemented a frequency sweep, up and down, by updating the AD9834 from a fixed 500Hz interrupt in the PIC.
- I multiplexed the 'Sign_Bit_Out' pin with a PWM pin on the PIC. A PWM waveform is a nice ability to have.
You need to be careful not to drive both the 'Sign_Bit_Out' pin on the AD9834 and the PWM pin on the PIC at the same time.
The PIC18F2550 just barely met my requirements. One of the driving factors is the display graphics. I used a small OLED display and the graphics library used almost 50% of the PIC memory. A PIC18f2620 is another option with 64B of memory. If you use a display that needs to buffer the display memory, you will need a MCU that has a LOT of RAM memory.