Forum: Mikrocontroller und Digitale Elektronik Benötige hilfe bei erzeugung von video signal/AVR asm


von Sebastian Heyn (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

quelltext im anhang..

es soll ein bild von 208*312 mit nem avr darstellen. der erste test 
sollte eigentlich 100 zeilen schwarz + 106 zeilen balken+100 schwarz 
erzeugen, vsync zählt bis zeile 6. Nicht lachen das programm ist rimitiv 
wie sau. meine asm kenntnisse halten sich in grenzen...

beschaltung des avr

portb 0 ->900ohm an video in
portb 1 ->450ohm an video in

läufte bei 16mhz


Vielleicht sieht ja jmd den fehler auf den ersten blick?

von Sebastian Heyn (Gast)


Lesenswert?

habe jetzt mal den vsync und die schwarzen zeilen auskommentiert, das 
bild steht, also die balken. klar. jetzt schau ich mal weiter wo das 
timing nicht hinhaut...

von mr.chip (Gast)


Lesenswert?

Ähm...wo speicherst du diese ungefähr 8 kB Videodaten?

von Sebastian Heyn (Gast)


Lesenswert?

im flash des mega32? später evtl ein mega128

von mr.chip (Gast)


Lesenswert?

Hallo

So wie dein Programm gschrieben ist, braucht es ja noch viel mehr 
Speicher. Ein Byte pro Bildpunkt, wenn ich es richtig sehe - ca 64 kB 
also. Naja, der Ansatz ist nicht grundschlecht - wer so eine hohe 
Auflösung (arbeite derzeit mit 128 * 84) erreichen will, muss wohl 
Kompromisse in anderen Bereichen eingehen. Aber mit bewegten Bildern ist 
dann wohl Schluss - im RAM hat es niemals Platz, und das Flash wäre wohl 
innerhalb weniger Minuten hinüber.

Gruss

Michael

von Sebastian Heyn (Gast)


Lesenswert?

ja es geht mir erstmal drum ein stehendes bild zu erzeugen. :-)

ich habe das gefühl das es an meinem vsync liegt. habe das ganze mal 
(weils da einfacher ist) mit bascom probiert, nur mit einem einfachen 
schwarz/weiss pattern. das Problem ist verzwickt. die erste zeile steht 
in der hälfte des bildes. ich versteh nur ned warum. hier mal der code
Wie gesagt ich steig so richtig nicht hinter diese ganze vsync 
prozedur...

$regfile = "m32def.dat"
$crystal = 16000000


Config Portb = Output

Const Sync = 0
Const Black = 01
Const Gray = 02
Const White = 03


Dim Line As Byte



Do
Line = 0

'hier fängt der vsync an

Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29

Portb = Sync
Waitus 27
Portb = Black
Waitus 5
Portb = Sync
Waitus 27
Portb = Black
Waitus 5
Portb = Sync
Waitus 27
Portb = Black
Waitus 5
Portb = Sync
Waitus 27
Portb = Black
Waitus 5
Portb = Sync
Waitus 27
Portb = Black
Waitus 5


Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29
Portb = Sync
Waitus 2
Portb = Black
Waitus 29

'schwarze zeilen
Do
Gosub Hsync
Waitus 52
Loop Until Line = 17 'zeile 22

Line = 0
Do
Gosub Hsync
Portb = White
Waitus 21
Portb = Black
Waitus 30
Loop Until Line = 150


Line = 0
Do
Gosub Hsync
Portb = Black
Waitus 21
Portb = White
Waitus 31
Loop Until Line = 140 'zeile 312

Loop 'wieder zum vsync



Hsync:
Incr Line
Portb = Black
Waitus 1
'zwei takte bis sync

Portb = Sync
Waitus 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop

Portb = Black
Waitus 5
nop
nop
nop
nop
nop
nop
nop
nop
Return

von Sebastian Heyn (Gast)


Lesenswert?

es kommt mir so vor als würde der tv nicht das vsync erkennen. an nem 
fernseher flimmerts wie verrückt...

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.