Craft                   

Gast #825422
Lesenswert?

Wow... das ist ja echt abartig... und alles in einem ATmega88 ?!?

Und wir (ähüm... ich ja eigentlich noch nicht) krebsen hier mit so 
langweiligen Dingen rum wie "AVR ASCII Video Terminal - 40 x 25 - BAS 
Signal".

Respekt!

Magnetus
#825548
Lesenswert?

Da ein VGA Ausgang einen sehr hohen Pixeltakt hat, sollte der AVR nichts
anderes machen als ununterbrochen aus dem RAM lesen und auf die Ports
schreiben.
Bei 640x480 und 20MHz Taktfrequenz sollte der AVR 6,6MHz Pixeltakt
erzeugen können. Das ergibt etwa 170 Pixel horizontale Auflösung, was 
auch in etwa hinkommt.
Worauf ich eigentlich hinaus will: Für die Berechnung der Bildausgabe im 
langen VSync würde der SRAM nicht reichen, denn der mega88 hat nur 1k 
und bei 128Pixel pro Zeile könnte man so nur 8 Zeilen speichern. Das 
Bild muss also in Echtzeit im HSync Interrupt berechnet werden. Dazu 
stehen pro Zeile etwa 200 Takte zur Verfügung.
Das erfordert gut optimierte Routinen. Nicht schlecht.

Das ganze erinnert mich an sowas hier:
http://www.256b.com/
#825592
Lesenswert?

Jörg Wunsch wrote:
> Benedikt K. wrote:
>
>> Da ein VGA Ausgang einen sehr hohen Pixeltakt hat, ...
>
> Die Strukturen erschienen mir eher grob, das reduziert den
> effektiven Pixeltakt.  Wenn ich immer zwei nebeneinanderliegende
> Pixel zusammen umschalten kann, dann habe ich ja nur noch den
> halben Pixeltakt.

Ist alles schon mit eingerechnet:
Bei dem Text in Wellenform zähle ich etwa 27 Zeichen pro Zeile. Bei 6 
Pixeln pro Zeichen macht das 162 Pixel, was auch in etwa hinkommt. 
640x480 hat 25,1MHz Pixeltakt, bei 6,6MHz/25,1MHz ergeben sich so etwa 
170 Pixel.
#825833
Lesenswert?

Das ganze ist etwas anderst als ich anfangs gedacht habe:
Für den Text wird (wie üblich) SPI verwendet, und die Textdaten via 
Dioden in das Videosignal eingekoppelt. Daher sind so etwa 250 Pixel 
Auflösung möglich, bei der Farbgrafik nur weniger. Dafür kann man den 
Text oder hochauflösende Grafiken nur in weiß bzw. mit recht blassen 
Farben darstellen.
An sich eine nette Demo, nur leider wenig praxistauglich, außer für sehr 
spezielle Anwendungen.

Der Sound ist aber auch nicht schlecht: Es handelt sich nich um 
einfachen PWM Sound, sondern an PortD hängt ein DAC. In der Software 
scheint eine Art einfacher Synthesizer zu laufen, denn so wie es 
aussieht sind die einzelnen Frequenzen kein Rechteck, sondern eine 
Mischung aus verschiedenen Signalformen, u.a. Dreieck.
#825845
Lesenswert?

Kann mir einer kurz erklären, wie ich mir die D/A-Elemente in der 
Schaltung vorzustellen habe?

Das mit den Dioden und dem Transistor ist mir dank Benedikts Anmerkung 
jetzt klar.

Beim Audio könnte ich mit einen R/C-Tiefpass oder ein R2R-Netzwerk 
vorstellen (kann die Schaltung leider gerade nicht einsehen) - die 
kapazitive Kopplung danach ist klar.

Wie ist das bei den RGB-Leitungen? Ich hätte da einfach einen 
Spannungsteiler drangehängt. Oder kann der pro Farbkanal mehr als zwei 
Zustände darstellen? Für was könnte das D/A-Element stehen?

Wär super, wenn mir einer noch ein paar Fragezeichen über'm Kopf 
beseitigen könnte.
#825852
Lesenswert?

So wie ich das sehe, hat er R2R DACs verwendet: Für Sound 6bit und für 
Bild 2bit. Damit sind also 64 Farben möglich. Ich habe es mit 330 + 680 
Ohm Widerstände nachgebaut, geht auch.

PortC 5: R1
PortC 4: R0
PortC 3: G1
PortC 2: G0
PortC 1: B1
PortC 0: B0

PortD 7: Sound5
PortD 6: Sound4
PortD 5: Sound3
PortD 4: Sound2
PortD 3:  ??? (sieht nach PWM oder sowas aus, es kann sein, das der 
Emitter des Transistors hier angeschlossen wird)
PortD 2: Sound1
PortD 1: Sound0

PortB 1: VSync
PortB 2: HSync
PortB 3: HighRes Daten (zur Basis des PNP)
#825871
Lesenswert?

Super, danke. Das entspricht weitgehend meiner Vermutung. Das mit dem 
SPI war mir neu.

Port-C könnte auch wie folgt belegt sein
PortC 5: B0
PortC 4: G0
PortC 3: R0
PortC 2: B1
PortC 1: G1
PortC 0: R1

Das beschleunigt das Einschieben von Farbinformationen, die nur das 
obere Bit nutzen sollen - reine Spekulation.
Gast #826040
Lesenswert?

