FBAS (PAL) Composite Signalerzeugung
Montag, Dezember 4th, 2006Wie sollte ein FBAS Signal aussehen?
http://de.wikipedia.org/wiki/FBAS
http://del.icio.us/display22/tvout
Tips zur Signalerzeugung, Timingfragen, Interrupts
- /* Delay for the given number of microseconds.
- * From D.Mellis for Arduino
- * Assumes a 16 MHz clock.
- * Disables interrupts, disrupts millis() if used frequently
- * note: digitalWrite() executes in 2.5 microseconds
- */
- // calling avrlib's delay_us() function with low values (e.g. 1 or
- // 2 microseconds) gives delays longer than desired.
- //delay_us(us);
- // for a one-microsecond delay, simply return. the overhead
- // of the function call yields a delay of approximately 1 1/8 us.
- // the following loop takes a quarter of a microsecond (4 cycles)
- // per iteration, so execute it four times for each microsecond of
- // delay requested.
- us <<= 2;
- // account for the time taken in the preceeding commands.
- us -= 2;
- // disable interrupts, otherwise the timer 0 overflow interrupt that
- // tracks milliseconds will make us delay longer than we want.
- cli();
- // busy wait
- __asm__ __volatile__ (
- "1: sbiw %0,1" "\n\t" // 2 cycles
- "brne 1b" : "=w" (us) : "0" (us) // 2 cycles
- );
- // reenable interrupts.
- sei();
- }
das Problem beim Timing von Interupts beim AVR ist, das der beim Interupt gerade laufende Befehl noch zu Ende abgearbeitet wird. Das kann dann 1, 2 oder 3 Takte dauern. Das habe ich in einem Video-Projekt mal folgendermassen gelöst. -- http://www.mikrocontroller.net/topic/27194#206416
@willi: Dein Ansatz ist schon fast perfekt, die Unsauberkeit mit den verdrehten Rücksprungadressen hast du ja selbst erwähnt. Ich habe das Problem dadurch gelöst dass ich den avr kurz (ca. 1us) vor dem nächsten Zeilenbeginn schlafen schicke, damit kommt der nächste Int. bzw. Syncbeginn mit einer konstanten Verzögerung. -- http://www.mikrocontroller.net/topic/27194#206419
Die Vor, Haup und Nachtrabanten sind ja nun sequenziell immer gleich bei der V-Sync. Diese müssen nun auch immer genau 1024 takte ergeben. das sieht so aus: -- http://www.4freeboard.to/board/thread.php?postid=165811#post165811 -- http://www.4freeboard.to/board/thread.php?postid=165845#post165845