Forum: Projekte & Code SMPTE Timecode Reader ATMega8 @7.3728MHz


von Magnus Müller (Gast)


Angehängte Dateien:

Lesenswert?

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

von Olaf B. (olli_b)


Lesenswert?

Dankeschön.


Olaf

von Hans Ehlers (Gast)


Lesenswert?

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

von Magnus Müller (Gast)


Angehängte Dateien:

Lesenswert?

[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
Noch kein Account? Hier anmelden.