Interfacing with an NTSC TV

I had a hard time getting this code to work. It wasn't sync'ing, and I had to drop the delays down really far to get it to be stable. Something like:
ntscDelayHSyncStart 3 us
ntscDelayBackPorch 1 us
ntscDelayFrontPorch 1 us
ntscDelayPerLine 2*21 us
ntscDelayVSync 25 us

Is it common to have this problem (not sync'ing -- screen is a rapidly moving mess of short horizontal lines) with the original values? Does this mean my board is slower than standard? Or that something else is slowing it?

Is it possible that arduino timing has changed?

Perhaps delayMicroseconds was significantly changed over the past couple years? I just compared 0007 and 0017... The only difference I see is the addition of a local variable and saving/restoring the interrupts SREG. Just a few clock cycles I would think.

My specs:

  • Duemilanove with ATmega328
  • arduino version 0017

Also... i modified the code to allow interactive changing of the delay values, and then to allow 4x the precision in delay values. I could post this messy code if anyone else has trouble with the "standard" delay values; let me know.

Thanks for the code and for any advice about why I'd need much smaller delays!