Need help with Arduino PWM signal being interupted

I have been trying to do basic speed control of a motor using PWM. So far I was able to use the sweep function to output a changing PWM signal to a speed controller and got the motor to speed up and slow down properly. The problem I am having came when I took the Arduino Uno off the shield and tried to run it straight off a breadboard. I connected both ground pins, the Vcc's and the timing crystal to the correct pins. At this point I was able to probe the PWM output with an oscilloscope and see that it was still working correctly.

BUT when I connect that PWM pin to any other device the signal stops immediately and goes straight to ground. I tried using an optocoupler to isolate that signal from the rest of the circuit but the same thing happens. As soon as the PWM pin gets connected to the optocoupler input the signal drops to ground and stays there. If I undo the connection and reset the arduino the signal comes back.

The only way to get the arduino to maintain the expected PWM output is to hook it up to its own power supply that nothing else is running off of. This works okay in the lab but is not practical for a self contained device.

I can't seem to figure out why the arduino stops the signal if anything else is connected. I have checked to make sure there aren't any other shorts or connections that could be supplying excessive current or anything. Is there some sort of fail-safe in the arduino that stops that output if it detects a current spike or something?

Any help or advice on how to proceed is greatly appreciated. If you need me to supply more information on my circuit just ask. *There are more specifics about the code and circuit in my next post.

Schematic?
Code?

[ quick checks though: dry joint? pinMode OUTPUT? ]

MarkT:
Schematic?
Code?

[ quick checks though: dry joint? pinMode OUTPUT? ]

Here is a picture of the circuit I am using as an ESC, let me restate that this portion of the circuit works just fine when the Arduino is run off it’s shield. The PWM is connected to either input A or B to change the direction of the motor.

The arduino is hooked up as seen below, with #15 being the pwm output. My timing crystal is not being grounded across the capacitors as shown.

The code is just the fade sample code that is built into the arduino software and available on their site. I have supplied it below. As I said already though, this is not where the issue seems to be since I am able to get the ESC to take this as an input.

int ledPin = 9;    // LED connected to digital pin 9

void setup()  {
  // nothing happens in setup
}

void loop()  {
  // fade in from min to max in increments of 5 points:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);        
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  }

  // fade out from max to min in increments of 5 points:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);        
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  }
}

The problem is not a dry joint.