> An sich eine nette Demo, nur leider wenig praxistauglich, außer
> für sehr spezielle Anwendungen.

Das kann nur einer sagen, der die C64-, CPC-, Atari- und Amiga-Zeit nie 
miterlebet hat.
Gast #826186
Lesenswert?

Benedikt K. wrote:
> So wie ich das sehe, hat er R2R DACs verwendet: Für Sound 6bit und für
> Bild 2bit. Damit sind also 64 Farben möglich. Ich habe es mit 330 + 680
> Ohm Widerstände nachgebaut, geht auch.

Ui... Kannst du mal ein Bild von deinem Nachbau hier einstellen?

Gruß,
Magnetus
Gast #826250
Lesenswert?

Ich dachte erst mal an ein Bild deiner Hardware (egal ob Lochraster oder 
Breadboard).

Gegen einen Schaltplan hätte ich allerdings auch nichts einzuwenden. Ich 
denke, daß es hier bestimmt noch (viel) mehr Forumsteilnehmer gibt, 
denen es jetzt ganz spontan in den (Löt-)Fingern juckt ;)

Gruß,
Magnetus
#826281
Lesenswert?

Hier der Schaltplan. Bei PortD3 bin ich nicht sicher, ob und wie der Pin 
verwendet wird. Er gehört nicht zu den Audiodaten, das ist sicher.
Das Signal ist ein ziemlich konstantes Rechteck, eventuell ist das ein 
Signal für den Transistor. Dem Blockdiagramm im Video nach, scheint der 
Transistor mit dem Emitter nicht einfach an 5V angeschlossen zu sein.
Ich habe einfach mal den Emitter über 47 Ohm an 5V gelegt, da dies die 
benötigten 0,7V am Ausgang ergibt. Zumindest sieht das Ergebnis bei mir 
genauso aus, wie in dem Video.
Den 6bit Audio DAC habe ich bei mir auf 4bit beschränkt. Ich höre keinen 
großen Unterschied zwischen 2 oder mehr Bit, da die Musik doch relativ 
digital klingt (auf dem Oszi sieht man aber deutlich mehrere 
unterschiedliche Stufen.)
Angehängte Dateien:
#827701
Lesenswert?

Blöde Frage... ist die VGA-Buchse auf dem Bild für Rochraster geeignet,
oder hast du da getrickst?

Bei Reichelt finde ich nur die "HD 15FW" und die dürfte nur mit sehr
gutem Zureden passen...

(Wie verlinkt man sinnvoll auf Reichelt-Artikel ohne diese Mega-URL
auseinander zu nehmen?)
Gast #828665
Lesenswert?

Yup.... in einem der Files findet sich der komplette Sourcecode und der 
Schaltplan als ASCII-Art:
1
                                 .---[ 1K ]-+------- E (PNP) C -------------------+---+---.
2
                                 |    /|\   |            B                       _|_ _|_ _|_
3
                                 |     `----'            |                       \ / \ / \ /
4
                                 |                       |                       --- --- ---
5
                                 |       .---__---.      |                        |   |   |
6
               (to programmer) --- RESET |        | PC5 ----[ 442 ]-----------+---+---|---|--- Red
7
                                 |       |        |      |          .-[ 220 ]-'       |   |
8
                              (n.c.) PD0 |        | PC4 ----[ 442 ]-+-[ 442 ]--- GND  |   |
9
                                 |       |        |      |                            |   |
10
            .----------+-[ 2K ]----- PD1 |        | PC3 ----[ 442 ]-----------+-------+---|--- Green
11
            | .-[ 1K ]-'         |       |        |      |          .-[ 220 ]-'           |
12
            | `--+-------[ 2K ]----- PD2 |        | PC2 ----[ 442 ]-+-[ 442 ]--- GND      |
13
            |    `-[ 2K ]-- GND  |       |        |      |                                |
14
            |                    `- OC2B |        | PC1 ----[ 442 ]-----------+-----------+--- Blue
15
            `---[ 1K ]-.                 |        |      |          .-[ 220 ]-'
16
              .--------+-[ 2K ]----- PD4 |        | PC0 ----[ 442 ]-+-[ 442 ]--- GND
17
              |                          |        |      |
18
              |                      VCC |        | GND  `-[ 1K ]-.
19
              |                          |        |               |
20
              |                      GND |        | AREF (n.c.)   |
21
              |            22pF          |        |               |
22
              |        GND -||--+- XTAL1 |        | AVCC (n.c.)   |
23
              |         20 MHz [ ]       |        |               |
24
              |        GND -||--+- XTAL2 |        | SCK -------------- (to programmer)
25
              `-[ 1K ]-.   22pF          |        |               |
26
              .--------+-[ 2K ]----- PD5 |        | MISO ------------- (to programmer)
27
              `-[ 1K ]-.                 |        |               |
28
              .--------+-[ 2K ]----- PD6 |        | MOSI ---------+--- (to programmer)
29
           +  `-[ 1K ]-.                 |        |
30
     ----)|------------+-[ 2K ]----- PD7 |        | OC1B ------------------------------------- HSync
31
Audio   10uF                             |        |
32
     --------- GND            (n.c.) PB0 |        | PB1 -------------------------------------- VSync
33
                                         `--------'

Gruß,
Magnetus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren