Pages: [1] 2   Go Down
Author Topic: Arduino und TVOut  (Read 1499 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 2
Posts: 77
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo...

es gibt ja diese schöne TVOut Libary.
Die funktioniert auch Super, habe auch ein Pong spiel damit
Programmiert für den Fernseher (AV IN).

Jetzt hab ich mir mal die Libary etwas genauer angeschaut.
Meine C-Programmier Fertigkeiten sind noch etwas bescheiden, da ich
erst ins zweite Semester komme...

... und das alles sieht so unglaublich kompliziert aus. Ich habe
mir mal etwas zu Bildübertragung durchgelesen und finde, dass
es eigentlich ein garnicht so kompliziertes prinzip ist.

Ich mag es immer nicht, schon fertige Libarys zu benutzen.
Das ist nichts besonderes und man lernt dabei auch genau garnichts!
Also habe ich mich entschlossen, selber eine eigene Ansteuerung
für den AV-IN am Fernseher zu bauen.

Was steckt wirklich dahinter? Ist es wirklich so Kompliziert wie
die Libary es vermuten lässt? Sprich: Hab ich etwas nicht bedacht?
Oder ist man durchaus als Anfänger in der Lage, sich in dieses
Gebiet einzulesen und loszulegen?

Grüße,
Philipp


Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube nicht, daß die Videosignalausgsgabe in C geschrieben ist, sondern in Maschienensprache da nur so die genauen Timings eingehalten werden können.
Zum Anfangen die Libraries zu verstehen ist es besser Du fängst mit anderem an.
Grüße Uwe
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe mal gerade in die Lib reingeschaut. C garniert mit Inline Assembler. Sehr nett. Aber sicher nicht für Anfänger. Leute die sowas studieren nehmen aber garantiert keinen Schaden wenn sie sowas trotzdem durchanalysieren. Von sowas lernt man mehr als von einer Anfängervorlesung smiley-wink Mit Google kann man ja recht schnell rausbekommen was die eher esoterischen Teile bedeuten smiley
Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Jr. Member
**
Karma: 2
Posts: 77
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nun habe ich mich in das Gebiet etwas eingelesen. Ich weiss,
dass Arduino über nicht Assembler Befehle nicht Optimal für sowas ist,
vor allem was das Timing angeht. Aber es soll angeblich Funktionieren
für ein sehr Simples Schwarz-Weiß Bild.

Ich habe im Moment Probleme mit den Synchronistationsignalen.
Auf Wikipedia ist das ganz gut erklärt und ich halte mich
auch daran. Doch bekomme ich keine anständige Synchronisation.

Ich gehe wie folgt für für H-Sync:
(uS = Microsekunden)

1. 0,3 Volt für 1.5 uS (Vordere Schwarzschulter)
2. 0 Volt für 4,7 uS (Horizontaler Zeilenwechsel)
3. 0,3 Volt für 5,8 uS (Hintere Schwarzschulter)
dannach:
4. Bildübertragung für 52 uS

Fertig und das ganze wieder von vorne bis... tja bis wann..
Man geht von 625 Zeilen aus und soll - jetzt wird mein Wissen darüber etwas
Diffus - so wie ich das verstanden habe nach der hälfte c.a einen Vertikaler Sync
gesendet werden, der aus 5 Vortrabanten besteht, 5 Sync-Impulsen und
wieder 5 Nachtrabanten.

Dann sollte das zweite Feld beginnen also wieder Hsync bis Zeile 622 und dann
wieder V-Sync bis Zeile ~5.

Das will alles nicht so recht funktionieren :-(

Ist meine Annahme aber soweit richtig?
Ich bekomme höchstens paar flimmernde Streifen zu sehen, die, woher auch
immer sein mögen...
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie bekommst Du denn die 1,5 uS oder 4,7 uS ohne Assembler hin? Wenn ich mich nicht verrechne, sind bei 16MHz eine uS genau 16 Takte und damit im Idealfall 16 Befehle. Das ist für eine Hochsprache wie C schon ziemlich knapp.
Poste doch mal den Code den Du bisher hast.
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab ich nen Denkfehler? Bei 16 MHz dauert ein Takt 62,5 Nanosekunden, also 62.500 Mikrosekunden. Da haben wir für die 1,5µs nette 41667 Taktzyklen zur Verfügung. Knapp ist was anderes - sofern ich mich nicht verrechnet habe.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmm, evtl. irre ich mich ja auch.
16 MHz sind doch 16.000.000 Take pro Sekunde
Damit sind es 16.000.000 / 1000 = 16.000 pro Millisekunde
und damit dann 16.000 / 1000 = 16 pro Microsekunde.

Oder hab ich da gerade einen riesen Denkfehler in meiner Rechnung?
Logged

Wien
Online Online
Edison Member
*
Karma: 27
Posts: 1845
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
sofern ich mich nicht verrechnet habe

hast  Du.

gruß stefan
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab ich nen Denkfehler? Bei 16 MHz dauert ein Takt 62,5 Nanosekunden, also 62.500 Mikrosekunden. Da haben wir für die 1,5µs nette 41667 Taktzyklen zur Verfügung. Knapp ist was anderes - sofern ich mich nicht verrechnet habe.

62,5nS sind nicht 62500µS sondern 62500pS oder 0,0625µS

Um zur Anzahl der Takzyklen zu kommen mußt Du die Zeit durch die Zykluszeit dividieren also 1500nS/62,5nS=24 oder 1,5µs / 0,0625µS =24.

Grüße Uwe
« Last Edit: March 15, 2013, 07:15:58 am by uwefed » Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oh je, das war ne arbeitsreiche Woche. Wenn nicht einmal das einfache Umrechnen funktioniert, sollte ich heute wohl früher Feierabend machen... Schönen Dank für die Richtigstellung!

Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur so nebenbei:
Bei meinem Arcademonitor wird das H- und V-Sync-Signal über eine einlzige Leitung übertragen...

Ob das hilft oder nur mehr verwirrt, weiß ich nicht.
Ich hoffe allerdings ersteres!  smiley-wink

Gruß
Reinhard
Logged

Offline Offline
Jr. Member
**
Karma: 2
Posts: 77
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay, nachdem ihr mich erfolgreich verwirrt habt...
Hab ich jetzt mal Nachgerechnet:

T = 1/f
<> T = 1 / 16.000.000 Hz
<> T = 0,0625 µS
Bei 16 Mhz dauert eine Peroiode (ein Takt also) 0,0625 µS
Und somit sind in 1.5µS z.b 24 Befehle möglich da:
1.5 µS / 0.0625 µS = 24

Somit ist mein Vorhaben möglich!!?

Ich glaube ich sollte mal den Code völlig neu überarbeiten
und mir was elegantes einfallen lassen. Bisher ist es
nur eine Abfolge von Signalen... Vor allem
was den V-Sync angeht....

Hat jemand evtl kurze Anregungen?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab ich jetzt mal Nachgerechnet:

Und somit sind in 1.5µS z.b 24 Befehle möglich da:
1.5 µS / 0.0625 µS = 24
Nein. Somit sind nicht 24 Befehle, sondern x Befehle die zusammen 24 Taktzyklen brauchen, möglich.

Nicht jeder Maschienenbefehl braucht nur 1 Takt, es gibt auch solche die 2,3 bis 5 brauchen.
http://www.atmel.com/images/doc0856.pdf

Grüße Uwe
Logged

Wien
Online Online
Edison Member
*
Karma: 27
Posts: 1845
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

Quote
Ein Vorteil gegenüber anderen Mikroprozessor-Familien ist, dass sich dank der RISC-Architektur die meisten Register-Befehle innerhalb eines Systemtakts abarbeiten lassen, ausgenommen Sprung- und Multiplikationsbefehle sowie Zugriffe auf das Speicherinterface (u. a. RAM und I/O-Ports). Somit ist diese Architektur sehr schnell im Vergleich zu anderen.

da geht's aber um assembler-befehle. Dein C muß ja erst in maschinensprache übersetzt werden, und da werden aus einem C-befehl viele maschinen-befehle.

trotzdem viel glück, man kann's ja probieren...

gruß stefan
Logged

Offline Offline
Jr. Member
**
Karma: 2
Posts: 77
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ach das hatte ich garnicht bedacht...
...auch wenns nur Pegel und Delaybefehle sind!

Naja mit meiner Methodik funktioniert das
ohnehin nicht. Ich komme nich drum rum
mich mit der TVOut Libary auseinanderzusetzen... :-)

Vielen dank euch allen!

Logged

Pages: [1] 2   Go Up
Jump to: