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.
