-
BAS/FBAS mit Bascom
Hallo.
Momantan arbeite ich an einer Möglichkeit ein BAS, also ein Fernsehsignal, mit einem Mega32 zu generieren.
Ich habe momentan nur schwarz (0,3V) und weiß (1V) als Farben am Ausgang, die ich an 2 Ausgängen mit Spannungsteilern mache.
Hier ist mein Programm:
$regfile = "m32def.dat"
$crystal = 1000000
Config Porta.4 = Output
Config Porta.5 = Output
Weiß Alias Porta.4
Schwarz Alias Porta.5
Dim X As Long
Dim Y As Long
Do
X = X + 1
If X = 12 Then
Weiß = 1
End If
If X = 25 Then
Weiß = 0
Schwarz = 1
End If
If X = 38 Then
Schwarz = 0
Weiß = 1
End If
If X = 51 Then
Weiß = 0
Schwarz = 1
End If
If X = 64 Then
Schwarz = 0
X = 0
End If
Y = Y + 1
Loop
Y hat hier noch keine Verwendung. Es wird später der Anzahl der Zeilen entsprechen und somit anzeigen, wann ein komplettes Bild generiert wurde.
Mein Problem ist jetzt, dass der Fernseher (Philips Röhrenfernseher) das Signal nicht als Signal erkennt.
Hier sind noch meine Quellen:
http://de.wikipedia.org/wiki/Fernsehsignal#BAS-Signal
http://azubi.vision-tools.com/media/...htm#BAS-Signal
Was habe ich falsch gemacht?
Beste Grüße
Colindrovin
-
Hallo
Auch wenn dein Kontroller mit 1MHz getaktet wird, und deshalb ein Takt eine Mikrosekunde dauert, heißt das nicht, dass nach "If X = 64 Then" genau 64µs vergangen sind. Pro Schleifendurchgang vergeht die Zeit für die If-Abfragen, dem Code für eine erfüllte Abfrage oder der Sprung zur nächsten Abfrage und zusätzlich die Zeit für die Inkrementierungen von x und y sowie der Rücksprung der Do-Loop-Schleife. Alles zusammen dauert einige viele Kontrollertakte und schmeißt dein Timing so über den Haufen, dass der Röhrenfernseher kein Bildsignal erkennen kann.
Gruß
mic
-
Danke für deine schnelle Antwort. Kann ich an dem Port vom Timer 0 einen Oszillator anschließen und mit dem Signal die Variablen hoch zählen? Wenn ja, wie mach ich das?
Ich habe es schon einmal ausprobiert aber es hat nicht funktioniert.
- - - Aktualisiert - - -
Ich habe jetzt ein Programm geschrieben um zu testen ob ich einen 1 MHz Signal verarbeiten kann. Ich bekomme aber nicht 1.000.000 Signale in der Sekunde sondern nur wenige tausend.
Hier ist das Programm:
$regfile = "m32def.dat"
$crystal = 10000000
$baud = 9600
Const Interval = 1
Config Pinb.0 = Input
Dim X As Long
Config Timer0 = Counter , Edge = Falling
On Timer0 On_timer0
Load Timer0 , Interval
Enable Timer0
Enable Interrupts
Do
Print X
Loop
END
On_timer0:
Load Timer0 , Interval
X = X + Interval
Return
Wieso ist das so?