MEGA 2560 w/ ramps 1.4 shields stepper control

I've been looking for a solution for weeks, and I apologize if I missed it, but I'm having issues controlling stepper motors through the ramps shield. I can do it without the shield but not with. I'm guessing I'm doing something wrong. Maybe the wrong pins? (x step 54, x direction 55, enable 38)
What I'm trying to do is use 2 steppers to control 2 platforms in the z and a slide in the x.

#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2

void setup() {

digitalWrite(X_ENABLE_PIN, LOW);

void loop() {
digitalWrite(X_DIR_PIN, HIGH);
digitalWrite(X_STEP_PIN, HIGH);
digitalWrite(X_STEP_PIN, LOW);

The pins look right for the X motor and limit switches (ref. pins_Ramps.h of Marlin). The step pin is only low long enough for a write to the dir pin at the beginning of loop() then goes high again. The time it takes for a digital write (5us?) may not be long enough to be valid step pulse. Put a delayMicroseconds(20) after the write to low to stretch the pulse a bit.

edit: The data sheet for the stepper driver should have a minimum (step) pulse width listed.