Code p0340 is a fairly common code. Your vehicles computer (PCM, ECM, etc.) uses the CMP (camshaft position sensor) to figure out what it should set the timing at. This is a very important thing because without knowing what the timing should be the computer is useless.
This code basically means that the computer has sent (or thinks it has) a signal to the camshaft position sensor, but it does not see the correct signal being returned from the sensor.
Some symptoms that you might have noticed from this code are hard starting, loss of power, engine popping noises, misfires, check engine light, etc.
The first thing you need to check is all of the wiring you can see. Start with the battery cable connections make sure they are clean and tight. This might seem like a dumb thing to do, but if the computer does not get a steady feed of electricity from the battery it can cause all kinds of problems.
Check for any wires that might have rubbed through or any connectors that might be loose or have come disconnected. Check the fuse box in the vehicle and the relay center under the hood. Make sure the fuses are good and there is no melted plastic, indicating a fire. These are the main wiring problems you are looking for.
If you have checked all of the obvious things and still can't find the solution to code p0340 then you have to start suspecting either the sensor or the computer.
Camshaft position sensors go bad a lot more than PCM's do so I would suspect that first. Unfortunately there is no easy way for you to test it. It will take some expensive test equipment and a skilled technician to test the sensor itself.
If you are a risk taker you can just buy the CMP sensor and install it. It might fix the problem but there is no guarantee without properly diagnosing it.