Hi,
Wirklich heikel ist das Zeugs in der Interrupt-Routine. Wenn die mal alle 64 uS aufgerufen wird und auch nicht länger ist wie im Beispiel, paßt die Synchronisation. Wichtig sind folgende Zahlen
Code:
NTSC       PAL		
  1	  1	WICHTIG normaler Sync (5 uS Puls 0.3V auf 0V) 
                 ~             sichtbarer Bereich
                 ~             ende sichtbarer Bereich
248	295	WICHTIG verkehrter Sync (5 uS Puls 0V auf 0.3V)
( wird der Sync da NICHT umgedreht, läuft das Bild vertikal)
251	299	WICHTIG normaler Sync 
( wird der Sync da NICHT normalisiert, läuft das Bild vertikal)
263	313	WICHTIG Bottom Line -> back to top  1/50 sec
Wenn du in main() erstmal garnix machst, muß das Bild schön stehen (is zwar schwarz, aber es laufe keine Streifen durch)
An den Zeilenzahlen 295 - 313 kann man nicht viel drehen, das PAL-System is nun mal so und das schafft der AVR eigentlich locker. ( mit 8MHZ) das sichtbare Bereich ist da variabler, da kann man nach Geschmack rumschrauben.
Horizontal: nach dem SLEEP müssen ca 6 uS schwarz bleiben, in der Zeit richtet man sich die folgende Zeilenpixel her.
frühere Punkte früher sieht man sowieso nicht.
Aber dann geht es um die Wurst. je schneller der Code, desto mehr horizontale Pixel kriegt man in ca 50 uS raus, dann sollt' man wieder beim SLEEP sein. Braucht man zu lange, werden die Pixel seltsam, aber das Bild sollt stehenbleiben, da ja der Sync im Interrupt auf jeden Fall drankommt.

Ich war natürlich feig', ich hab die Syncimpule und die Pegel erst mit dem Oszi gecheckt, da war's leichter. mfg robert