Gast
#520288
Aufgrund einer aktuellen Anfrage zwecks Bereitstellung eines
(funktionsfähigen) Codes für die Auswertung eines SMPTE-Timecodes stelle
ich hier mal was ein :)
Bitte jetzt nicht über meinen (damaligen) "Programmierstil" herfallen...
Der Code stammt aus meiner C-Anfängerzeit (Autodidakt) und wurde seitdem
nicht mehr überarbeitet.
Wer sich inspiriert fühlt, darf diesen Code gerne nochmals überarbeiten
/ optimieren. Ich bitte euch aber darum, etwaige Verbessserungen /
Erweiterungen hier zu posten, damit alle etwas davon haben (schliesslich
habe auch ich mir damals den A... dafür aufgerissen).
Hardwarevoraussetzungen:
- ATMega8 @7.3728MHz
- Externe Signalaufbereitung (TC-Signal muss zumindest mit TTL-Pegeln
zugeführt werden)
Verwendete Pins:
PB0[ICP1] TC-Eingang
PB5[SCK] GPI-Ausgang / LED
PB6[XTAL1] Quarz (16MHz)
PB7[XTAL2] Quarz
PD0[RXD] RS232 (Kommunikation mit ANSI-Terminal)
PD1[TXD] RS232 (Kommunikation mit ANSI-Terminal)
Zum Funktionsumfang:
Der dem PB0(ICP1) Pin zugeführte Timecode wird mittels InputCapture
ausgewertet. Im Quelltext sind diverse Funktionen enthalten (teilweise
auskommentiert) um folgende Informationen zu extrahieren:
- Timecode [ASCII] -> void xtract_tc_ASCII(void)
- Timecode [dezimal] -> void xtract_tc(void)
- Timecode [Frames absolut] -> void convert_to_frames(...)
- Userbits -> void xtract_ub(void)
- Timecodeabhängiges setzen / löschen eines GPI-Ausgangs
Serielle Kommunikation:
38400 Baud
8 Datenbits
1 Stopbit
- Ausgabe an ANSI-Terminal
- Eingabe von TCs für Aktivierung des GPI-Ausgangs via ANSI-Terminal
Anmerkung:
Der TC kann aktuell nur bei Wiedergabe mit 1facher Geschwindigkeit
(PLAY) ausgewertet werden! Eine Auswertung bei SlowMotion,
Jog/Shuttle, FWD und REW ist mit diesem Programm nicht möglich.
Beste Grüße,
Magnetus
