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
hallo Magnus, d.h. der Pegel vom SMPTE-Signal ist bereits TTL zwischen 0-5 Volt; daraus folgt du legst das Signal direkt an den µC an - ohne was dazwischen? Hans
[Zitat aus "Beitrag "SMPTE empfangen";:] > Zwischen welchen Pegeln bewegt sich das Signal - logische 1 = 5Volt? [/Zitat] Die Daten werden nicht als logisch "1" und "0" sondern mittels "Bi Phase Mark Code" übertragen (siehe folgender Link). http://www.philrees.co.uk/articles/timecode.htm#mod Hans Ehlers wrote: > daraus folgt du legst das Signal direkt an den µC an - ohne was > dazwischen? Nein, ich habe vorsichtshalber noch einen bisschen Hühnerfutter (siehe Anhang) vorgeschaltet. Ich wollte mich nicht darauf verlassen, dass das ankommende Signal wirklich mit TTL-Pegeln ankommt. Gruß, Magnetus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.