http://youtube.com/watch?v=sNCqrylNY-0 http://www.pouet.net/prod.php?which=50141
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
Das erste Video war nicht sichtbar, eine Flash-schwarte. Die zweite Seite ein stehendes Bild. Das stehende Bild kommt von einem Mega88 ?
junge, immer diese Flash-hasser... :( Naja, gibts beim zweiten link auch als mp4 wenn es genehmer ist. Ja, alles von nem mega88 gemacht.
@6643 Da verpasst Du aber ganz schön was. Auf der zweiten Seite gibts auch nen Downloadlink ...
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/
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.
Trotzdem keine schlechte Leistung.
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.
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.
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.
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)
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.
Bei meinem Aufbau passen die Farben zu denen im Video, und dem Bild der Platine im Aufbau nach, scheint meine Belegung zu passen. Da sind immer 2 Widerstände nebeneinander, und beide durch einen weiteren verbunden -> R2R
> 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.
Unbekannter wrote: >> 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. Ich glaub benedikt meint damit, das der AVR nix anderes mehr tun kann.. also nix Wintergames ;)
Ja, so in etwa. Ich habe mal ein wenig den disassemblierten Code angesehen, so wie es aussieht, ist die Grafikausgabe ziemlich in den Berechnungsroutinen integriert. Man kann also nicht ohne alles neu zu schreiben etwas anderes anzeigen.
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
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
Hier das Foto (ja ich weiß, das Foto beinhaltet kaum nützlichen Infos, da alle Bauteile auf der Unterseite sind). Den Schaltplan muss ich noch zeichnen.
Dann mach doch (bitte!) noch ein Bild von der Unterseite. Ich gehe davon aus, dass du SMD-Rs und -Cs verbaut hast... Vielen Dank schon mal ;) Magnetus
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.)
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?)
Die Pins an sich passen in das Lochraster, nur die mittlere Reihe ist genau um 1/2 Lochabstand versetzt. Da muss man Löcher bohren, oder großzügig einen Schlitz fräsen. Da diese Pins alle an GND hängen ist das aber nicht so schlimm.
Kai Giebeler wrote: > (Wie verlinkt man sinnvoll auf Reichelt-Artikel ohne diese Mega-URL > auseinander zu nehmen?) http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=C122;GROUPID=3209;ARTICLE=8506;START=0;SORT=artnr;OFFSET=16;SID=91v4h1LqwQVR1DDHY@Eyl5fe3720953e5bd674053d1081af9f8fe == http://www.reichelt.de/?ARTICLE=8506
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.