PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe eines Textes auf TV



Seiten : [1] 2

Trabukh
09.01.2005, 21:46
Moin!
Ich weiß, dass ich dem einen oder anderen mit meiner Fragerei in letzter Zeit schon auf den Keks gehe, es tut mir auch Leid, aber ich hab' halt irgendwie so einen riesigen Bedarf... ;-)

Worum es eigentlich geht, ist eine Schaltung, mit der man einen einfachen Text mit einem ATmegaXX auf einem Fernseher darstellen kann. Das Signal sollte ein einfaches BAS- oder FBAS-Signal sein, also eigentlich das übliche Videosignal, das überall benutzt wird.
Ist soetwas mit einem AVR überhaupt möglich, und wenn ja, wo könnte ich Informationen darüber bekommen? Ich meine, so ein Projekt schon mal auf einer Seite gesehen zu haben, aber mir fällt der Link nicht mehr ein und Google hat mir in diesem Fall leider auch nicht geholfen...

Gruß, Trabukh

P.S.
Ich frage in letzter Zeit so viel, weil ich einfach wissen will, was man so alles mit einem ATmegaXX anstellen kann, und was davon noch in meiner Macht steht! ;-)

RCO
09.01.2005, 22:01
Hier:

http://www.ulrichradig.de/
Dann Projekte und Videotext

Allerdings ist das wohl alles nicht ganz so einfach ;-)

MFG Moritz

Andree-HB
09.01.2005, 23:17
...soll schaltungstechnisch sehr einfach sein, schaue dafür mal bei :

http://www.rickard.gunee.com/projects/video/pic/howto.php

und bei :
http://www.riccibitti.com/designs.htm

Trabukh
10.01.2005, 05:37
Danke euch beiden. Sieht wohl doch so aus, als wäre das nicht so schnell zu realisieren, zumal ich das ganze aus Geschwindigkeitsgründen in ASM programmieren müsste...

Gruß, Trabukh

pebisoft
10.01.2005, 11:42
wo schliesse ich am fernseher die 0v, 0,3v 0,7v und 1v an, damit ich
eine reaktion auf dem schirm sehen kann(weis,grau,scharz). welcher kanal wird eingestellt.
mfg pebisoft

Andree-HB
10.01.2005, 12:09
Du schliesst da nicht verschiedene Spannungen an, Du erzeugst sie im einfachsten Fall über den zweistufigen D/A-Wandler (zwei PortPins + Widerstände) in einer bestimmten Form - und das Signal geht dann an den Videoanschluss Deines Fernsehers (Chinch gelb/Scart).

Die Signalgeneration und das Timing erzeugt hier alles Weitere und ist halt das grosse, aber durchaus lösbare, Problem !

Florian
10.01.2005, 12:44
Hi Trabukh!
Schau mal da, das ist echt cool, habe ich auch nachgebaut, allerdings aus der Elektor (kannst mich ja mal ganz lieb fragen, ob ...)! *zwinker*
http://jkdesign.de/avrproject/index.html
bzw. direkt hier:
http://jkdesign.de/avrproject/Die%20MAHPONG%20Seite.htm

RCO
10.01.2005, 13:15
Gibt es denn nicht was, wo man schrift farstellen kann, ähnlich wie auf einem Display, mit ner Subroutine in Assembler die dann den REST REGELT ;-)

MFG Moritz

Trabukh
10.01.2005, 15:58
Wie RCO möchte ich auch Text anzeigen können. Danke auch an Florian, vllt kannst du mir die Elektor mitbringen, wenn wir uns mal wieder treffen sollten... ;-)

Gruß, Trabukh

pebisoft
10.01.2005, 17:31
hallo florian, alle achtung was du als schüler ausgegraben hast. ich als erwachsener belobige das. ich werde das projekt morgen mal austesten mit einem avr 16 auf der tv-karte. nur muss ich es noch in bascom umwandeln. vielleicht hat das schon ein anderer versucht und es gibt für bascom eine brauchbare lösung. dieses projekt sollte man einmal verfolgen und ausbauen.
mfg pebisoft

Florian
10.01.2005, 17:44
Hi pebisoft!
Das Assembler-Programm für das Spiel ist leider sehr komplex.
Ich habe es zwar intensiv durchgelesen, aber ich habe es nicht vollständig verstanden.
Ich befürchte, dass es sehr schwer sein wird das Spiel zu übersetzten!
Aber trotzdem viel Glück! ;o)

pebisoft
10.01.2005, 18:22
hallo, das avr-video-projekt ist eine herausforderung
für den umgang mit dem avr. die sprachen bascom und winavr(c)
sollte hierbei eine vorrangige stellung bekommen.
es könnte sich hierbei ein prokjekt heraus kristallisieren
was auch einen sehr grossen lernerfolg hat, weil auch eine
video(bild-darstellung) unendliche möglichkeiten der
kreativen bewegung darstellt. ein neues anwendungsgebiet
erschliesst sich für den "nur avr". darum packt es an
und macht was sehenswertes draus. man kann auch sagen, die video-patrioten.
mfg pebisoft

Trabukh
10.01.2005, 18:34
Hmm, eigentlich hast du ja recht... ASM wollte ich mir schon immer "reinziehen". Ich werde ein bisschen damit rumprobieren, und sollte etwas dabei herauskommen, werd ich es natürlich hier reinschreiben.

BTW: Mit einem ATmega mit 16MHz sollte doch eine geringfügig bessere Ausflösung zu realisieren sein, oder?

Gruß, Trabukh

EDIT: Ich schätze, mit BASCOM oder anderen Hochsprachen gehen wohl durch das Kompilieren zu viele Takte verloren, als dass man es sinnvoll einsetzen könnte... :-k

pebisoft
10.01.2005, 19:24
wenn sich jetzt alle wissenden in bascom
zusammenschliessen, die an dem projekt avr-video
interessiert sind, müsste es doch möglich sein in
2-3 tagen ein patentrezept zu veröffentlichen, was klar
stellt, das der avr und bascom mehr können als nur
pins ein und auszuschalten, sondern auch noch ein
videosignal so steuern können, das ein bild entsteht.
dies würde viele andere zum nachdenken reizen und die
werden sich dann die frage stellen, ob sie doch auch
noch auf bascom umsteigen werden. dieses videosignal
könnte auch eine grundlage für die sichtbarmachung von
messdaten sein. was vorher nur zahlen waren, sind jetzt
linien und punkte auf einen bildschirm,
zitat: ein bild sagt tausend worte.
lasst euch nicht durch das ping-pong-beispiel verführen, auch gleich so etwas kompaktes zu produzieren, nein beschränkt euch erst einmal auf einen einfachen punkt und eine einfache linie, dann erst geht weiter und fragt euch, was mache ich jetzt mit den punkt oder mit linie, wie bewege ich den punkt und die line, wie mach ich dann aus dem punkt und der linie eine form usw., schritt für schritt.
mfg pebisoft

Trabukh
10.01.2005, 20:14
Ähm, allein schon für das Einschalten eines Pins braucht BASCOM garantiert mehr als 3 Takte, und dieser Verlust ist einfach zu hoch, um ein akzeptables Bild zu erzeugen. Ich denke, ohne ASM geht es einfach nicht!

Gruß, Trabukh

P.S.
Sollte ich mit dieser Vermutung falsch liegen, bitte ich um Korrektur...

pebisoft
10.01.2005, 20:18
in bascom kann man ja auch asmroutinen einbauen, wie ich in der beschreibung gesehen habe, die haben sogar den gleichen wortlaut.
mfg pebisoft

churchi
10.01.2005, 20:22
Ich denke auch, dass man dafür nicht ohne ASM auskommen wird.
Nicht umsonst wird immer noch für sehr Zeitkritische (und dazu gehört wohl auch das Anzeigen von Bildern auf TV) noch ASM verwendet.

Trabukh
10.01.2005, 20:29
Man könnte höchstens versuchen, einen AVR mit ASM zu programmieren, und während die nicht sichtbaren Signale verarbeitet werden (also nichts passieren muss), könnte man von einem zweiten AVR mit Bilddaten versorgt werden, die dann im nächsten Bild angezeigt werden. Allerdings müsste man sich, wie gesagt, erst ein Grundgerüst in ASM basteln mit Protokoll etc.

Gruß, Trabukh

RCO
10.01.2005, 20:50
Sowas suche ich, eine Script-kombination aus Bascom und ASM.
So dass man dann mit verschiedenen Unterroutinen Die Ausgabe ändern kann, z.B.
Call TEXT(x,y, "Text")
Der rest ist dann in Assembler geschrieben um das ganze flott zu machen, aber leider kann ich überhaupt kein Assembler und hae auch von der Videoansteuerung gar keine Ahnung.

Hilfe erwünscht ;-)

MFG Moritz

Trabukh
10.01.2005, 21:22
http://www.rickard.gunee.com/projects/video/pic/howto.phpAlso die Ansteuerung düfte wohl kein Problem sein.
Wie man das ganze in ASM verpacken sollte, ist mir persönlich dann aber auch noch ein Rätsel... Aber prinzipiell muss man für diese Aufgabe keine Programmierakrobatik verwenden, man muss nur zum richtigen Zeitpunkt (da liegt das Problem) die richtigen Ports an bzw. ausschalten.

Gruß, Trabukh

Florian
11.01.2005, 15:18
Hi Trabukh!
Wenn Du mir den Programmablauf genau in der Reihenfolge usw. sagst, dann könnte ich ihn Dir z.T. vielleicht proggen!
Aber versprechen kann ich nichts! ;o)

RCO
11.01.2005, 16:00
On a PIC16F84 @ 12Mhz, 3 million instructions per seconds are performed

Ist es nicht eh so, dass Die AVRs entsprechend ihrer Taktrate auch befehle druchkriegen, also bei 12 Mhz auch 12 Millionen Befehle rechnen?

Dann würde man das Timing besser hinbekommen.

Vor allem verstehe ich die vertikala Synchronisation noch nicht ganz. Für was genau stehen die Zahlen unter dem Signal in diesem Bild?
http://www.rickard.gunee.com/projects/video/pic/vinfo_vsync_big.png

(Alles Bezogen auf http://www.rickard.gunee.com/projects/video/pic/howto.php)

Trabukh
11.01.2005, 16:32
Die stehen für die jeweilige Bildzeile. Glücklicherweise schaffen AVRs auch pro Takt einen Befehl, sodass man nicht wie im Beispiel von 3 Mips, sondern etwa 16 Mips ausgehen kann. Ich denke, mit dieser Frequenz kann man schon sehr viel anfangen...

Gruß, Trabukh

@Florian: Ich werd' mir den Aufbau nochmal genau angucken, und dann sehen wir weiter, aber schon mal VIELEN DANK für das Angebot!

pebisoft
14.01.2005, 16:11
hallo, habe mir einen at90s8515 gekauft und die
schaltung auf dem steckbrett aufgebaut. das hex-programm
mahpong.hex funktioniert zu 100%. im album unter roboterbilder habe
ich 2 bilder reingestellt. eins vom steckbrett und ein bild
vom bildschirm auf dem pc unter wintv. jetzt muss nur noch versucht werden, dieses einmal auf den avr16 zu generieren unter bascom.
aber läuft schon einmal.
mfg pebisoft

pebisoft
14.01.2005, 21:19
hallo, mit diesem kurzen programm habe ich das streifenbild mit bascom erstellt. siehe "album, roboterbilder".

$regfile = "m16def.dat"
$crystal = 8000000

Enable Interrupts

Config Pind.5 = Output
Config Pind.6 = Output

Portd.5 = 0
Portd.6 = 0
Waitms 100

Do

Portd.6 = 1
Portd.5 = 1

Portd.6 = 0
Portd.5 = 0

Loop

mfg pebisoft

RCO
15.01.2005, 18:38
Nicht schlecht, im Grunde ja ganz simpel. aber man sieht auch, wie "breit" die streifen schon sind, und das obwohl ja noch ganix nebenbei berechnet wurde.
Wenn ich das richtig verstehe, entsteht ein schwarzer Streifen, wenn beide auf 0 sind und ein weißer, wenn beide 1 sind. Und da sieht man schon, dass die schwarzen streifen nur durch die "do-loop"-Anweisung dicker sind.

Ich denke an ASM führt kein Weg vorbei.

MFG Moritz

recycle
15.01.2005, 19:51
Wenn ich das richtig verstehe, entsteht ein schwarzer Streifen, wenn beide auf 0 sind und ein weißer, wenn beide 1 sind. Und da sieht man schon, dass die schwarzen streifen nur durch die "do-loop"-Anweisung dicker sind.

Ich denke an ASM führt kein Weg vorbei.


Bascom übersetzt den Basic Code auch in Assembler und bei die Befehle do, loop und die die in Pebi-Softs Programm dazwischen stehen sind ziemlich elementar. Wandelt Bascom die wirklich so viel schlechter um, als man es direkt in Assembler selber programmieren könnte?

Viel Luft dürfte da bei dem verwendeten 8 MHz Quarz sowieso nicht bleiben.

Soweit ich weiss beträgt die Zeilenfrequenz eines Fernsehers 15600 Hz und eine Zeile besteht aus ca. 700 Bildpunkten.

15600kHz*700= ca. 11MHz

D.h. eine Streifenbreite von 1 Bildpunkt kann bei 8 MHz auch in Assembler eigentlich nicht funktionieren. Oder habe ich da einen Denkfehler drin?

Trabukh
15.01.2005, 19:52
Vllt könnte mal jemand aus der ASM-Riege hier versuchen, so ein Streifentestbild zu machen, dann hätte man eine Vorstellung der möglichen Auflösung mit einem ATmega.

Gruß, Trabukh

JanB
15.01.2005, 21:30
Hallo,
Zeilenfrequenz eines Fernsehers 15600 Hz und eine Zeile besteht aus ca. 700 Bildpunkten.
Ja, genau sind es 15625Hz, entsprechend 64us Zeilendauer.
"Bildpunkte" im eigentlichen Sinne gibt es dort nicht,
weil das Videosignal ja analog ist.
Es hat meines Wissens nach im Schwarz-Weiss-Bereich
eine Bandbreite von 5Mhz.
Der "sichtbare Bereich einer Bildzeile ist etwa 52us lang.
Das ergibt bei 5MHz etwa 260 SW-Wechsel pro Zeile,
also wären 520 Bildpunkte darstellbar.

Ein ATMega8 mit 8MHz könnte mit der Befehlsfolge in Beispiel-1
ein Rechteck mit einer Frequenz von 2 Mhz
an PortB ausgeben.
Ein Mega8 mit 8MHz könnte also maximal 400 Bildpunkte pro Zeile anzeigen.
Das ist allerdings mehr als theoretisch,
denn dann dürfte er gar nichts anderes mehr tun,
nicht mal entscheiden ob der nächste Bildpunkt an oder aus sein soll.

Etwas realistischer ist Beispiel-2. Hier werden Bildpunkte
aus einem Bildspeicher im internen RAM gelesen und ausgegeben.
Das schafft der Mega8 mit etwa 200 Bildpunkten pro Zeile,
wenn er nix anderes macht.
Diese Punkte könnten aber 64 Graustufen haben.

Also realistisch dürfte max. die Hälfte sein.
Das wären dann immerhin noch um die 100 Bildpunkte,
da könnte man schon was mit machen.

Und den Mega-8 gibt es ja auch mit 16MHz, :-)

Aber zumindest den Kern müsste man auf jeden Fall
mit "Handoptimiertem" Assemblercode machen.

Gruß Jan



Unvollstädige Codefragmente für Abschätzung TV-Ausgabe mit ATMega-8

;Beispiel-1
;2Mhz an PortB Bit0 ausgeben
ldi r16,0
ldi r17,1
loop: out portb,r16
out portb,r17
rjmp loop


;Beispiel-2
;Bildpunkte aus Bildspeicher vidmem lesen
und an PortB augeben.
ldi ZH,high(vidmem<<1)
ldi ZL,low(vidmem<<1)
loop: lpm
out r0,portb
adiw Z,1
rjmp loop

JanB
15.01.2005, 21:53
Hallo,
ich hab mir mal die Mühe gemacht, und die Streifen
in Pebisofts Streifenbild gezählt. Ich komme auf 36.
das entspricht umgerechnet mit den 52us knapp 700kHz.
Der AVR ist also schon bei dieser simplen Schleife in
Assembler etwa dreimal so schnell wie Bascom. (2MHz zu 700KHz)
Oder lässt sich das in Basic noch optimieren ?
Weil da immer zweimal portd.x=y steht ?

Schöne Grüße... Jan

pebisoft
16.01.2005, 08:36
der portd5 ist für die syncro und der portd6 für hell oder dunkel, je nachdem wie hoch die spanning ist, (z.b. 1v weiss, 0,5v grau und 0v schwarz).
mfg pebisoft

RCO
16.01.2005, 13:29
Also wenn ich ehrlich bin, würde mir schon die Ausgbe von etwas Schrift reichen. Außerdem würden mir auch 3 "Farben" (Schwarz, Weiß, Grau) reichen.
Wenn wir jetzt mal einen Buchstaben wie auf einem LCD nehmen, dann würden wir pro Buchstabe auf 5 Pixel in der Horizontalen kommen. 15 Zeichen würden mir pro Zeile locker reichen. Hinzu kommen pro Buchstabe ein "Leerpixel" um die Buchstaben zu trennen, also insgesamt 6 x 15 = 90 Pixel. Allerdings habe ich noch nicht ganz verstanden, wie man es überhaupt hinkriegt etwas "sinnvolles" wie Text darzustellen.

MFG Moritz

18.01.2005, 14:30
Hi,
das is ja ein dolles tema!
Und zu diesem dollen Thema hab ich auch ne dolle Frage!
Ich will mir ne GameboyCamera holen in meinen Rob bauen und in meinem Rob dieses Videosystem von Mahpong einbauen um die gespeicherten Bilder Videos am TV anzusehen. Deshalb währen 8 oder 16 Graustufen nicht nötig, aber wünschenswert! Speichern will ich auf eine MMC!
Für schnelle Antwort wäre ich dankbar! 8)

Andree-HB
18.01.2005, 14:43
Antwort ? Auf welche Frage denn ?

...mach das doch einfach !

19.01.2005, 17:36
Antwort auf die dolle frage wie man 8 oder 16 Farben bzw.Graustufen darstellt! :)

Andree-HB
19.01.2005, 18:12
...mehr Ports benutzen, damit kann man dann per D/A-Wandlung feinere Abstufungen programmieren - mit zwei Ports kann man halt nur 2h2 Abstufungen hinbekommen.

Mit 3 Ports bekommst Du dann 2h3=8 Stufen hin, mit 4 schon 16


Hier übrigens ein toller Link, bezüglich einfacher D/A-Wandlung :
http://www.avr-asm-tutorial.net/avr_de/avr_dac.html

RCO
20.01.2005, 12:57
Also es gibt ja noch nen schönen anderen Thread, der sich mit der Ausgabe von Zeichen mit Hilfe der CC1 beschäftigt. UNd die haben auch über folgendes von ELV gesporchen:


OSD :
Basisgerät, Komplettbausatz
Artikel-Nr.: 68-464-33
49,95 €
OSD-Modul, Komplettbausatz
Artikel-Nr.: 68-464-47
29,95 €

Damit kann man Daten seriell senden und dann mit Hilfe dieses Dinges ausgeben. Leider ist ein hochgeheimer ELV-Chip verbaut, so dass man da auch nicht sehr viel schlauer draus wird. Aber immhin schafft das ganze 11 Zeilen à 28 Zeichen (oder umgekehrt).

MFG Moritz

20.01.2005, 13:52
Danke! Ich werde es versuchen!(Sobald ich den Roboter gebaut hab)

pebisoft
20.01.2005, 20:50
hallo, vielleicht hat einer eine lösung mit dem ne555, das man den eine pulsaufgabe geben könnte und mit dem avr nur noch die sichtbaren daten draufsetzen könnte (0v, 0,3v, 0,66v odr 1v).
mfg pebisoft

Andree-HB
27.01.2005, 06:28
Habe eben einen weiteren interessanten Link zum Thema gefunden :
http://www.whizkidzit.com/ozemail/video_s_w.htm

RCO
27.01.2005, 08:08
Ziemlich geil, hat das schon einer getestet?
Steht leider nirgendwo, wie er angeschlossen werden muss!

MFG Moritz

sebastian.heyn
27.01.2005, 08:24
Hi, warum so kompliziert? Es gibt doch tolle OSD chips, die können meist NTSC un PAL. (z.B: STV5730)

JanB
27.01.2005, 08:35
Hi, warum so kompliziert?
einfach weil es Spaß macht sowas mal selbst zu machen,
und zu sehen ob das geht mit dem AVR, ob man es hinkriegt usw...
Und nebenbei lernt man immer noch was dabei.

Gruß Jan

RCO
27.01.2005, 08:49
Es gibt doch tolle OSD chips, die können meist NTSC un PAL. (z.B: STV5730)

Würde mich auch interessieren, hast du dazu ein par mehr inforamtionen, denn aus der Kurzbeschreibung serielles Interface STV5730 (http://www.malo-web.de/c-control/video_d/STV5730.pdf) wede ich nicht ganz schlau.

Buuuh, ist ja SMD! DAbleibe ich lieber beim AVR.

MFg Moritz

pebisoft
27.01.2005, 11:47
hallo, wird genauso anschlossen wie beim atmegas90s8515. habe es an den den atmega90s8535 getestet.
mfg pebisoft

RCO
27.01.2005, 11:54
Aber das Programm arbeitet soch nur mit Schwarz und Weiß?
Du meinst doch so, oder?

http://jkdesign.de/avrproject/schematic.jpg

Also jetzt mla ohne Joystik und Sound.

MFg Moritz

pebisoft
27.01.2005, 12:49
hallo, diese schaltung arbeite mit 3 graustufen, jeder widerstand stellt eine graustufe dar, 0,3v , 0,66v und 1v. das bild hat in der anzeige 3 graustufen. du kannst auch nur 1 widerstand nehmen bis zu 1 volt, dann hst du die farbe weiss.
mfg pebisoft

RCO
27.01.2005, 13:01
Aber du meintest doch, dass du das Programm von Andree-HB getestet hast, oder?

Das hier:
http://www.whizkidzit.com/ozemail/video_s_w.htm

Hast du dafür diese Widerstände benutzt?
http://jkdesign.de/avrproject/schematic.jpg
Also so aufgebaut? (natürlich meine ich nur den Ausgang)
Gibts Bilder?

MFg Moritz

albundy
27.01.2005, 13:18
Die Ausgänge sind im asm File beschrieben:

; IO Definitions...
; Port C used for video output stuff. Only B/W no gray.
; Bit 7 - Video
; Port D used for sync output stuff.
; Bit 6 - Video
;
; This is the video output circuit...
;
; 560
; ---bit 7 port C------/\/\/\------+
; 1200 |
; ---bit 6 port D------/\/\/\------+------video out
; 100 |
; ---GND---------------/\/\/\------+

pebisoft
27.01.2005, 13:56
hallo, du kannst widerstände benutzen , so wie du möchtest, die spannung darf nur nicht über 1 volt kommen, jeder darunter liegende wert ergibt einen anderen grauton. die drei widerstände oben werden je nach gewünschten grauton angesteuert.
mfg pebisoft

pebisoft
27.01.2005, 14:30
hallo, habe ein bild reingestellt im album,persönliche galerie, pebisoft.
ich hatte mich verlesen, ist kein 8535 sondern ein 8515, darum ist das bild nicht 100% synchronisiert. die buchstaben sind lesbar und der counter oben rechts zählt aber.
mfg pebisoft

sebastian.heyn
27.01.2005, 14:35
Das ist defenitiv geil, weil wenn das Terminal auch läuft kann man das ja als einfaches Standalone- "OSD" benutzen

Andree-HB
27.01.2005, 15:00
...und weil vor Kurzem noch Weihnachten war und ich mir doch daher sicherlich immer noch etwas wünschen kann, möchte ich gerne eine Routine in Bascom für meinen Atmega32 vom RN-Control haben...

Wer spielt den dicken Mann in rot freiwillig ? O:)

pebisoft
27.01.2005, 15:03
hallo, habe im robeternetz.de als preis ein rp5-fahrgestell gewonnen.
siehe "album, persönliche galerie,pebisoft".

da bis jetzt noch keine lösung für den "atmega16 mit internen 8mhz" gefunden wurde,
möchte ich dir "janb" dieses rp5fahrgestell schenken, wenn du es fertig bringst,
das programm "http://www.whizkidzit.com/ozemail/video_s_w.htm, term-avr" auf
den "atmega16 mit 8 mhz" in bascom umzusetzen, natürlich mit
einpaar codeschnippsel in asm, was ja in bascom kein problem ist.
der letzte tag ist der 15.02.2005, dann sehen wir weiter.

mfg pebisoft

RCO
27.01.2005, 15:57
ich hatte mich verlesen, ist kein 8535 sondern ein 8515, darum ist das bild nicht 100% synchronisiert.

Hast du schonmal das Terminalprog ausprobiert?
Warum meinst du, dass das unklare Bild mit dem Controller zusammenhängt? ICh hätte eher erwartet, dass es garnicht klappt!
Hast du das Hexfile mit Ponyprog rübergezogen?

MFG Moritz

pebisoft
27.01.2005, 16:02
hallo, das asm ist für den 8535 geschrieben worden, nicht für den 8515.
das hex-file habe ich mit bascom geladen. bascom besitze ich als vollversion. die synchronisierung ist eine time-frage, wenn die nicht stimmt,verschieben sich entsprechend die zeilen.
mfg pebisoft

pebisoft
27.01.2005, 16:17
hallo, der avr kann das theoretisch, praktisch hat er auch befehle mit 2 taktraten.
mfg pebisoft

pebisoft
27.01.2005, 17:49
ich verstehe nicht, warum die ausländer in ihrem forum immer programme vorstellen, die für den 8515,8535 geschrieben sind.
der avr16/32 ist doch nicht wesentlich teurer und dafür wesentlich attraktiver.
mfg pebisoft

deftone
27.01.2005, 18:03
vielleicht weil die Seite schon über drei Jahre alt ist?

MfG deftone

edit: bezogen auf http://www.whizkidzit.com/ozemail/video_s_w.htm

JanB
27.01.2005, 18:38
Hallo pebisoft, (lieber würde ich dich mit deinem Vornamen anreden)

...möchte ich dir "janb" dieses rp5fahrgestell schenken, wenn du es fertig bringst, ...Das ist wirklich ein schönes Angebot von dir. Danke !
Damit willst du mich sicher herausfordern.
Nicht nötig, das Thema interessiert mich auch so.

Das von dir angesprochene Programm liegt nur als Hex-Code vor,
das in Assembler zurückzuübersetzen und zu verstehen,
das tue ich mir nicht an.
Da kann man das besser selbst neu entwickeln.
Aber in Assembler, mit BASCOM würde ich das garnicht erst versuchen.
Assembler ist prädestiniert gerade für solche zeitkritischen Anwendungen,
wo auch noch die volle Leistungfähigkeit des Prozessors benötigt wird.

Mal sehen, vielleicht geb ich mich mal dran,
aber versprechen kann ich nix.
Mein Haupthobby ist das Elektro-Modellhelicopterfliegen.
Das Elektronik-Basteln kommt erst an zweiter Stelle.

Gruß Jan

pebisoft
27.01.2005, 22:14
hallo, kannst du mir einmal einpaar hinweise geben für das elektro-modellhelicopterfliegen. ich kann mir vorstellen, das dies durchaus eine interessante materie ist, weil es nicht einfach ist mit elektrischer energie (akkus) ein solches objekt zum fliegen zu bringen und das noch in einer akzeptablen langen zeit.
mfg pebisoft

JanB
28.01.2005, 11:26
Hallo,
kannst du mir einmal einpaar hinweise geben für das elektro-modellhelicopterfliegen.Guck doch mal hier rein: www.rclineforum.de

Modell-Helifliegen macht wirklich jede Menge Spaß, im Sommer draussen,
aber auch jetzt im Winter mit den kleinen PIccolo-Helis in der Sporthalle rumzudüsen.
Und es ist eine sehr interessante Technik, wenn man sich näher damit beschäftigt.

Der elektrische Antrieb und die Flugleistungen und -Zeiten sind kein Problem mehr.
Man benutzt heute überwiegend bürstenlose Motoren und schafft mit Lipoly-Akkus
locker Flugzeiten von 20 min und mehr. Mit NiCd-Akkus liegt man bei ca. 10 min.
Und dann Akku wechseln und weiter... :-)
Und Basteln kann man auch schön. Mein kleiner Heli z.B. wird von einem
umgebauten Motor aus einem CDROM-Laufwerk angetrieben. Geht super.

Bischen OT - Sorry

Gruß Jan

pebisoft
29.01.2005, 12:14
hallo, läuft auch mit atmega16 und 32 und 8mhz intern.
habe die datei mahpong.asm neu compiliert mit avr-studio 4..
in der asm-datei habe ich die include "at90s8515.inc" herausgenommen und durch die
include "m16def.inc" ersetzt. dann mit dem avrstudio compiliert.
man kann auch damit in avrstudio das projekt genau verfolgen (simulieren).
dann habe ich die neue hex-datei in den atmega16 reinkopiert. das ergebnis sieht man
im bild "album, persönliche galerie, pebisoft".
man kann auch den "avrasm32.exe" alleine aufrufen mit "avrasm32 -fI beispiel.asm",
dann wird auch eine ladbare hex-datei erstellt. bis bald.
mfg pebisoft

pebisoft
29.01.2005, 13:29
hallo, habe noch einma die video2.asm verbessert. habe auch include "m16def.inc" reingenommen und 2 fehlermeldungen vom avrstudio bereinigt und compiliert mit avr-studio für den avr16.
das bild ist wieder in album,persönliche galerie, pebisoft. ich habe an den zahlen für sync ein bisschen probiert. das bild ist jetzt klarer.
mfg pebisoft

RCO
29.01.2005, 14:23
das bild ist jetzt klarer.

Untertreib mal nicht, das Bild ist gestochen scharf!
Meinst du, du kriegst das auch mit dem Terminal hin?

MFG Moritz

pebisoft
29.01.2005, 15:24
hallo, im terminal habe ich nur eine fehlermeldung, "UBRR" kennt er nicht.
ich weis jetzt nicht ist das eine selbstgestrickte variable oder ist das ein befehl vom at90s8535. vielleicht kann hier einmal einer nachforschen
hier ist der befehl:
SetupUart:
ldi Temp1,BAUDRATE
out UBRR,Temp1
ldi Temp1,$18 ; TX/RX 8 bits, no irq.
out UCR,Temp1
ret

mfg pebisoft

JanB
29.01.2005, 15:34
Hallo,
"UBRR" kennt er nicht.
Damit dürfte das USART-Baudrate-Register gemeint sein.
Bei den neueren AVRs sind das die Register UBRRL und UBRRH,
für Das Low- und das High-Byte.

Gruß Jan

pebisoft
29.01.2005, 18:18
hallo, ich habe es geschafft, hier
den ersten text zu schreiben "PEBI-SOFT".
das bild ist im album, persönliche galerie, pebisoft
mfg pebisoft

sebastian.heyn
29.01.2005, 18:20
mit dem terminal programm oder als standalone routine?

pebisoft
29.01.2005, 19:10
hallo, als standalone routine, um erstmal herauszufinden, wie sich die buchstaben erzeugen lassen. das terminal spricht noch nicht an.
mfg pebisoft

pebisoft
30.01.2005, 08:26
Hallo, eigentlich ist das für asm-programmierer eine kleinigkeit dieses umzusetzen. bei mahpong z.b sind die zuletzt aufgeführten zahlenreihen die bytes für den bildschirm. diese werden aus dem s-ram des avr dauernd ausgelesen. der s-ram-bereich ist sozusagen der bildschirm. das s-ram ist in linien und reihen aufgeteilt. wenn eine reihe z.b. 20 bytes hat, ist die 2. reihe das 21. byte und das 41. byte die 3. reihe. jedes klötzchen von mahpong was dargestellt wird dauert immer eine bestimmte zeit, ob es aus oder an ist. beide programme "mahpong.asm" und "video2.asm" laufen im avr-studio (100%)und lassen sich bei änderungen
wieder compilieren. so habe ich meinen namen in video2.asm reingeschrieben.
mfg pebisoft

albundy
30.01.2005, 15:41
Ich habe hier (http://ralcocer.netfirms.com/) eine etwas andere Version von "video2.asm" gefunden. ( Ravideo2.asm )
Ich habe es getestet und es funktioniert ebenfalls einwandfrei.
( Zeilenfrequenz muß von NTSC auf PAL angepasst werden )
Darin wird der Vertical Sync Impuls mit einem Timer0 Int realisiert. Dadurch ist das ganze etwas übersichtlicher.
Allerdings wird man auch diesen Code nur in ASM Programme einbauen können, da der Timer0 Int alle 0,25µs aufgerufen wird.
Auch wenn man den Interrupt Abstand auf 1µs hochsetzt ( im Programm wird mit µs gezählt ) bleibt eigendlich nur Zeit um das Videobild zu erzeugen.

RCO
30.01.2005, 16:20
Hast du es schon mit einem anderen Controller getestet?
Wieviel Zeilen/Zeichen werden erzeugt?

MFG Moritz

albundy
30.01.2005, 17:03
>Hast du es schon mit einem anderen Controller getestet?

Ja, mit MEGA8 aber auch mit 4 MHz.

>Wieviel Zeilen/Zeichen werden erzeugt?

Bei der Orginalversion NTSC werden 262 Zeilen erzeugt und bei PAL sind es 312 Zeilen.
Das Zeichenformat kann man selber festlegen.
Es wird ein Video RAM Array mit 64*32 Pixel erstellt, welches dann komplett auf den Bildschirm übertragen wird.
Das könnte man sicher auch noch größer machen, habe ich aber nicht getestet, weil für mich eine Standalone Version eh nicht in Frage kommt.
Ich habe einen fertigen Videoquellenumschalter mit AVR, den ich eventuell mit OSD Ausgabe erweitern wollte.

pebisoft
30.01.2005, 17:58
hallo, albundy, wo hast du das program runtergezogen, oder stell es hier einmal rein zum ausprobieren.
mfg pebisoft

pebisoft
30.01.2005, 18:19
hallo, ich finde die datei ravideo2.asm nicht im internet.
mfg pebisoft

albundy
30.01.2005, 18:59
Auf meinem Post, unter "hier" liegt dieser Link:
http://ralcocer.netfirms.com/
*** AVR Video Projects download ***

JanB
03.02.2005, 18:28
Hallo,
Jetzt habe ich endlich etwas Zeit gefunden,
mich auch mal hinzusetzen und was zu diesem
Thema zu programmieren.
Herausgekommen ist meine erste Version eines
AVR-Video-Terminals. Mit 20 Zeilen a' 24 Zeichen.
Ich habe es für den ATMega-8 geschrieben.
Es wird der interne 8-MHz RC-Oszillator verwendet.
Das Programm ist komplett interruptgesteuert,
eine Integration in Bascom ist prinzipiell möglich.
Dafür muss ich aber noch dran arbeiten, und viel
Rechenzeit wird für Bascom nicht übrigbleiben.

Es würde mich interessieren ob das Programm auch
auf auf ATMega16 / 32 und auf anderen Fernsehern läuft.

Anschliessen wie gewohnt, drei Widerstände.
100 Ohm an GND
560 Ohm an PortB0 für Video
1200 Ohm an PortD6 für Sync
Alle drei Widerstände verbinden ergibt das BAS-Signal.

Wie kann ich die Hex-Datei hier hochladen, damit ihr
es ausprobieren könnt ?


Gruß Jan

Florian
03.02.2005, 18:41
Hi Jan!
Erstmal vielen Dank für Deine Mühe!
In welcher Sprache hast Du das Ganze programmiert?
Sieht ja echt gut aus! :o)


Wie kann ich die Hex-Datei hier hochladen, damit ihr
es ausprobieren könnt ?
So wie das Bild auch! ;o)

Trabukh
03.02.2005, 18:44
*staun*
Das sieht ja suuuper aus! Aber eine Frage hätte ich da schon: Kann dein Programm nur S/W-Bilder erzeugen oder auch welche mit Graustufen?

Gruß, Trabukh

JanB
03.02.2005, 18:51
Hallo,

@Florian:
So wie das Bild auch! ;o)
Nee, dann kommt immer: Hex ist hier nicht erlaubt.
Ich werde es mal mit umbennen probieren.

Das Programm ist in Assembler geschrieben.

@Trabukh: Nur S/W. Graustufen könnte ich auch machen,
aber dann würde die Auflösung erheblich geringer werden.

Gruß Jan

Florian
03.02.2005, 19:04
Hi Jan!

Nee, dann kommt immer: Hex ist hier nicht erlaubt.
Ich werde es mal mit umbennen probieren.
Probier's mal mit .txt! ;o)
Komisches Verbot! *lol*

Das Programm ist in Assembler geschrieben.
Kann ich das mal sehn? *interessiert sei*

JanB
03.02.2005, 19:07
Hallo,
ich habs gezippt.
Jetzt klappt es mit dem hochladen.

Wer probiert es mal aus ?

Gruß Jan

sebastian.heyn
03.02.2005, 19:25
Hi sieht echt toll aus. Hut ab! ist die krümmung auf dem bild von deinem fernseher, oder wird das bild so erzeugt? integration in bascom wär der mega hammer...

JanB
03.02.2005, 20:22
ist die krümmung auf dem bild von deinem fernseher, oder wird das bild so erzeugt?Beides.
Einerseites ist es die Wölbung der Bildröhre und der alte Fernseher,
aber andererseit sehen manche Zeilen etwa geneigt aus, und es
laeuft eine leichte Schwebung durch das Bild.
Evtl. ist die Syncronisation noch nicht 100%ig.
Aber es kann auch ein "Brummen" durch den fliegenden
Aufbau und die offene Verkabelung sein.
Deshalb will ich ja auch wissen wie es bei Anderen ist.
Ist er interne RC-Oscillator genau genug ?
Oder habe ich es jetzt speziell auf meinen Chip
und mein Fernsehgerät abgestimmt ?

Aber das ist ja erst der erste Versuch.
Ich arbeite noch dran.
Als nächstes muss noch die USART-Routine eingebaut werden,
damit das Ding auch praktisch nutzbar ist.
Jetzt wird ja nur ein statischer Inhalt dargestellt.

Gruß Jan

JanB
03.02.2005, 21:46
Hallo,
ich hab noch eine Uhr mit eingebaut,
damit sich auf dem Bildschirm auch mal was tut.

Hat das Programm schon jemand ausprobiert ?

Gruß Jan

pebisoft
04.02.2005, 07:55
hallo, janb, ich glaube du hast es bald geschafft. das robby-fahrgestell liegt schon bereit. in bascom kann die zeilenzahl geringer sein. eine gute leistung.
mfg pebisoft

JanB
04.02.2005, 09:09
Hallo,
hab das Timing noch mal überprüft.
Da war noch Luft drin.
Deshalb jetzt: Noch vier weitere Zeilen.
Also jetzt 24 Zeilen mit je 24 Zeichen.
Das macht insgesamt 576 dargestellte Zeichen.
Allein der ASCIII-Zeichen-Buffer frisst das halbe RAM. Mist!

Die Bildqualität insgesamt hab ich auch noch verbessert.


Die aktuelle Hex-Datei hänge ich hier dran.

Wer es ausprobieren will:
ATMega-8 interner 8MHz RC-Clock
ein Widerstand mit 100 Ohm an GND (Pin8)
ein Widerstand mit 560 Ohm an Portb0 (Pin14)
ein Widerstand mit 1200 Ohm an PortD6 (Pin12)
Die drei freien Anschlüsse der Widerstände miteinander
verbinden ergibt das BAS-Video-Signal.
Dieses Signal und GND an den BAS-Eingang des Fernsehers.

Gruß Jan

Lektor
04.02.2005, 11:19
also ich habe vor kurzem erst diesen Beitrag entdeckt und dieser hat mich jetzt richtig heiss gemacht. Ich wäre nie auf die Idee gekommen, dass sowas überhaupt möglich ist. Jetzt habe ich für mich auch schon zahlreiche Anwendungen gefunden.
Ein großes Lob an all die, die das alles ausgearbeitet haben, speziell an JanB.
Macht so weiter.

pebisoft
04.02.2005, 12:40
hallo, auf dem mega16/32 läuft es nicht.
beim avr8535 mit internen 8mhz scrollt das bild schnell durch.
ist aber schon ein sehr schöner erfolg, es sind buchstaben zu erkennen.
mfg pebisoft

RCO
04.02.2005, 15:30
Hi Jan,
erstmal gratulation zu diesem Wunderwerk!
Ist das ganze denn auch ein richtiges terminal? Also kann man jetzt per RS232 Zeichen senden? Existiert ein Befehlscode, wie nächste Zeile...?

MFG Moritz

pebisoft
04.02.2005, 20:59
hallo, habe einmal ein bild reingestellt "album,persönliche galerie, pebisoft". mit dem avr8535 8mhz, 40 pin.
hast du den avr8 mit 28pin genommen?.
mfg pebisoft

JanB
04.02.2005, 21:36
Hallo,
@pebisoft:
hallo, auf dem mega16/32 läuft es nicht.
beim avr8535 mit internen 8mhz scrollt das bild schnell durch.
Danke, das du es mal getestet hast ! :-)

Schade, ich hatte erwartet, das der Kern der AtMega 8/16/32 gleich
ist, und das es darauf auch läuft.
Was passiert denn ? Macht der überhaupt was ?
Hast du ein Oszilloskop, um dir die Signale an den Ports anzusehen ?
Leider hab ich selber nur den Atmega8 und 8515 und kleinere AVRs hier.
Evtl. müßte ich einfach mal die Include-Datei des Atmega16 einbinden,
vieleicht geht es dann.
Das es mit dem 8535 halbwegs klappt, ist schon mal gut.
Vieleicht probier ich es am Wochendene mal mit dem 8515 aus.

Das Programm ist wirklich hart am Limit,
viel mehr holt man (ich jedenfalls) aus dem AVR nicht heraus.
Da können schon kleine Abweichungen in der Prozessorstruktur
zwischen verschiedenen AVRs dafür sorgen,
das es nicht mehr richtig läuft.


hast du den avr8 mit 28pin genommen?.
Ja , der Atmega8-16PI im 28Pin DIP Gehäuse.
Der gleiche, der auch im ASURO steckt.

Gruß Jan

JanB
04.02.2005, 21:58
Hallo,
@Moritz
kann man jetzt per RS232 Zeichen senden?
Nee, noch nicht. Das werde ich als nächstes einbauen.
Erst mal war mir die Videosignalerzeugung wichtig.
Das war für mich die interessante Frage, was da möglich ist.
Es ist aber schon alles enthalten, was man für ein Terminal braucht.
Auch ein wenig Prozessorzeit ist noch übrig.
Nur die USART-Routinen fehlen noch.
Aber die ASCII-Zeichen vom USART abholen, und in den
Zeichenpuffer schreiben, das kriege ich auch noch hin.


Existiert ein Befehlscode, wie nächste Zeile...?
Kommt dann auch, in einfacher Form. 0a 0d CR LF CLS...

Aber dann will ich unbedingt bald probieren, ob ich das
irgendwie in Bascom reingefrickelt kriege.
Da brauche ich evtl. Unterstützung,
denn ich kenn mich mit Bascom nicht so gut aus.

Gruß Jan

pebisoft
05.02.2005, 11:25
hallo, die leistung die du reingebracht hast ist schon sehr , sehr gut ,sogar optimal. du könntest sogar wieder ein bisschen zurückdrehen und die zeiten für andere abläufe nehmen, es wird hier meines erachtens keine einbußen geben. ich habe den 8535 mit 8mhz laufen, das bild habe ich reingestellt. der avr16/32 zeigt keine reaktionen hinsichtlich des bildes.
wenn du keine avr16 hast, würde ich dir gerne einen schicken. gib mir nur deine adresse. ich glaube in diesem bereich sollte man den avr16 oder avr32 nehmen. weil er doch "viel speicher hat für den bildschirmram" und ein begehrter chip in der hobbybranche geworden ist.
versuch lieber eine lösung für den avr16/32 und dann in bascom.
wenns mit den avr16/32 und internen 8mhz mit assembler klappt , hast du schon die aufgabe gelöst. das andere wird sich dann ergeben.
mfg pebisoft

pebisoft
05.02.2005, 12:27
hallo, zur bestätigung, der avr8 läuft zu 100% wie du es vorgegeben hast, ohne vorbehalte. ich hatte noch einen avr8 liegen vom asuro und habe diesen zum testen genommen.
mfg pebisoft

JanB
05.02.2005, 13:52
Hallo,
zur bestätigung, der avr8 läuft zu 100%
Danke für die Info ! Ist ja Klasse.
Danke auch für die Unterstützung, hast du ein Bild ?

Ich war schon etwas besorgt,
das es nur bei mir funktioniert, weil ich solange
an dem Video-Timing rumfummeln musste.
Und mein Fernseher ist halt schon etwas älter.

Das Umsetzen auf einen Mega32 dürfte keine große Sache sein.
Ich hoffe nächste Woche einen Mega32 zu bekommen,
dann probier ich es mit dem aus.

Ich hab zum Spaß mal die Include-Datei des Mega16 genommen,
und es läuft trotzdem - auf dem Mega-8.
Dann müßte es doch auch umgekehrt auf dem 16er laufen - komisch.
Wenn du es nochmal probieren möchtest,
ich hänge die Datei für den Mega16 mal hier dran.
Wie gesagt, portb0 und portd6, ich weiss nicht
welche Pins das auf dem Mega16 sind.

Gruß Jan

JanB
05.02.2005, 13:57
Hallo,
ich hatte noch einen avr8 liegen vom asuro und habe diesen zum testen genommen.
Seid vorsichtig mit dem ATMega-8 vom ASURO.
Wenn man den Bootloader zerschiesst, der da drauf ist,
funktioniert die Dateiübertragung per Infrarot zum ASURO nichtmehr.
Der Bootloader ist aber normalerweise per Fuse gegen Überschreiben geschützt.
Also nicht an den Bootloader-Fuses rumspielen.

Nur als Warnung, wer weiss was er tut,
kann natürlich machen was er will.

Gruß Jan

JanB
05.02.2005, 19:08
Hallo,
ich kanns nicht lassen.
Jetzt 28 Zeichen pro Zeile.
28 Zeichen pro 24 Zeilen macht 672 Zeichen insgesamt.
Bei der 5x7 Zeichenmatrix und Zwischenraum ergibt das
eine effektive Auflösung von 168 Linien horizontal.
Damit habe ich meine Voraussage, dass mit dem 8MHz AVR
max. 160 Linien möglich sind, erreicht.
Mehr schaffe ich nicht. RAM wird knapp.
Was wäre mit dem ATMEGA32 mit 16Mhz und 2k Ram möglich ??

An der Signalqualität hab ich auch noch etwas gedreht.
Nur die leicht gekippten Zeilen kriege ich nicht weg.
Egal, jetzt kommt der USART dran...

Testbild und Hex-Datei zum Ausprobieren
hänge ich wieder dran.

Gruß Jan

pebisoft
05.02.2005, 20:28
hallo, ich programmiere den asuro nur noch mit dem isp, das infrarot ist mir zu nervig.
mfg pebisoft

pebisoft
05.02.2005, 20:47
hallo, junge,du bist spitze.
dein neueste programm 24zeilen- 28 zeichen ist super.
es läuft auf dem mega8 mit 8mhz intern. sowas ruhiges im bild
habe ich noch nicht gesehen, wie ein standbild und klar.
habe ein bild reingestellt "album, persönliche galerie, pebisoft".
das programm auf dem mega16/32 rührt sich nicht. es wird kein signal dargestellt.
wenn du jetzt die rs232schnittstelle reinbringen willst, mach sie ferig.
denk dran, der mega16/32 ist das flagschiff mit sram-speicher und mit dem man
am besten experimentieren kann, vergess ihn nicht.
eine tolle leistung "hochachtung".
gib mir deine adresse, dann schicke ich dir umsonst einen avr16.
"pebisoft@web.de"
mfg pebisoft (peter bierbach)

JanB
05.02.2005, 21:06
Hallo Peter,

Vielen Dank für dein Lob. :-)

Dein Bild ist nicht so gut zu erkennen,
aber du scheinst die schrägen Zeilen nicht zu haben, oder ?
Liegt vielleicht an meinem Fernseher.

Keine Bange, der Mega32 kommt auch noch,
das zusätzliche RAM ist auch nötig, wenn das mit
Bascom überhaupt Sinnn machen soll.


sowas ruhiges im bild
habe ich noch nicht gesehen, wie ein standbild und klar.
Ja, ich habe diese "Uhr" rausgenommen,
die hatte ich etwas lässig und schnell da reingehauen,
die brachte Unruhe in das ganze Bild.
Ich hoffe, das dieser Effekt bei den Usart-Routinen nicht zum Problem wird.
Er entsteht, weil die Interrupt-Reaktionszeit nicht immer gleich ist,
je nachdem was für einen Befehl der Prozessor gerade berbeitet.
Da muss ich mir evtl. noch einen Trick ausdenken, um das zu umgehen.

Ich lerne eine Menge über den AVR, im Moment.
Und ich liebe Assembler.

Gruß Jan

pebisoft
05.02.2005, 21:10
hallo, die uhr selber war nicht die "unruhe", sondern einige buchstabenlinien gingen über das buchstabelbytefeld hinaus (zacken), wahrscheinlich kamen die durch die routinen für die uhr zustande.
wie gesagt, es ist jetzt erste sahne.
ich habe keine schrägen buchstaben/zeilen auf dem schirm, alles ruhig und gerade. die verzerrung liegt an deinem fernseher.
mfg pebisoft

JanB
05.02.2005, 21:15
Hallo,
Dein Angebot nehem ich gerne an.
Ich sende dir meine Adresse per PN.
Aber ich kann nur mit DIL Gehäuse etwas anfangen.
Mein STK-500 hat keine PQFP-Sockel oder wie die heissen.

Noch ne Frage:
Hast du auch die schrägen Zeilen, wie sie auf meinem Bild zu sehen sind ?

Gruß Jan

JanB
07.02.2005, 10:00
Hallo,
jetzt habe ich endlich die RS232-Routinen eingebaut.
Nun könnt ihr den ATmega8 mit diesem Programm
tatsächlich als serielles ASCII-Videoterminal benutzen.
Einfach das serielle Signal mit TTL-Pegel an den
RxD-Anschlus des Atmega8 (Pin2) anschliessen.

9600 Baud, 8 Datenbits, 1 Stopbit, no Parity also 9600 8N1

Die Steurzeichen CR (0dh) und LF (0ah) funktionieren.
FF (0ch) für Cls geht noch nicht. Ebenfalls ist noch kein
Scrollen implementiert, deshalb fängt der Cursor oben
wieder an wenn er unten am Ende angekommen ist.
(Wrap around)

Die interne Buffergröße ist begrenzt, deshalb können einzelne
Zeichen "verschluckt" werden, wenn man zu viel zu schnell sendet.
Es gibt auch noch ein merkwürdiges Zucken im Bild
wenn Zeichen eintreffen, die Ursache suche ich noch.
Das Programm ist noch in Entwicklung.

Bild und Hex-Datei für Atmega8 hänge ich hier dran.

Wer es ausprobieren will:
ATMega-8 interner 8MHz RC-Clock
ein Widerstand mit 100 Ohm an GND (Pin8)
ein Widerstand mit 560 Ohm an Portb0 (Pin14)
ein Widerstand mit 1200 Ohm an PortD6 (Pin12)
Die drei freien Anschlüsse der Widerstände miteinander
verbinden ergibt das BAS-Video-Signal.
Dieses Signal und GND an den BAS-Eingang des Fernsehers.
Das RS232-TTL Signal an RxD (Pin2) und GND (Pin8)

Wenn ihr es ausprobiert, würde mich interessieren,
ob es funktioniert, und ob es gefällt.

Gruß Jan

pebisoft
07.02.2005, 14:05
hallo, hast du ja sehr gut hingekriegt. es läuft...läuft...
vielleicht könntest du den avr8l nur für die video-darstellung
nehmen und einen anderen avr für die restlichen arbeiten.
gerade in der robotertechnik bietet sich das an.
ich habe gerade daten von meinem robby mit dem easy-radio
zum avr geschickt, der diese jetzt auf dem bildschirm
vom arbeitsplatz mit deinem programm anzeigt. gute sache.
ich schicke datenpakete, die auch gleich die formatierung vornehmen
(leerzeichen). ich glaube , der avr8l sollte das arbeitstier für die darstellung
werden, reicht vollkommen aus und man hat nur ein programmierproblem ,
auch bei einer fehlersuche.
noch einmal: toll.
jetzt lass uns nicht solange auf den souce-code warten.
mfg pebisoft

JanB
07.02.2005, 15:30
Hallo,
das ist aber noch nicht fertig, da sind noch einige
Bugs drin. Den Fehler, das es abstürzte, wenn man
ein LF in der letzten Zeile absetzte, habe ich korrigiert.
Aber das nervige Zeilenwackeln beim Schreiben
konnte ich noch nicht beseitigen.

Hier noch mal eine Version ohne das "Testbild" am Anfang.
Dieses startet also mit einem leeren Bilschirm,
wie es sich für ein richtiges Terminal auch gehört.

Gruß Jan

Trabukh
07.02.2005, 16:22
Das Zeilenwackeln kommt daher, weil die UART mehrere Takte des AVRs benötigt. Daher werden die Timerprozeduren nicht immer exakt aufgerufen... Aber ansosten wirklich top Arbeit!!! :-)

Gruß, Trabukh

pebisoft
07.02.2005, 17:21
hallo, auch dein neues update läuft auf dem avr8l 100%.
vielleicht müssen wir jetzt doch unter anderem assembler dazulernen, damit man so etwas machen kann. ich werde es versuchen. dein sourcode dazu wäre interessant. vielleicht schafft man es gemeinsam, weil ja doch hier und da der andere sich mit dem timerinterrupt total auskennt, was ja nicht so einfach ist. meine meinung: es kann nicht schöner werden, du hast die torte und das sahnehäubchen im video-avr geschaffen.
mfg pebisoft

Thorsten
07.02.2005, 18:03
Das Zeilenwackeln kommt daher, weil die UART mehrere Takte des AVRs benötigt. Daher werden die Timerprozeduren nicht immer exakt aufgerufen... Aber ansosten wirklich top Arbeit!!!

Könnte man die UART Routinen nicht als interrupt anstatt
signal deklarieren , dann müsste der timer interrupt auch aufgerufen werden,
wenn grad die UART Routine läuft.
Weiß allerdings nicht ob das schon so ist :-)

JanB
07.02.2005, 19:45
Hallo Peter,
dein sourcode dazu wäre interessant
Klar du bekommst den.
Aber warte erst, bis ich das fertig habe.
Das Sammelsurium an Bugs und unausgegorenen Ideen,
an dem ich zur Zeit rumbastele, möchte ich dir so nicht geben.
Wenn ich soweit fertig bin, werde ich darin aufräumen, optmieren
und kommentieren und dann werde ich die Source hier reinstellen.
So wie der Code jetzt aussieht, bringt er niemandem was,
der nicht meine Gedanken im Kopf hat.

Ich habe heute eine irrwitzige Idee verfolgt:
Ich habe versuchsweise die Videodaten aus dem SPI-Port herausgeshiftet.
Damit könnte ich die Auflösung horizontal und vertikal nochmal wesentlich steigern.
Klappt auch, geht schön schnell, und entlastet den Prozessor um einiges.
Leider ist dieses blöde SPI-Port lo-aktiv, so dass ich entweder einen
externen Inverter, Transistor oder so brauche,
oder ich muss das Signal quasi verkehrtherum erzeugen,
und die 5V-Leitung als Masse nehmen.
Beides gefällt mir nicht. Externe Bauteile ausser den Widerständen
kommen auf keinen Fall in Frage - da könnte man ja gleich einen
Grafikchip nehmen. Und so verkehrtherum anschliessen ist auch nicht schön.
Also hab ich es wieder gelassen. Ist sowieso nicht genug RAM da.
Aber eine geile Idee war es schon.

Schöne Grüße und Vielen Dank für dein großes Lob.
Mach nur weiter so! Das geht mir runter wie Öl. :-)

Bis dann...Jan

Trabukh
07.02.2005, 20:06
Was hast du denn gegen ein, zwei externe Bauteile? Selbst gemacht bleibt es trotzdem noch... :-)

Gruß, Trabukh

RCO
07.02.2005, 20:43
Was hast du denn gegen ein, zwei externe Bauteile? Selbst gemacht bleibt es trotzdem noch...

Also ich kann es zwar nicht genau einschätzen, wie groß der Vorteil wäre, aber wenn er doch Spürbar ist, warum nicht, einen Inverter könnte man ja mit einem Transistor bauen. Aber ich will ja auch nicht zuviel von dir verlangen.

Erstmal muss ich sagen, dass ich es super finde, dass du das gemacht hast! Da suche ich solange schon nach ner vernünftigen Lösung für sowas, und du schreibst die "einfach" mal, besser als alles andere, was ich im WWW finde dahin ;-)
Dickes Lob!

MFG Moritz

JanB
07.02.2005, 20:51
Hallo,
...ein, zwei externe Bauteile? Selbst gemacht bleibt es trotzdem noch...Klar, anfürsich hast du Recht !
aber ich hab es mir nun mal so in den Kopf gesetzt.
Nur der kleine Atmega8 für unter 3 EUR. Und die Widerstände.
Und sonst nix, kein Quarz, kein Garnix.
Sonst macht es mir keinen Spaß, da gibt es dann bessere Lösungen.
Ich will zeigen, was der nackte AVR-Chip kann.

Übrigens - ich habe Ruhe reingebacht,
das blöde Zeilenwackeln ist endlich weg.
War viel Aufwand, aber jetzt steht das Bild schön ruhig.
Als nächstes kommt scrollen.

Gruß Jan

JanB
07.02.2005, 20:57
Hallo Moritz,
Da suche ich solange schon nach ner vernünftigen Lösung für sowasHast du es ausprobiert ?
Pebisoft ist der einzige, der es immer austestet,
und mir mitteilt, ob es klappt.
Bei ihm geht es.

Ich werde die Baudrate einstellbar machen, für langsamere
Übertragungsstrecken. Infrarot wie beim ASURO und so.

Gruß Jan

pebisoft
07.02.2005, 22:32
hallo jan, könnte man nicht einen 2. avr, der eh für die anderen aufgaben gebraucht wird am robby verwenden, der den1. avr (video) sozusagen anschupps, damit wieder etwas ausgegebn werden kann.
ich finde einen 2. avr nicht so abwägig, es ist eine heausforderung. der 1. avr soll dann nur die reinen video-aufgaben übernehmen bis zum letzten bit. ich bin gespannt auf das neue update mit dem scrollen und der einstellbaren baurate. ich staune nur, was du so aus einem kleinen avr rausholen tust. es lebe der assembler. hoffentlich kapiere ich das auch einmal.
mfg pebisoft

JanB
07.02.2005, 23:12
Hallo Peter,
könnte man nicht einen 2. avr, der eh für die anderen aufgaben gebraucht wird am robby verwenden,Ja, gute Idee.
Ich glaube auch, das ist das Beste.
Einfach die serielle Schnittstelle des AVRs mit dem Video-AVR verbinden,
und dann kann man einfach und problemlos
auch von Bascom aus was an den Video-AVR schicken.
Was über den USART senden ist ja in Bascom kein Problem.
Und so ein ATmega8 ist nicht gross, und kostet auch nur wenig.
Wesenlich besser, als wenn die Software noch mit dem Bascom
zusammen in einem AVR läuft.
Diese Videosoftware würde sowieso alles andere total ausbremsen,
weil sie mindestens 80-90% der Prozessorzeit selbst braucht.
Ganz zu schweigen von den anderen Einschränkungen, die man
in Bascom hätte.

Neue Version morgen.
Sieht schon super aus, mit den Scrollen.

Gute Nacht... Jan

RCO
08.02.2005, 00:00
Ja, ich werde es morgen mal austesten, habe die Mega8s erst letzte Woche bekommen. Wäre es nicht sinnvoller, die Baudrate zu erhöhen, damit die übertragung schneller geht? Könntest du mir eine mit 19200 schicken? das würde einiges erleichtern, oder ist die Umstellung sehr aufwendig? Wenn du mal etwas Zeit hast, würde mich interessieren, wie das Programm überhaupt aufgebaut ist.

MFG Moritz

JanB
08.02.2005, 09:11
Hi Moritz,
gerne baue ich für dich die 19200 mit ein.
Ist kein Problem, ich wollte die Baudrate ja sowieso
einstellbar machen.

Allerdings entsteht bei hohen Baudraten das Problem, das man
schneller senden kann, als das Programm es verarbeiten kann.
Da kann es dann passieren, dass einzelne Zeichen verschluckt werden.
Dürfte aber bei normaler sinnvoller Verwendung nicht vorkommen.
Aber man kann es provozieren, wenn man will.

Der Eingangsbuffer ist 64 Zeichen groß, als Ringspeicher organisiert.
Wenn der überläuft, geht halt was verloren.

Das Programm kann z.Z. 15000 Zeichen/sek von der RSR232 lesen
und in den Eingansbuffer schieben.
Es kann aber nur 1500 Zeichen/sek vom Eingangspuffer in den
Zeichenspeicher übernehmen, wenn es darstellbare Zeichen sind.
1500 reicht für 9600Baud dicke aus. Da sind max. 900 Z/s zu erwarten.
Bei 19200Baud reicht das nicht, wenn man wirklich permanent
mit "Volldampf" sendet. Wenn es portionsweise kommt,
mit Pausen dazwischen, dann gibts kein Problem.
Und so ist es in der Praxis ja auch - normalerweise.

Wenn Steuerzeichen kommen, oder wenn Scrollen nötig wird,
dann bremst das erheblich. Besonders das Scrollen.
Da muss der gesamte Zeichenspeicher verschoben werden.
Gescrollt wird mit 1200 Zeilen/sek.
Es braucht also ca. 20ms um die 24 Bildzeilen um eins hochzuschieben
und unten eine neue Leerzeile einzublenden.
In diesen 20ms werden keine Zeichen aus dem Eingangsbuffer verarbeitet.
Es werden aber weiter Zeichen von der RS232 empfangen und in dem
Eingangsbuffer abgelegt.
In den 20ms sind bei 19200Baud ca. 40 Zeichen zu erwarten.
Es kommt also gerade so hin mit dem 64-Byte Eingangspuffer.
Bei 19200Baud kommen ca. 2000 Zeichen/s an, und alle 28 Zeichen
muss gescrollt werden, weil die untere Zeile voll ist.

Du musst bedenken, dass ja "nebenbei" noch ständig
die Videosignalerzeugung syncron weiterlaufen muss.
Und da ist in der aktiven Zeit des Videosignales
alle 250 Nanosekunden ein neues Bit für einen Bildpunkt fällig.
Das TV wartet nicht.

Huh... Das ist wieder viel geworden.
Ich glaube nicht, dass du das so genau wissen wolltest,
aber ich muss diese Überlegung sowieso machen...
Da hab ich es dabei gleich mal hingeschrieben.

Also du bekommst die 19200, aber keine Garantie, :-)
dass das Terminal immer mitkommt.

Gruß Jan

PicNick
08.02.2005, 09:23
Hi JanB, verwende doch die recht einfache XON/XOFF Methode wegen des Bufferüberlaufes. Wenn du es nicht eh kennst:
Ist der empfangsbuffer mehr als nn Prozent voll, wird ein XOFF (0x13) gesendet.
Unterschreitet der Buffer nun wieder (nn-x) Prozent, schickt man ein XON(0x11)
Die meisten Terminal-Emus spielen da freiwillig mit, ist aber auch leicht einzubauen.
(Geht natürlich nicht im Transparent-Mode)
mfg robert

EDIT: Will dir nicht dreinreden, du kannst aber auch IMMER, wenn du ein neues Bild refreshed und im Streß bist. XOFF schicken und erst, wenn du aus dem sichtbaren Bereich kommst und ein bißchen Zeit hast, ein XOFF, egal, wieviel grad im Buffer ist.

pebisoft
08.02.2005, 11:31
hallo, jan, ich schlage vor , das du erst deine ideen reinbringst und dann kann man ja weitersehen, wie man andere praktien noch verwirklichen kann. lass dich nicht zuweit mit neuen ideen ablenken. es ist jetzt ein sehr gutes lauffähiges programm zustande gekommen, was profihaft ist.
ich freue mich auf den neuen test.
mfg pebisoft

JanB
08.02.2005, 11:37
Hallo,
Will dir nicht dreinreden...
Nee, kein Problem, Tips kann ich immer gut brauchen.
Ich will ja auch nicht immer das Rad neu erfinden.
Also red ruhig rein.

Aber in diesem Fall:
XON/XOFF bringt nix, weil ich garnix sende.
Das Terminal ist voll passiv, es wird nur empfangen.
TxD ist nicht mal angeschlossen.

Wenn z.B jemand will einfach was von einem anderen AVR
an mein Video-Terminal senden will,
dann soll er das einfach per USART abschicken, und fertig.

Nach deinem Vorschlag müsste der sich ja dann
mit XON/XOFF rumschlagen.
Er müsste empfangsbereit sein, am USART lauschen,
Übertragung stoppen, wiederaufnehmen usw....

Nein, die Anwendung des Videoterminals soll so
einfach wie möglich sein.
Einfach einen Mega8, drei Widerstände, ein Fernseher
und dann nur noch hinsenden und vergessen.

Trotzdem schön, das du auch mit überlegst,
und Lösungsvorschläge machst.

Gruß Jan

PicNick
08.02.2005, 11:57
Nach deinem Vorschlag müsste der sich ja dann mit XON/XOFF rumschlagen.
Er müsste empfangsbereit sein, am USART lauschen,
Übertragung stoppen, wiederaufnehmen usw....

Der Video-Fuzzy als Empfänger müßte das ja nicht. Das Problem hat der Sender. Deswegen braucht der ja einen Keyboardbuffer und einen Piepser, wenn der voll wird (wie am PC) :-b
(Ich hatte im Laufe meiner sagenhaften Karriere schon ca 57 mal irgend ein schwindliges Terminal zu emulieren ](*,) , Epson, Ansi und sonst was, daher meine Weisheiten)
Ich bin ja dafür, die Programme untereinander zu tauschen, denn was der andere besser machen sollte, weiß komischerweise jeder ganz genau.

keep codin' mfg robert O:)

08.02.2005, 12:08
Hi JanB,

ich hätte zum Scrollen auch noch ne Idee,
anstatt jedes Byte einzeln zu verschieben, könnte man auch einfach einen Anfangszeiger o.ä. definieren, der angibt, welche Zeile die Erste dargestellte Zeile sein soll. Damit brauch man nur noch den Zeiger erhöhen und die letzte Zeile(die vorher die Erste war) clearen.

Hoffe es hilft (wenn du nicht schon die selbe Idee hattest :-) )

Gruß Olli

RCO
08.02.2005, 16:20
Hi Jan,

ich habe heute mal Zeit gefunden deinen Code zu testen. Hat etwas gedauert, da ich mich erst mit dem Mega 8 und den Fusebits beschäftigen musste, aber der Aubau ist ja "gewollt" einfach. Da das hier mit PC hier und Fernseher dort (und da Fernseher ohne Videoeingang über Videorecorder)... etwas problematisch ist, habe ich deine Version:

avrvid2a also V2a getestet

Hier das Ergebniss:

http://img161.exs.cx/img161/4872/v2a5me.jpg

Das Bild ist sehr scharf und klar! Allerdings werden die ersten 1 bis 2 Zeichen jeder Zeile vom Ferseher nicht dargestellt (verschwinden hinter der Abdeckung (ist vielleicht auf dem Foto nicht zu erkennen)). Wenn ich auf den AV-Kanal wechsle geht 5 mal ein Zucken durchs Bild, vielleicht versucht der Fernseher eine Synchro o.ä. zu machen während diesem Zucken erkennt man auch Teile der ersten Zeichen, sie sind also wirklich da! Bis auf diesen Fehler, der vermutlich mit dem Fernseher (Loewe) zusammenhängt, ein sehr feines Ergebniss.

MFG Moritz

[Wundert euch nicht, dass sich mein Beitrag verändert und ein zweiter verschwunden ist/sind, ich habe es nochmal überprüft und es hat sich als falsch herausgestellt.]

pebisoft
08.02.2005, 18:01
hallo jan, ich kann dir bestätigen das bei mir auf dem fernseher alle zeilen zu erkennen sind und alle deine updates so laufen, wie du es beschrieben hast.
mfg pebisoft

JanB
08.02.2005, 18:13
Hallo Moritz,
schön das es bei dir auch funktioniert. :-)

Dass nicht alle Zeichen horizontal zu sehen sind,
liegt an deinem Fernsehgerät.
Aber das muss kein Fehler des TV-Gerätes sein.
Es sind nicht alle TVs gleich eingestellt.
Bei ein Film merkt man das ja auch nicht so.

Aber ich gehe wirklich sehr nah an die Ränder dran.
Wenn noch mehr Leute das Problem haben, könnte ich
wieder auf 24 Zeichen pro Zeile zurückgehen, dann ist
mehr Reserve für unterschiedliche Geräte.

Bei Pebisoft und bei mir passt es noch drauf.
Bei dir gehts nicht.
Mal sehen, ob sich noch jemand meldet.

Gruß Jan

RCO
08.02.2005, 18:25
Ist ja kein Problem, wenn man es weiß, schreibe ich halt immer Leerzeichen in das erste Zeichen.
Es war ja schon auf der Website beschrieben, dass ein großer Teil der Zeichen nicht zu sehen sind.

MFG Moritz

JanB
08.02.2005, 18:49
Hallo,
hier ist nun die vierte Ausgabe des Videoprogrammes.
Ich habe jetzt alles eingebaut, was ich mir so vorgestellt hatte.

Wir haben jetzt:
- 28 x 24 Zeichen
- 7-Bit ASCII-Zeichensatz
- PAL BAS-Vdeosignal
- RS-232 Eingang mit einstellbarer Baudrate
- Scrolling
- Steuerfunktionen CR, LF, und FF
- blinkender Cursor
- kein Zeilenwackeln mehr beim Schreiben

Die Einstellung der Baudrate erfolgt über die Pins 4, 5 und 6 des ATmega.
Das ist PortD2, D3 und D4.
Je nachdem wie diese PIns beim Einschalten auf 0 oder 1 geschaltet sind,
wird die Baudrate gewählt. (Jumper)
Wenn man die Pins einfach offen lässt, so wie bisher,
dann bedeutet das 9600Baud.
Die eingestellte Baudrate wird nach dem Einschalten
auf dem Bildschirm angezeigt. Da braucht man nicht Rätseln.

Hier ist eine Tabelle für die Einstellung der Baudrate:


Baudrateneinstellung Videoterminal ATMEGA-8

PIN 6 5 4 Baudrate
------------------------------
1 1 1 9600
1 1 0 19200
1 0 1 4800
1 0 0 2400
0 1 1 1200
0 1 0 300
0 0 1 110
0 0 0 9600


Folgende Steuerzeichen können derzeit genutzt werden:

CR (0dh) Ctrl-M = Rücklauf zum Anfang der Zeile
LF (0ah) Ctrl-J = Eine Zeile tiefer springen
FF (0ch) Ctrl-L = Bildschirm löschen

Für alle, die nicht den ganze Thread lesen wollen,
hier nochmal kurz wie der Atmega an das TV-Gerät
angeschlossen wird.

Das Programm läuft auf ATMEGA8 mit dem internen 8-MHz RC-Clock
Die Fuses muss man entsprechend einstellen und flashen.
Man braucht drei Widerstände.
100 Ohm an GND (Pin 8 )
560 Ohm an PortB0 (Pin 14)
1200 Ohm an PortD6 (Pin 12)
Die drei freien Enden der Widerstände verbinden
ergibt das Videosignal. Diese Signal und GND an den
Video-Eingang des TVs anschliessen.

Das RS-232 Signal mit TTL Pegel wird am RxD-Eingang ( Pin2 ) angeschlossen.
Und dann einfach was senden, und es erscheint auf dem Bildschirm.

Wäre schön, wenn ihr das Programm testet und nutzt.
Da sind sicher noch einige Fehler in dem Programm drin.
Wenn euch welche auffallen, teilt es mir mit.

Ich freue mich auf euer Echo...

Gruß Jan

RCO
08.02.2005, 21:14
http://img145.exs.cx/img145/407/laeuft3da.jpg

Ich glaube ich habe noch nie zu jemandem in diesem Forum Gott gesagt, aber Jan: [-o< "Du bist mein Gott" [-o<

Es läuft tatsächlich einwandfrei. Übrigens eine gute Idee, die Baudrate über Jumper einzustellen. Entschuldige den deiner Person nicht würdigen Text, aber wie gesagt, Fernseher oben PC unten... Addlink macht den Rest.

MFG Moritz

pebisoft
09.02.2005, 09:00
hallo, jan auch dieses update funktioniert wunderbar.
ich staune nur, welche sachen du da immer noch rein bringst.
das bild ist komplett zu sehen. der text ist klar.
die control-tasten funktionieren. die baudraten funktionieren.
es kann bei den anderen sein, das der bildschirmrand des fernseher
nachjustiert werden muss, wenn die bildröhren warm werden verändern
sich die werte der einstellungen.
du bist ein vollwertiger asm-fachman. gibt uns etwas von deinem wissen ab.
ich kann kaum dein sourcode erwarten. ich finde es toll das du so konsequent
auf dem avr8l programmierst und das ziel nicht aus den augen verlierst.
ich kenne selten solche menschen.
vielleicht sollte ich das auch so machen und mit dem "kleinen avr" eine optimale sache
rausholen. aber du siehst, ohne vorreiter steigt man nicht gerne auf dieses pferd.
mfg pebisoft

Andree-HB
09.02.2005, 09:34
...auch ich finde es klasse, was für ein tolles Ergebnis aus diesem Thread herausgekommen ist. Die Thematik wird zukünftig sicherlich sehr stark aufgegriffen und Jan`s Arbeit ist dabei mehr als nur eine grandiose Grundlage.

Klasse !!!

P.S. Vielleicht gibt es ja demnächst ein Roboternetzstandard-Videoboard... :-)

pebisoft
09.02.2005, 10:29
hallo jan, habe jetzt den avr8l auf dem steckbrett meines küchenbrettroboters gebaut.
mit dem videosender auf dem robby kann ich jetzt die daten aller sensoren die der avr16
zum avr8l auf dem robby schickt zur wintv-karte auf meinem pc-senden und alles beobachten.
die steuerung mit dem avr16 zum avr8l(videochip) geht klasse.
mfg pebisoft

JanB
09.02.2005, 16:26
Hallo Peter, Moritz, Andree,
Danke euch für die schöne Anerkennung.
Das tut gut und spornt an.

Ich werde noch eine Funktion einbauen,
nämlich eine Cursorpositionierung, damit man den
Cursor gezielt auf eine beliebige Bildschirmstelle
setzen kann, um genau dort was hinzuschreiben.
Ich denke das ist nützlich, und es ist nicht viel
Programmieraufwand.

Damit soll es dann aber auch gut sein, denn jetzt
möchte ich auch wieder mit was anderem beschäftigen.
Den Sourcecode überarbeite ich noch, und stelle
ihn dann hier im Forum ein, weil sich doch einige
stark dafür interessieren. Hi Peter :-)


@Moriz:
Vielleicht gibt es ja demnächst ein Roboternetzstandard-Videoboard...
Ja, wenn jemand ein Board entwerfen will, ich stelle
mein Programm für den Atmega8 zur Verfügung.
An Hardware ist da ja dannn nicht mehr viel.


@Peter:
...auch so machen und mit dem "kleinen avr" eine optimale sache rausholen...
Dr ATMEGA-8 ist doch kein kleiner AVR. Klein ist der Tiny15,
oder der Tiny26, alles 8-Pin DIPs.
Und da kann man auch erstaunlich viel mit machen.


zur wintv-karte auf meinem pc-senden
Gute Idee! Das ist mir noch nicht eingefallen,
da kann man das Bild ja auch auf dem PC einblenden !
Ich hab doch auch noch so eine TV-Karte im Schrank rumliegen.
Muß ich gleich mal probieren...

Grüß euch alle....Jan

albundy
09.02.2005, 17:03
Hallo Jan,
Das TV Terminal mit Mega8 läuft bei mir auch tadelos.
Eine tolle Leistung !
Allerdings suche ich für mich persönlich immer noch nach einer Möglichkeit, um in einem Videoquellenumschalter Bascom Projekt nachträglich statisch einen Text über TV auszugeben.
Eine Steuerung über 1 µs Timer scheidet aus, da dann der Rest nicht mehr zum Zuge kommt.
Also habe ich probiert, von Bascom aus ein Assembler Unterprogramm dafür zu schreiben.
In der Routine will ich alle 625 PAL Zeilen nacheinander erzeugen lassen und einen Text einfügen, sodass diese Routine genau 64µs * 625 Zeile, also 40 ms lang ist. Diese soll dann als eigenständige Schleife einige Male durchlaufen werden.
Leider komme ich mit den Syncronimpulsen nicht so richtig klar.
Kannst du mir sagen, wie lang der Vertial Syncronimpuls am Anfang eines Halbbildes sein muss ?
Und wie sieht es mit der letzten Zeile vom 1. Halbbild aus ? ( Die ist ja nur 32 µs lang, oder ? )
Ich habe irgendwo gelesen, dass der Elektronenstrahl der Bildröhre auch noch einige Zeit benötigt, um von unten rechts wieder nach oben links zu kommen.
Es wäre schön, wenn du mir für das Timing ein paar Tips geben könntest.

JanB
09.02.2005, 17:26
Hallo,
Guck mal hier rein:

http://cbl.fh-hagenberg.at/~gfunk/medientechnik2/material/Videomaterial/Video-analog.pdf

Da hab ich mich nach gerichtet.
Du musst nur drauf achten, das du die Werte
für Europa / PAL / CCIR nimmst.

Auf die Komplikation mit dem zweiten versetzten Halbbild
kannst du auch verzichten. Erzeuge einfach immer das erste
Halbbild mit 312 vollen Zeilen.
Dann mach das TV eben keine Interlace.
Egal, klappt auch, wenn dir die 312 Zeilen reichen.

Gruß Jan

albundy
09.02.2005, 18:26
Hallo Jan,
Klar, 312 Zeilen reichen auch.
Danke für den Link. Das Analogbild ist ja recht gut beschrieben.
Horizontal ist ja auch einfach, 5µs Sync und 59µs Bildinhalt. Aber bei Vertical Sync Pulsbreite pro Halbbild steht 2,5 Zeilen.
Das wären 160µs V-Sync oder irre ich mich ? Im sichtbaren Bereich liegen etwa 282 Zeilen pro Halbbild.
Wäre diese Reihenfolge dann richtig ?
- V-Sync 160µs + 32µs Schwarz -> die ersten 3 Zeilen
- H Sync 5µs + 59µs Schwarz -> je weitere 27 Zeilen (nicht sichtbar)
- H Sync 5µs + 59µs Bildinhalt -> je weitere 282 Zeilen

JanB
09.02.2005, 20:07
Hallo,
deine Zeiten stimmen so nicht ganz.
Guck die die PDF noch mal genau an.

Die Bildzeile besteht aus:
- H-Syncinpuls 4,7us
- vordere Schwarzschulter 1,5us
- Bildinhalt 52us
- hintere Schwarzschulter 5,8us

Das Halbbild besteht aus:
- V-Syncimpuls Länge 2,5 Zeilen mit pos.H-Sync Impulsen im Halbzeilenabstand
- vordere Schwarzs. 2,5 Zeilen mit neg. Ausgleichsimpulsen von 2,3 us im Halbzeilenabstand
- 282 normale Bildzeilen
- hinter Schwarzs. 2,5 Zeilen mit neg. Ausgleichsimpulsen von 2,3 us im Halbzeilenabstand.


Gruß Jan

albundy
09.02.2005, 20:39
Danke Jan,
Die Nachkommastellen kann man sicher halbwegs vernachlässigen, oder ?
Obwohl, ich komme mit 4 MHz Quarz bei meiner Anwendung auf 0,25µs pro Takt. Damit müsste man eigendlich zurechtkommen.
Auf alle Fälle muss ich mich wohl noch ein bischen einlesen, um das Sync Timing richtig zu verstehen.

JanB
09.02.2005, 20:52
Die Nachkommastellen kann man sicher halbwegs vernachlässigen, oder ?Klar, so genau kommt es nicht drauf an.
Aber: kleine Abweichungen in den Zeilen addieren
sich evtl. mit 312 mal über das ganze Bild.
Das kann dann vertikal Sync durcheinanderbringen.

Gruß Jan

JanB
09.02.2005, 21:26
Hallo zusammen,
so, die Cursorsteuerung ist jetzt auch drin.
Damit kann man den Cursor direkt
auf eine beliebige Bilschirmstelle setzen.

Funktioniert folgendermassen:

Um den Cursor in eine bestimme Spalte (X) zu setzen,
sendet man erst eine 14 (Ctrl-N) und direkt danach
eine Zahl zwischen 0 und 28.
Zum Beispiel: die Sequenz mit beiden Bytes 14,20
setzt den Cursor auf Spalte 20.
14,5 setzt auf Spalte 5
Wenn das zweite Byte >28 ist, wird es ignoriert
und die Sequenz wird abgebrochen.

Um den Cursor in eine bestimme Zeile (Y) zu setzen,
sendet man erst eine 15 (Ctrl-O) und direkt danach
eine Zahl zwischen 0 und 24.
Zum Beispiel: die Sequenz mit beiden Bytes 15,20
setzt den Cursor auf Zeile 20.
15,5 setzt auf Zeile 5
Wenn das zweite Byte >24 ist, wird es ignoriert,
und die Sequenz wird abgebrochen.

Ich hoffe, das ist einigermassen verständlich.
Die Sequenz besteht nur aus zwei Bytes !!
also nicht aus vier Ziffern, und das Komma wird auch nicht gesendet.
Eine 14 bedeutet "setze Cursor auf Spalte",
Eine 15 bedeutet "setze Cursor auf Zeile",
und das Byte danach ist die gewünschte Position.
Die Bytes sind hier als Dezimalzahlen angegeben.
15,20 wäre in hexadizemal 0F,14 - nur zur Klarstellung.

Klingt komplizierter als es ist.
Vieleicht probiert ihr es mal aus.

Damit ist das Programm jetzt auch fertig.
Mehr will ich nicht dran machen, ausser es tauchen noch Bugs auf.
Die würde ich natürlich noch versuchenzu korrigieren.

Bis dann... Jan

pebisoft
10.02.2005, 08:29
hallo jan, grüss dich.
sag mal, kann man auch die daten die zusammengeführt am fbas-ausgang rauskommen
zum fernseheingang auch wieder umwandeln in daten des avr.
ps: die datenüberprüfung mittels videoübertragung vom robby ist top.
auch dein 4. update funz 100%, sogar auf dem robby.
mfg pebisoft

RCO
10.02.2005, 08:53
Schau mal hier rein:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=13364

Oder meinst du nur, dass du die Daten die du fon deinem KBR (Küchenbrettroboter) zum Fernseher sendest wieder entschlüsselst? Da gibt es zum glück nur schwarz und weiß.

MFG Moritz

pebisoft
10.02.2005, 08:55
hallo,
der videosender auf mein robby sendet auch audio-signale.
es gib eine einfache audio-amplifier-schaltung die man
z.b. an einem pin des avr anschliessen kann. die schaltung besteht
aus 2 widerständen und 2 kondensatoren, sie dient zum schutz des audio-einganges.
wie könnte man jetzt daten zum pin des avr schicken und zum audio-sender (buchse-rot),
damit man die daten am audio-empfänger/video-empfänger auf meinem tisch wieder
am avr rausliesst und verarbeiten kann.
ich will nicht über die soundkarte gehen, sondern direkt am empfänger anzapfen.
oder geht es über den soundkarten-ausgang besser/einfacher.
mfg pebisoft

pebisoft
10.02.2005, 08:58
hallo rco, so wie du es schilderst, will ich die daten am fbas-ausgang des empfängers wieder entschlüsseln am avr in bit und bytes.
mfg pebisoft

RCO
10.02.2005, 09:04
(Bewegt sich jetzt alles ein wenig im Offtopic, vielleicht solltest du da mla einen Thread zu aufmachen.)


der videosender auf mein robby sendet auch audio-signale.

Mal ganz naiv, könnte man da nicht einfach ne RS232 Schnittstelle dranhängen? Wie ist die Spannung bei Audiosignalen? Vielleicht reichen ja ein par widerstände ma Eingang und ein Transistor am Ausgang.


@ Jan:
Große Klasse, ich denke jetzt hast du echt alles reingekappt, was man brauchen könnte. Super!


MFG Moritz

pebisoft
10.02.2005, 10:35
hallo, die spannungen dürfen 1v nicht überschreiten beim audio.
mfg pebisoft

JanB
10.02.2005, 16:59
Hallo Peter,
kann man auch die daten die zusammengeführt am fbas-ausgang rauskommen
zum fernseheingang auch wieder umwandeln in daten des avr.
Wenn ich dich richtig verstehe, willst du
das Videosignal wieder in die Bytes zurückumwandeln.
Das kann man schon, im Prinzip, aber es wäre
ein hoher technischer Aufwand.
Vorraussetzung wäre erst mal ein schneller AD-Wandler
und viel Rechenkapaztät. Das würde ich mir nicht antun.
Aber sag mal, warum willst du das denn machen ?

Gruß Jan

albundy
10.02.2005, 17:41
Hallo Jan,
Ich habe meine Routine in Assembler soweit fertig.
Beim Testen im AVR Studio, ist mir dann aufgefallen, dass ein Halbbild nicht genau 20ms dauert.
Kann es ja eigendlich auch gar nicht, bei einem V Sync von 2,5 Zeilen.
Was passiert mit der restlichen 1/2 Zeile ?
Nur noch nebenbei, beim H Sync hast du dich glaub ich geirrt.
Muss es nicht heissen :
- vordere Schwarzschulter
- H Sync
- hintere Schwarzschulter
- Bildinhalt
Das habe ich von hier:http://www.2cool4u.ch/tv_signal_measurement/tv_signale_grundlagen/tv_signale_grundlagen.htm
Das ist auch eine sehr informative Seite.

JanB
10.02.2005, 18:24
Hallo,

Was passiert mit der restlichen 1/2 Zeile ?
OK, ein Halbbild dauert genau 312,5 Zeilen.
Sonst käme man mit zwei Halbbildern ja nicht auf 625.
Aber die letzte halbe Zeile kannst du einfach weglassen,
wenn du sowieso nicht mit Interlace arbeiten willst.


beim H Sync hast du dich glaub ich geirrt.
Nee hab ich nicht. Das ist ein bischen Ansichtssache.
Aber per Definition in der TV-Technik fängt die Zeile
mit der fallenden Flanke des Hsync an.
Deshalb kommt die hintere Schwarzschulter nach dem Bildinhalt.
Ganz am Ende, bevor die neue Zeile mit dem Hsync beginnt.
Aber ich verstehe was du meinst, optisch sieht es so aus.


Gruß Jan

albundy
10.02.2005, 19:11
Nee hab ich nicht. Das ist ein bischen Ansichtssache.
Aber per Definition in der TV-Technik fängt die Zeile
mit der fallenden Flanke des Hsync an.

Ich stelle auch keinesfalls deine Kompetenz in Frage.
Das liest sich auf der Seite irgendwie anders und ich wollte mich nur vergewissern.
Zu Horizontalsynchronisation wird nach jeder Zeile ein Rechtecksignal von 4,7m s Dauer in der Horizontalaustastlücke positioniert. Dieser H-Synchonimpuls liegt eingebettet in die sogenannte vordere beziehungsweise hintere Schwarzschulter, die 1,5m s und 5.7m s dauern

Ich werde es machen, wie du gesagt hast.
Danke nochmal !

JanB
10.02.2005, 19:36
Ich stelle auch keinesfalls deine Kompetenz in Frage.

Ach Quark, "Kompetenz", ich bin auch nur ein Bastler.

Aber man sollte versuchen eine gemeinsame Sprache zu finden.
und wenn die das in der Fernsehtechnik nun mal so definieren...
Aber ist eigentlich egal, Hauptsache die Kiste flimmert, oder ?

Gruß Jan

pebisoft
10.02.2005, 22:03
hallo jan, das mit den video umwandeln werde ich sein lassen. der aufwand ist zu gross. werde mich aber noch einmal an die audioübertragung machen, vielleicht kann man diese für den datentransfer günstig nutzen. noch einmal zu deinem video-avrchip:
das bild flimmert keineswegs, auch beim übertragen vom robby auf dem pc bin ich immer klar im bilde. kann mir alle daten anzeigen lassen, die der robby aufnehmen kann vom : sharpsensor, ultra-srf04, ultra-srf08, kompass-modul cmps03.
was macht der source-code. kann es kaum erwarten.
mfg pebisoft

JanB
11.02.2005, 06:31
Hi Peter,

was macht der source-code.Der kommt, kannst dich drauf verlassen.
Bin schon dabei, den zu überarbeiten, so das er halbwegs ordentlich ist.
So wie ich Zeit finde...
Ist ja nicht soviel, ca. 500 Zeilen.
Ich schätze am Wochenende bin ich durch.
Dann kommt er hier rein.
Ich geb dir dann gleich Bescheid.

Gruß Jan

PicNick
11.02.2005, 09:13
Hi, aus Gründen, die mir verschlossen sind, heißt die linke Schulter, nach dem Sync, "Back Porch" (die mit dem Burst) ~6 uS,
die andere "Front Porch" (~1.4 uS)
das is halt so

JanB
11.02.2005, 09:22
Hallo,
heißt die linke Schulter, nach dem Sync, "Back Porch"
Ja stimmt, hab extra nochmal nachgesehen.
Die heisst hintere, obwohl sie in der Reihenfolge des Ablaufes vor der
anderen kommt.
Naja, ist nicht so wichtig, aber dann ist es ja geklärt.
Die ist vordere die hintere, und die hintere kommt zuerst. :-)

Ist halt bezogen auf den HSync, und nicht auf den Bildinhalt.

Gruß Jan

JanB
11.02.2005, 20:43
Hallo Peter,
Ich habe jetzt die Source-Datei meines AVR-Video-Terminalprogrammes
im Bereich Download unter AVR Quellcode für dich abgelegt.
Und natürlich auch für alle anderen Interessierten.
Bei der Überarbeitung des Quellcodes sind mir noch einige Macken
aufgefallen, und ich konnte die Terminalgeschwindigkeit noch verbessern.
Deshalb gibt es auch eine neue Version des Programmes.
Die Letze, hoffe ich.

Schau dir den Quellcode mal an, und sag mir ob er dir gefällt.
Ich hab es wirklich ausführlich kommentiert, so das die Funktion
für jeden klar werden dürfte.

Ich hänge die ASM-Datei auch hier noch mal dran.

Gruß Jan

pebisoft
11.02.2005, 22:51
hallo, eine verständnisfrage. warum passen 8,3kbyte im 8kbyte-avr rein und ist immer noch nicht voll.
mfg pebisoft

Thorsten
12.02.2005, 02:00
Die *.hex Dateien beinhalten noch Fehlercodes u.ä.
Es kann sogar sein das noch ne 12kib Datei in nen
AtMega8 passt.
Kommt natürlich auf das HEX Format an.
Wenn du ne richtige *.hex (intel) Format Beschreibung brauchst
meld dich noch mal.

pebisoft
12.02.2005, 08:50
hallo,würde mich einmal interessieren, weil die füllanzeige in bascom nach dem laden der hex-datei noch nicht einmal die hälfte als füllung anzeigt.
es würde mich einmal interessieren wie man in bascom mit dem interrupt und einbindung von asm einfach 1 einfache weisse linie auf dem fernsehschirm in der mitte von rechts nach links zeichnet. nur eine.
mfg pebisoft

JanB
12.02.2005, 09:25
Die *.hex Dateien beinhalten noch Fehlercodes u.ä.
Genau.
Und was noch mehr ausmacht ist, das jedes Byte
in der Hex-Datei zwei Byte braucht, weil es ja
durch zwei ASCII-Zeichen beschrieben wird.
Also ist die Hex Datei immer mindestens doppelt so
groß, wie der Code, der drin steht.
Die Hex Datei für den Flash-Speicher eines ATmega-8
kann über 16KByte groß sein.

Das Video-Programm ist 3010 Bytes groß.
Ja, Assembler ist kompakt.

Gruß Jan

albundy
15.02.2005, 17:44
Hallo Jan,
Wo bekommt man einen 5*7 Bit ASCII Zeichensatz her ?
Den in deinem Programm hast du wohl selber gemacht, da du ja rechts schiebst sind leider alle Zeichen gespiegelt.
Ich muss aber links schieben und brauche einen ungespiegelten.

JanB
15.02.2005, 18:01
Hallo,
Dann bau ihn dir doch um.

Guck dir meinen an, und dreh die Bits, wie du sie brauchst.
Ich hab die Zeichen aus einem alten CMOS-IC-Datenbuch,
wo ein Character-Generator IC drin ist, mit Zeichensatz.
Da musste ich auch die Bits alle umfriemeln, und eintippen.

Eine Stunde Zeit, schnelle Finger am Editor, und reichlich Kaffee...
Oder du suchst im WEB, ob du was passendes findest.
Sag mir, ob du da weniger als eine Stunde gebraucht hast.

Oder nimm meinen und schieb auch rechts.
Oder schreib dir ein Progrämmchen, das meinen
textmässig einliest und andersrum wieder ausspuckt.

Gruß Jan

sebastian.heyn
16.02.2005, 11:39
Hallo, habe nur internal RC-1Mhz und internal OSC zur auswahl. nehm ich da internal OSC?

EDIT: Habe es selbst probiert: INTERNAL OSC

RCO
16.02.2005, 11:54
Hallo, habe nur internal RC-1Mhz und internal OSC zur auswahl. nehm ich da internal OSC?

Du hast nen Mega8?
Dann setz in doch intern auf 8 Mhz.

MFG Moritz

sebastian.heyn
16.02.2005, 12:57
Hatte im edit schon was dazu gesagt...

Wenn de die fuses mit BACOM einstellst kriegst du intern nur RC-OSC mit 1 mhz angezeigt oder intern OSC. der scheint es zu sein..... Jedenfalls geht das programm

pebisoft
16.02.2005, 16:50
hallo, bascom zeigt dir bei richtiger behandlung der einstellung auch die 8mhz an.
da hast du einen gravierenden fehler gemacht.
haben meinen auf 8mhz eingestellt und wird auch angezeigt.
mfg pebisoft

JanB
16.02.2005, 18:44
Hallo,
Ist jemand interssiert an dem Terminalprogramm
als Hex-Datei für ATMEGA32 mit 16MHz ?
(externer Quarz natürlich)

Dann mit 48 Zeichen pro Zeile.

Gruß Jan

sebastian.heyn
16.02.2005, 19:13
Eine höhere auflösung ist verdammt interessant. Die Zeichen sehen auf nem 7" TFT ganz schön unanschaulich aus. Aber das wird sich wohl im PAL modus nicht groß ändern lassen... Ist es sehr kompliziert das Timing auf NTSC anzupassen?

pebisoft
16.02.2005, 19:25
hallo, jan würde mich auch sehr interessieren es auf dem avr16/32 laufen zu sehen. ich glaube aber das die 48zeichen pro zeile nicht nötig sind.
der fernsehapparat (kein pc-monitor) macht glaube ich nicht die verbesserung auf dem bildschirm, wie du sie programmiert hast.
das bild ist jetzt eigentlich wunderbar klar und deutlich, auch ausreichend in der darstellungsvielfalt. wie gesagt, interessant ist es auf dem avr16/32 und vielleicht auch in verbindung mit bascom.
mfg pebisoft

JanB
17.02.2005, 18:14
Hallo,
hier das Videoterminal für ATMEGA-32 mit 16MHz.
Mit externem 16MHz Quarz.

Hat 48 x 24 Zeichen.
Anschlüsse wie gehabt.

Sync = portb0
Video = portd6
Rsr232 = RxD
Baudrate = PortD2-D4

Schreibt mal ob es klappt !

EDIT:
Uh..., die ports hab ich verwechselt angegeben. Sorry!
Richtig ist:
portb0 = Video
POrtD6 = Sync
Wie es vorher beim Atmega8 auch war.

Gruß Jan

pebisoft
17.02.2005, 22:26
hallo jan, es klappt nicht.
habe einen avr32 mit 16mhz extern angeschlossen.
es ist nur ein schmaler schwarzer streifen zu sehen der innen weisse linien hat (ca 20 zeilen) , der rest oben und unten ist blau, sozusagen null und scrollt langsam über den bildschirm. der avr16 mit 16mhz zeigt keien reaktion, nur einen blauen schirm.
ich habe eine wintv-karte. dein anderes programm funktioniert hervorragend. ich schlage vor, mach es auf einen avr16 , der ist am meisten verbreitet.
mfg pebisoft

JanB
18.02.2005, 07:11
Hallo Peter,
es läuft nicht
komisch, bei mir läuft es einwandfrei.

Ich hatte in meinem Posting die Ports verkehrt angegeben. :-(
aber das hast du bestimmt gemerkt.
Wennn nicht, probier halt noch mal.

Ich will auch nicht zuviel Arbeit reinstecken.
es war nur aus Interesse, und als Übung.
Weil ich zum ersten Mal einen Mega32 habe, hab ich das mal portiert,
und den größeren Speicher und die 16MHz genutzt,
um die Auflösung hochzuschrauben.

Mit dem Mega16 geht es nicht, der hat nicht genug SRAM.
Da könnte ich es nur genauso machen, wie mit dem Mega8.
Und das ist ja nicht besonders interessant.

Schöne Grüße...Jan

pebisoft
18.02.2005, 07:35
hallo jan, wie sind deine fuse-bits gesetzt bei der 16mhz einstellung?vielleicht habe ich das fusebit für die externen 16mhz nicht richtig gesetzt.
mfg pebisoft

mrmajo
18.02.2005, 09:59
Hallo,

ich muss sagen, SUPER arbeit =D>


Da jetzt ja auch auf dem Mega32 getestet werden kann, bin ich mal dabei. (Hab nämlich nur diesen AVR)

Noch eine kurze Frage zum Anschluss. Müssen jetzt noch irgendwo Widerstände hin ? Wenn ja, welche und wo ???


Freue mich schon zu testen.

Gruß Marco

Edit:
Ich war zu voreilig... Naja, wer lesen kann :D
hab die Lösung der Widerstände jetzt selbst gefunden
ein Widerstand mit 100 Ohm an GND
ein Widerstand mit 560 Ohm an Portb0
ein Widerstand mit 1200 Ohm an PortD6
Die drei freien Anschlüsse der Widerstände miteinander
verbinden ergibt das BAS-Video-Signal.
Dieses Signal und GND an den BAS-Eingang des Fernsehers.

Werd dann glihc mal bissl löten und dann berichten....

JanB
18.02.2005, 11:23
Hallo,
Werd dann glihc mal bissl löten und dann berichten....Ja, richtig, mach das.
Und vergiss nicht die Jumper, um die Baudrate einzustellen.
Auch weiter oben in diesem Thread beschrieben.
Wenn du nix machst, kriegst du 9600.

@pebisoft:
Ich hab auf externer Quarz / Ceramik Osc eingestellt,
mit 4us Startup-Zeit oder wie das heisst.
Nicht ext-RC-Osc einstellen, das geht nicht.

Gruß Jan

mrmajo
18.02.2005, 12:34
Was passiert, wenn man andere Widerstandswerte nimmt ???

Könnte man eigentlich auch die Schrift farbig bekommen ?


Nur mal so aus interesse ?

JanB
18.02.2005, 13:12
Nee, farbig nicht. Farbe ist entsetzlich kompliziert beim TV.
Aber grau statt weiss, das geht.
versuch mal den 560er durch einen größeren zu ersetzen.

Gruß Jan

RCO
18.02.2005, 13:16
Wal ne andere Frage, kann man die farben umkehren? Also Schwarz und Weiß. Ich vermute mal nicht, da das dann mit Sync etc. nicht mehr hinkommt.

MFG Moritz

JanB
18.02.2005, 13:18
Doch , könnte man umdrehen, im Programm.
Extern geht nicht ohne grösseren Aufwand.

Gruß Ja

pebisoft
18.02.2005, 16:29
hallo, jan habe das fusebit noch einmal eingestellt.
es funktioniert jetzt klasse.
der bildschirm hat jetzt die leistungsgrenze für eine klare sicht der buchstaben in der zeile erreicht. abe es geht.
mfg pebisoft

JanB
18.02.2005, 17:58
es funktioniert jetzt klasse.

Ja prima, dann ist ja alles klar.
Dank Dir für den Test.

Gruß Jan

mrmajo
19.02.2005, 11:39
Hi,

ich habe jetzt auch mal getestet.

Konnte nur das Bild an sich testen, nicht die Schnittstelle zum PC.
Aber das Bild klappt.

Echt super arbeit.

Gruß
Marco

RCO
19.02.2005, 13:59
Text-on-Screen Board (ToS)

JanBs (https://www.roboternetz.de/phpBB2/profile.php?mode=viewprofile&u=6666) geiles Programm war es mir doch wirklich wert ein Board dafür zu basteln:

http://img67.exs.cx/img67/3096/box5dh.th.jpg (http://img67.exs.cx/my.php?loc=img67&image=box5dh.jpg)

Features:

- Mega8 mit Video-Code
- AT90S2313
- Anschluss für Tastatur
- Infrarotempfänger
- Rs232 über Max232
- Addlink für Funkverbindung zum PC oder anderem uC
- Statusleds

http://img67.exs.cx/img67/5254/innen4ag.th.jpg (http://img67.exs.cx/my.php?loc=img67&image=innen4ag.jpg)

Ich habe versucht, was ich eigentlich immer versuche, nämlich ein möglichst universelles Board zu basteln. Und ich glaube, dass ist mir gelungen.

Die einzellnen Komponenten können intern miteinander verschaltet werden (via Rs232 TTL), so ist es möglich, die Tastatur zu benutzen um einen Text anzuzeigen und gleichzeitig das ungenutzte Addlinkmodul an den MAX zu schließen. Der AT90S2313 hat zusätzlich einen Anschluss mit Software UART.
Natürlich durfte auch die PC verbindung nicht fehlen. Die Stromversorgung läuft via USB:

http://img208.exs.cx/img208/1606/add7at.th.jpg (http://img208.exs.cx/my.php?loc=img208&image=add7at.jpg)

Wie man sieht habe ich sogar in der Mitte des Boards noch ein wenig Platz, was daran liegt, dass ich meistens anfange zu löten bevor ich einen richtigen Plan von allen Anschlüssen habe :-b .

Der IR-Empfänger soll später dazu dienen zwischen einzellnen Seiten zu blättern, oder auch Daten einzugeben, die dann per Funk zum PC oder uC gesandt werden und aktualisiert wieer ausgegeben werden. Früher oder später will ich neben dem IR-Empfänger noch einen Sender einbauen, der bei Bedarf (zum Beispiel einer aktualisierung der angezeigten Daten) den Fernseher auf den Videoeingang umschaltet. Außerdem soll das Stromkabel durch eine Klinkenbuchse ersetzt werden. Soweit mein kleines Projekt.

Danke nochmal an JanB (https://www.roboternetz.de/phpBB2/profile.php?mode=viewprofile&u=6666) und sein super Projekt (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=5880&postdays=0&postorder=asc&start=0).

MFG Moritz

pebisoft
19.02.2005, 15:10
hallo wo hast du den addlink her.
durch eine video-funkverbindung kann ich ir-steuerdaten über funk zum robby senden und dann zwischen kamerabild und avr8l-video-daten umschalten und so die daten anschauen auf dem arbeitsplatz mit wintv.
mfg pebisoft

JanB
19.02.2005, 17:34
Hallo Moritz,
Ein schönes, vielseitig einsetzbares Board hast du da zusammengelötet.

Klasse, das gefällt mir !

Natürlich freue ich mich dabei auch darüber, dass mein Programm
so auch praktischen Nutzen bringt und eingesetzt wird.

Jetzt verstehe ich auch, warum du gerne 19200 Baud haben wolltest.
Addlink. ;-)

Mach weiter so...

Schöne Grüße...Jan

RCO
19.02.2005, 18:03
Jetzt verstehe ich auch, warum du gerne 19200 Baud haben wolltest.
Addlink.

Ja ich bin noch nicht ganz dahiner, wie man die Umstellt :-b

Aber mal ne ganz andere Frage, wie genau funktioniert das mit den Steuerzeichen, ich hab jetzt mit Bascom Print "FF" gemacht, aber irgendwie schreibt er dann FF. Muss man das irgendwie anders machen?
Pebisoft hats ja irgendwie schon hinbekommen..

MFG Moritz

JanB
19.02.2005, 18:19
Hallo Moritz,
du musst nicht "FF" senden,
sondern das Steuerzeichen FF = FormFeed.
Das ist einfach ein Byte das den Wert 12 enthält.
Oder 0C in Hex-Schreibweise.
Das ist das Zeichen Strg-L auf der Tastatur.

Im Source-Code findest du am Anfang eine Beschreibung
der Steuerzeichen, und die Codes dazu.

Wenn du nicht klar kommst, sag ruhig Bescheid.

Gruß Jan

pebisoft
19.02.2005, 19:19
hallo, ich hatte mir aus einem buch eine computerschablone herauskopiert, wo die tasten mit hexcode und den buchstaben abgebildet sind, zusätzlich steht unter bemerkungen welche nummern die steuerungen haben, aber in der windowshilfe gibt es auch sowas.
mfg pebisoft

20.02.2005, 12:06
Falls sich jemand für eine C-Variante interessiert, die gab es vor 2 Jahren mal bei Circuit Cellar:
ftp.circuitcellar.com/pub/Circuit_Cellar/2003/150/land150.ZIP
Ein Artikel dazu war auch im Atmel Avr Journal Issue3 / 04.

RCO
20.02.2005, 14:15
@ Gast:
Gibts vielleicht auch Bilder oder so dazu?

@ JanB:
Ja, ich habe ein Problem ;-)
Ich denke, dass die AVRs mit der Print-Ausgabe auch steuerzeichen mitsenden, denn beim senden eines Buchstaben (f) erscheint auf dem TV:



fCa_

Also der Cursor gehört natürlich dahin, Ca scheint vieleicht eine Anweisung wie nächste Zeile zu sein.
Bei Nexte Zeilesenden also (Print 10) ersscheint:


1j
j
_
Bei zurück an den Zeilenanfang (Print 13) und Bildschirm löschen (Print 12) erscheint in beiden Fällen:

1&H_

Gibt es eine Möglichkeit (Anweisung) in Bascom Zeichen ohne Steuerzeichen zu senden? Print Hex?

MFG Moritz

Edit: Ach und noch was, diese Punkte (unten), wie hast du die erzeugt? Ich würde gerne mal versuchen damit zu Zeichnen.

20.02.2005, 15:20
Klar gibt es ein Bild. Im Atmel Avr Journal Issue3 / 04 ;)
http://www.atmel.com/journal/Archive.asp
unter "AVR Video Generator with an AVR Mega163".

JanB
20.02.2005, 17:49
Hi Moritz,
du machst das immer noch nicht richtig.
"Print 10" sendet nicht ein Byte mit dem Wert 10 sondern
mehrere Bytes entsprechend der internen Zahlendarstellung
von 10 in Bascom.

Du musst ein Zeichen mit dem Wert 10 senden, so wie du
ein Zeichen mit dem Wert 65 sendest, wenn du ein "A" haben willst.

Probier mal:

Print chr(10);

und les dir in der Bascom-Hilfe mal durch was chr macht.

Wenn du am Ende der Print-Anweisung ein Semicolon machst,
werden keine CR und LF mitgesendet.

Print f sendet nicht das Zeichen "f" sondern den inhalte der Variable f
Du musst print "f" machen um ein "f" zu senden.

Die Klötzchen im Bild, sind die Steuerzeichen 10h bis 1fH
also 16 bis 31 in dezimal.
Damit kannst du Grafik mit 56x48 Punkten erzeugen.
Du musst halt die 16 Zeichen in Zeilen und Spalten kombinieren.
Es gibt für jede Kombination von 2x2 Punkten ein Zeichen.
Wegen der großen Zeilenabstände sehen die aber nicht so gut aus,
wie ich eigentlich geplant hatte.

Gruß Jan

RCO
20.02.2005, 22:41
Sorry, Mist, das hab ich vergessen zu schreiben.
Beim Buchstabensenden hab ich natürlich

Print Chr(b)

benutzt. b war dann ne Varialbe.
Die Steuerzeichen hab ich so gensendet

Print 10

MFG Moritz

JanB
21.02.2005, 06:39
Hi Moritz,
also umgekehrt ist richtig.

Steuerzeichen mit Print chr(12)
oder auch print "{010}"; müsste auch gehen.

Buchstaben mit Print "A"; oder Print "susi";
Oder du kannst die Texte in String-Variablen halten, natürlich.
Und du kannst die Steuerzeichen auch in Strings einbauen.

Dim S as String * 5
S = "SUSI"
S = S + chr(10)
oder S = "SUSI{010}"
print S


Gruß Jan

RCO
21.02.2005, 19:33
Ich bin jetzt relativ sicher, dass der AVR noch steuerzeichen mitschickt, allerdings mit Software UART scheinbar andere als mit der normalen Print Anwendung. Ich hab jetzt volgendes Script benutzt:



$regfile = "2313def.dat"
$crystal = 4000000

Open "comd.6:19200,8,n,1" For Output As #1
Do
Print #1 , " AAA"
wait 1
Print #1 , " BBB"
Wait 1
Print #1 , " CCC"
wait 1
Print #1 , " DDD"
Wait 1
Print #1 , Chr(10)
wait 1
Wait 1
Loop
Close #1

Ausgabe:
AAA
BBB
CCC
DDD

AAA
...

Erwartet hätte ich:
AAABBBCCCDDD
AAABBBCCCDDD
...

MFG Moritz

Edit:
Auch im Hyperterminal sieht das so aus!
Wenn ich mit dem PC Sachen ausgebe klappt das!

MFG Moritz

JanB
21.02.2005, 19:37
Hallo,
was du erwartest, kommt auch, wenn du
ein Semicolon an die Print Anweisung dranhängst.
Also z.B:

Print "AAA"; <---Semicolon unterdrückt Zeilenumbruch


Ist immer so in Basic

so gehts auch:


$regfile = "M32def.dat"
$crystal = 16000000
$baud = 9600


Out Osccal , &HB5

Do

Print "Das ist ein Test-Text";

Print Chr(10) ; Chr(13);

Waitms 100

Loop


End


Gruß Jan

RCO
21.02.2005, 20:02
Print "AAA"; <---Semicolon unterdrückt Zeilenumbruch ](*,)
Das hätte ich wissen müssen O:)

Jetzt laufen auch alle Steuerzeichen etc., nur das X-Setting klappt nicht, das Y-Setting schon.


Print #1 , Chr(14) ; Chr(7)
Print #1 , Chr(15) ; Chr(7)

Die Anweisung sollte den Cursor ja eigentlich in Zeile 8 und Zeicehn 8 setzen. Sie setzt (bei mir) aber nur die Zeile auf 8.

MFG Moritz

JanB
21.02.2005, 20:08
Hi Moritz,
Fass dich mal an die Nase !!!
Weil du am Ende wieder kein Semicolon dran hast,
springt der in die nächste Zeile.

:^o

Probier mal so:
Print Chr(15) ; Chr(4);
Print Chr(14) ; Chr(10);

Gruß Jan

RCO
21.02.2005, 20:12
:oops: Ja, es war heute ein anstrengender Tag... :oops:
Ich werde jetzt mal versuchen ein bild zu "Zeichnen", danke nochmal für die kleine Nachhilfestunde.

MFG Moritz

JanB
21.02.2005, 20:20
HAllo,
wenn du mit den Blockgrafikzeichen zeichnen willst:

Diese Zeichen sind binär aufgebaut.
Sie bestehen aus 2x2 Blöcken.

bit 0 ist oben links
bit 1 ist oben rechts
bit 2 ist unten links
bit 3 ist unten rechts

Wenn die beiden linken Blöcke an sein sollen,
dann ist das 1 + 4 = 5
und 16 kommt immer dazu also 16 + 5 = chr(21);


Nur der obere rechte Block an wäre chr(18 );
(16 + 2)

Und alle vier an: 16+15 = chr(31);

Ich hoffe, das erleichtert dir es etwas.

Gruß Jan

RCO
21.02.2005, 21:14
http://img215.exs.cx/img215/6595/dscn4154400x3207cd.th.jpg (http://img215.exs.cx/my.php?loc=img215&image=dscn4154400x3207cd.jpg)

Sorry, das Bild ist etwas verwackelt. Hast du selber die Pixel entworfen, oder sind die in den Normalen Zeichen auch vorhanden?


Ich hoffe, das erleichtert dir es etwas.

Das erleichtert mir einiges, das Zahlensystem ist schön einfach ;-)
Danke nochmal für die Hilfe.

MFG Moritz

JanB
22.02.2005, 06:26
Hallo,

Hast du selber die Pixel entworfen, oder sind die in den Normalen Zeichen auch vorhanden?
Nee, die hab ich mir selbst ausgedacht, aber die Idee ist alt.
Das war schon 1978 beim Radio-Shack TRS-80 so.
Allerdings mit 6 Bit und 2x3 Blöcken.

Wenn du einen 16 MHz-Quarz für deinen At-Mega-8 hast,
kann ich dir eine Version des Terminalprogrammes geben,
wo die Blockgrafik wesentlich besser aussieht,
weil die Abstände zwischen den Zeichen und Zeilen
gleichmässiger und geringer sind.

Aber mit 8 MHz hab ich es nicht besser hingekriegt. :-(

Gruß Jan

pebisoft
22.02.2005, 07:35
hallo jan.
hast du den sourcode auch für den avr16/16 dann brauch ich den
avr8 keinen quarz16 auf den robby spendieren.
mfg pebisoft

JanB
22.02.2005, 07:52
Hi Peter,
Nee, für den Mega16 hab ich das nicht.
Ich habs nur versuchsweise mal
für den Mega8 mit 16MHz ausprobiert.

Gruß Jan

RCO
22.02.2005, 08:22
Wenn du einen 16 MHz-Quarz für deinen At-Mega-8 hast,
kann ich dir eine Version des Terminalprogrammes geben,
wo die Blockgrafik wesentlich besser aussieht

Auf jeden Fall, das wäre super!
Ob ich im Moment einen da habe weis ich nicht, aber besorgen würde ich mir einen, auf jeden Fall. Was hast du denn daran geändert? Zeilenabstand geringer, Zeilenanzahl höher?

MFG Moritz

JanB
22.02.2005, 08:31
Hallo,

Zeilenabstand geringer, Zeilenanzahl höher?
Nur Abstände kleiner und gleichmässiger.
Ist bei normaler Schrift eigentlich egal,
aber bei der Blockgrafik macht es viel aus.

Gruß Jan

JanB
22.02.2005, 21:36
Hallo Moritz,
hier ist nochmal das Terminalprogramm
für den AtMega-8 mit 16MHz.
Da sieht die Blockgrafik besser aus, oder ?
Ansonsten Anschluss usw. wie gehabt
und weiter oben in diesem Thread
auf Seite 6 unten beschrieben.

Gruß Jan

pebisoft
23.02.2005, 07:58
hallo jan, habe jetzt einen avr8 16mhz mit quarz 16 in betrieb. kannst du noch einmal den sourcode senden, weil ich für die datendarstellung vom robby noch andere zeichen brauche (symbole) die ich dann selber da einbinde.
mfg pebisoft

RCO
23.02.2005, 08:21
Da sieht die Blockgrafik besser aus, oder ?
Ja stimmt schon, dass sieht man vor Allem an den "Viererpaketen" (31).
Ich werds heute Nachmittag mal testen. Ziel wär übrigens ein Zeichenprogramm zu entwerfen, aber das ist mindestens ein langzeitprojekt. Oder ein Programm, das schwarz-weiß-Bitmaps konvertiert...

MFG Moritz

thille
23.02.2005, 09:26
[quote]... Ziel wär übrigens ein Zeichenprogramm zu entwerfen, aber das ist mindestens ein langzeitprojekt. ...
MFG Moritz

Warum nicht gleich die Roboterbewegung als Graphik darstellen? Wenn er dann lange genug im Raum herumgeirrt ist sollte eine grobe Karte des Raumes auf dem Schirm stehen.

Gruß

Torsten

RCO
23.02.2005, 10:02
Ja, wäre auch nett, ich denke, dass man das ganze noch zu vielem verwenden kann:
Anzeige von Inforamtionen über den Roboter, quasi serielles Terminal
Als PArtygeck um Leute zu erschrecken "Ich weiß genau was du letzten Sommer getan hast"
...
Aber es ist denke isch schon ne Herausforderung ne vernünftige Grafik darzustellen.

MFG Moritz

pebisoft
23.02.2005, 17:40
hallo, ich habe vor, den weg des roboters auf dem bildschirm darzustellen mit kleinen klötzchen, möchte aber noch andere kleine symbole speziell für die markierung von dingen entwerfen.
mfg pebisoft

Trabukh
23.02.2005, 18:32
Hallo!

Ich habe mal versucht, ein kleines Bild zu machen und das dann "umgerechnet". Da ich mein ISP-Kabel zur Zeit verliehen habe, würde es mich freuen, wenn hier jemand folgendes an den AVR schickn könnte (Für die 24x28-Version):


Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(22); Chr(19); Chr(32); Chr(32); Chr(27); Chr(19); Chr(27); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(17); Chr(24); Chr(30); Chr(19); Chr(31); Chr(26); Chr(30); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(30); Chr(32); Chr(26); Chr(32); Chr(32); Chr(26); Chr(28); Chr(30); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(19); Chr(19); Chr(19); Chr(19); Chr(19); Chr(27); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(28); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(21); Chr(28); Chr(28); Chr(28); Chr(28); Chr(20); Chr(32); Chr(29); Chr(19); Chr(25); Chr(22); Chr(19); Chr(28); Chr(19); Chr(25); Chr(23); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(28); Chr(22); Chr(27); Chr(17); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(32); Chr(23); Chr(32); Chr(22); Chr(21); Chr(18); Chr(23); Chr(32); Chr(22); Chr(31); Chr(26); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(25); Chr(24); Chr(19); Chr(32); Chr(32); Chr(26); Chr(20); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(32); Chr(29); Chr(32); Chr(30); Chr(21); Chr(26); Chr(20); Chr(32); Chr(30); Chr(31); Chr(30); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(24); Chr(17); Chr(26); Chr(21); Chr(32); Chr(26); Chr(32); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(32); Chr(31); Chr(31); Chr(31); Chr(31); Chr(31); Chr(31); Chr(27); Chr(31); Chr(31); Chr(31); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(26); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(17); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(32); Chr(21); Chr(19); Chr(17); Chr(18); Chr(19); Chr(32); Chr(19); Chr(17); Chr(19); Chr(31); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(18); Chr(20); Chr(26); Chr(21); Chr(32); Chr(26); Chr(20); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(26); Chr(31); Chr(19); Chr(27); Chr(23); Chr(19); Chr(31); Chr(19); Chr(27); Chr(23); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(22); Chr(18); Chr(28); Chr(32); Chr(32); Chr(26); Chr(32); Chr(22); Chr(22); Chr(22); Chr(20); Chr(21); Chr(26); Chr(23); Chr(32); Chr(23); Chr(21); Chr(24); Chr(23); Chr(32); Chr(23); Chr(29); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(19); Chr(25); Chr(30); Chr(21); Chr(30); Chr(30); Chr(30); Chr(20); Chr(21); Chr(26); Chr(21); Chr(32); Chr(23); Chr(21); Chr(26); Chr(20); Chr(32); Chr(23); Chr(31); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(18); Chr(21); Chr(28); Chr(28); Chr(28); Chr(28); Chr(21); Chr(31); Chr(31); Chr(31); Chr(31); Chr(31); Chr(31); Chr(31); Chr(23); Chr(31); Chr(31); Chr(31); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(28); Chr(28); Chr(30); Chr(31); Chr(31); Chr(31); Chr(21); Chr(19); Chr(32); Chr(18); Chr(19); Chr(32); Chr(18); Chr(17); Chr(27); Chr(31); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(21); Chr(32); Chr(21); Chr(32); Chr(32); Chr(24); Chr(28); Chr(28); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(25); Chr(32); Chr(27); Chr(28); Chr(28); Chr(23); Chr(24); Chr(30); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(25); Chr(32); Chr(32); Chr(32); Chr(32); Chr(23); Chr(30); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(19); Chr(19); Chr(19); Chr(19); Chr(19); Chr(17); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(28); Chr(28); Chr(28); Chr(28); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(20); Chr(32); Chr(32); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(19); Chr(19); Chr(23); Chr(19); Chr(17); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(27); Chr(20); Chr(30); Chr(17); Chr(24); Chr(31); Chr(31); Chr(29); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(32); Chr(32); Chr(21); Chr(32); Chr(31); Chr(26); Chr(31); Chr(31); Chr(31); Chr(32); Chr(32); Chr(31); Chr(21); Chr(32); Chr(26); Chr(26); Chr(32); Chr(26); Chr(32); Chr(31); Chr(31); Chr(31); Chr(31); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32)
Print Chr(28); Chr(28); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(30); Chr(17); Chr(27); Chr(20); Chr(18); Chr(31); Chr(32); Chr(23); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32)

Gruß, Trabukh

RCO
23.02.2005, 18:54
Das gefällt Bascom garnicht so gut...

http://img73.exs.cx/img73/3316/fehler2qr.jpg (http://www.imageshack.us)

Ich denke, dass es daran liegt, dass die ANweisung nach Print zu lang ist.
Außerdem dürfte dieses Bild den Speicher des 2313 wohl bei weitem überschreiten.

Was solls denn sein?

MFG Moritz

Edit:
Könnte man nciht, oder besser, wie geht es, eine Data anzulegen, aus der man alles auslesen kann, ohne die Print anweisungen. Also quasi ein Konstantenfeld oder so?

RCO
23.02.2005, 18:56
@ JanB, saubere Arbeit, das ganze läuft schonmal einwandfrei auf 16 Mhz, vielleicht komm ich in den nächsten Tagen mal sazu ein nettes Bild zu malen.

MFG Moritz

Trabukh
23.02.2005, 19:27
Hmm, schade, aber trotzdem vielen Dank!

Gruß, Trabukh

EDIT: Eigentlich sollte dieses Bild dabei rauskommen:

RCO
23.02.2005, 19:34
Wie könnte man das denn vom PC aus senden? Das könnte ich ausprobieren. Musst mir nur sagen, wie ich das machen soll, kann man den Code simulieren? Dafür muss man ihn wohl erst Compilieren.

MFG Moritz

Trabukh
23.02.2005, 19:56
Hmm, simulieren wohl eher nicht, da müsste ein Programm her, am einfachsten in Visual Basic...
Vllt werde ich morgen mal etwas einfaches in dieser Richtung fabrizieren, aber heute muss ich noch lesen... (Berthold Brecht :-( )

Gruß, Trabukh

pebisoft
23.02.2005, 20:03
hallo, du musst immer einen ascii-code-nummer senden die jan im programm drin hat, zeile 1 und 28 zeichen, zeile 2 und 28 zeichen
usw... usw...du kannst immer nur mit 1 zeichen von jan zeichnen (zeichen und kein byte). diese müssen dann dein bild ergeben. ist nicht einfach.
ich glaube der printbefehl ist immer nur für 255 byte bestimmt, probier mal aus.
mfg pebisoft

RCO
23.02.2005, 20:10
@Trabukh:

Kannst du mir das erklären:?

http://img18.exs.cx/img18/5954/dscn41577vw.th.jpg (http://img18.exs.cx/my.php?loc=img18&image=dscn41577vw.jpg)

Ich hab die Zeilen einfach mla in der Mitte abgebrochen und ne neue Printanweisung gemacht, also eigentlich dürfte sich nix verändern. Außerdem hab ich einige Zeilen weggelassen. da der 2313 nicht genug speichert hat. Aber wenn ich unten Zeilen weglasse, warum fehlen die dann rechts im Bild? Und warum ist alles gedreht? Oder warum ist da immer ne freizeile? Also mein Fernseher steht auf jeden Fall normal da, nicht das du denkst, ich hätte ihn gedreht oder so...

MFG Moritz

RCO
23.02.2005, 20:27
So, jetzt siehts besser aus:
http://img231.exs.cx/img231/3586/dscn4159640x4802md.th.jpg (http://img231.exs.cx/my.php?loc=img231&image=dscn4159640x4802md.jpg)

2 Anmerkungen:
1. Die Printanweisung ist zulang, einfach in der Mitte teilen und ne neue Anweisung macehn, es wird ja in der selben Zeile weidergeschrieben.
2. Es darf kein Zeilenumbruch kommen, also immer ein ";" als leztes. Wenn die Zeile voll ist, spring er automatisch um, du erzeugst durch das fehlende ";" direkt noch einen.

- Komischerweise ist der Roboter gedreht.
- Und mir ist nicht klar, waum oben die Schrift "Pixel fehlt"
Das unten was fehlt ist klar, da war der Speicher beim 2313 voll.
Vielleicht ist es aber auch komplett gespiegelt, so dass "Pixel" jetzt noch kommen würde, schließlich sind noch 7 Zeilen frei.

MFG Moritz

Edit: Mal ne Frage, womit hast du das Bild erzeugt? Hast du jeden einzelnnen Pixel im kopf errechnet, oder hast du in VB oder so schnell nen Toll geschrieben?

MFG Moritz

Trabukh
23.02.2005, 20:31
Habs superschnell was billiges in VB gemacht, 10 Zeilen oder so...
Das wundert mich jetzt allerdings auch, hab wohl Spalte und Reihe miteinander vertauscht :-)

Gruß, Trabukh

RCO
23.02.2005, 20:40
Nicht nur das, ich habs grad mal durch den Simulator gejagt,
"Pixel" würde jetzt unten Seitenverkehrt erscheinen.
Aber sind halt 137% des 2313 ;-)

Wenn das Tool funktioniert, würde ich es auch gern mal probieren. Man müsste nur noch ne Platzsparendere Methode finden, die Bilder zu "speichern". Kann man da nicht irgendwie nen String nehmen und dann wieder auseinander nehmen?

MFG Moritz

JanB
23.02.2005, 21:26
Hallo,
vrsucht es doch mal mit dieser Methode:
(auf die Schnelle zuammengestrickt,
ist noch nicht 100%ig))

Gruß Jan




$regfile = "M32def.dat"
$crystal = 16000000
$baud = 9600



Dim A As Byte
Dim Z As Byte
Dim B As Byte
Dim C As String * 1
Dim S As String * 28

Print Chr(12);

Restore Daten

For Z = 1 To 23
Read S
For B = 1 To 28
C = Mid(s , B , 1)
A = Asc(c)
If A > 32 Then A = A - 48
Print Chr(a);
Next B
Next Z

Do
Loop

End

' A = chr(17), B=chr(18) usw. bis O = chr(31)
' Leerzeichen ist Leerzeichen
' Grossschrift !!!
'jede Zeile hat genau 28 Zeichen

Daten:
Data " ABCDEFGHIJKLMNO " 'Zeile 1
Data "AAAAAAAAAAAAAAAAAAAAAAAAAAAA" 'Zeile 2
Data " "
Data " DDDDDDDDDDDDDDD "
Data " "
Data "BBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Data " "
Data " "
Data " "
Data " "
Data " ADGKHLDDEG "
Data " KJLKN NO "
Data " KBHLLABGFKK "
Data " HJLKBGFCRE "
Data " "
Data " "
Data " "
Data " "
Data " "
Data " "
Data " "
Data " "
Data " "
Data " DEFGH "
Data " ADDDFFJJJJ " 'Zeile24

Trabukh
23.02.2005, 21:37
Hmm, die Idee ist gut, werd' ich mal probieren...
Ach ja, ich weiß zwar, das es den Speicher immer noch hoffnungslos überlastet, aber vllt ist der Dreh- und Spiegelfehler weg:


Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(25); Chr(32); Chr(32); Chr(32); Chr(32); Chr(22); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(23); Chr(19); Chr(27); Chr(20); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(25); Chr(19); Chr(19); Chr(22); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(21); Chr(32); Chr(26); Chr(21); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(17); Chr(32); Chr(32); Chr(18); Chr(20); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(29); Chr(28); Chr(30); Chr(17); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(22); Chr(26); Chr(21); Chr(26); Chr(21); Chr(25); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(21); Chr(28); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(21); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(19); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(30); Chr(19); Chr(23); Chr(27); Chr(19); Chr(23); Chr(27); Chr(31); Chr(20);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(28); Chr(17); Chr(20); Chr(20); Chr(20); Chr(20); Chr(20); Chr(20); Chr(20); Chr(20); Chr(22);
Print Chr(28); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(30); Chr(19); Chr(27); Chr(32); Chr(23); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(21); Chr(21);
Print Chr(32); Chr(18); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(26); Chr(32); Chr(32); Chr(26); Chr(32); Chr(23); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(21); Chr(21);
Print Chr(28); Chr(20); Chr(18); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32); Chr(19); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(22); Chr(32); Chr(23); Chr(27); Chr(32); Chr(23); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(22); Chr(21); Chr(31);
Print Chr(32); Chr(27); Chr(32); Chr(21); Chr(32); Chr(32); Chr(24); Chr(20); Chr(32); Chr(24); Chr(20); Chr(32); Chr(32); Chr(32);
Print Chr(21); Chr(26); Chr(17); Chr(26); Chr(32); Chr(29); Chr(28); Chr(28); Chr(28); Chr(28); Chr(28); Chr(28); Chr(28); Chr(31);
Print Chr(32); Chr(26); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(27); Chr(28); Chr(23); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(25); Chr(26); Chr(20); Chr(26); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(30);
Print Chr(32); Chr(30); Chr(32); Chr(21); Chr(32); Chr(32); Chr(32); Chr(24); Chr(31); Chr(20); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(26); Chr(19); Chr(19); Chr(23); Chr(29); Chr(28); Chr(28); Chr(28); Chr(28); Chr(30); Chr(31); Chr(31); Chr(31); Chr(31);
Print Chr(26); Chr(17); Chr(28); Chr(21); Chr(32); Chr(32); Chr(24); Chr(23); Chr(32); Chr(27); Chr(20); Chr(32); Chr(32); Chr(32);
Print Chr(26); Chr(18); Chr(21); Chr(21); Chr(24); Chr(19); Chr(32); Chr(27); Chr(29); Chr(26); Chr(19); Chr(32); Chr(26); Chr(29);
Print Chr(26); Chr(26); Chr(25); Chr(21); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(18); Chr(19); Chr(19); Chr(17); Chr(26); Chr(32); Chr(20); Chr(30); Chr(31); Chr(26); Chr(24); Chr(28); Chr(30); Chr(23);
Print Chr(18); Chr(19); Chr(19); Chr(32); Chr(32); Chr(32); Chr(32); Chr(30); Chr(19); Chr(29); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(30); Chr(31); Chr(21); Chr(26); Chr(31); Chr(30); Chr(30); Chr(21);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(19); Chr(19); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(32); Chr(32); Chr(26); Chr(31); Chr(26); Chr(32); Chr(32); Chr(26); Chr(31);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(28); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(18); Chr(30); Chr(22); Chr(31); Chr(23); Chr(26); Chr(28); Chr(23); Chr(31); Chr(23);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(18); Chr(19); Chr(17); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(19); Chr(32); Chr(26); Chr(25); Chr(26); Chr(19); Chr(32); Chr(26); Chr(21);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(28); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(26); Chr(32); Chr(20); Chr(30); Chr(31); Chr(26); Chr(24); Chr(28); Chr(30); Chr(30);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(24); Chr(31); Chr(30); Chr(31); Chr(29); Chr(26); Chr(31); Chr(30); Chr(30); Chr(29);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(23); Chr(18); Chr(19); Chr(31); Chr(31); Chr(22); Chr(32); Chr(19); Chr(27); Chr(31);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(29); Chr(30); Chr(31); Chr(31); Chr(31); Chr(29); Chr(28); Chr(28); Chr(30); Chr(31);
Print Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32); Chr(31); Chr(32); Chr(32); Chr(32); Chr(32); Chr(32);

Trabukh
23.02.2005, 21:58
So, mal schaun, ob's geht. Ist nach Jan B.s Methode... Ich habe nicht wirklich etwas geändert, nur die Bezeichnungen für die Variablen und die Grafik unten, schließlich gehts es mir ja hauptsächlich um das Bild! :-)


$regfile = "M16def.dat"
$crystal = 16000000
$baud = 9600

Dim Zeile as String * 28
Dim Zeichen as String * 1
Dim Reihe as Byte
Dim Spalte as Byte
Dim Nummer as Byte

Restore Daten

For Reihe = 1 To 24
Read Zeile
For Spalte = 1 To 28
Zeichen = Mid(Zeile , Spalte , 1)
Nummer = Asc(Zeichen)
If Nummer > 32 Then Nummer = Nummer - 48
Print Chr(Nummer)
Next Spalte
Next Zeile

Do
Loop

End

Daten:
Data " I F OCCM "
Data " ICCF O O "
Data " HA BD OLLG "
Data " FJEJEI O "
Data " E J OHD "
Data " J E BA "
Data " HNCGKCGKOD JE "
Data " LADDDDDDDDFML JE "
Data " NCK GFFFFFFEEE I JE "
Data "J J GFFFFFFEEML I BA "
Data "F GK GFFFFFFEOEBEJ L L "
Data "EJAJ MLLLLLLLOE EJ BMNA "
Data "IJDJ HNEHEJ NM "
Data "JCCGMLLLLNOOOOEGHN NABM "
Data "JBEEHC KMJC JM EGN "
Data "BCCAJ DNOJHLNG CCA HGKD "
Data " ONOEJONNE JGCA "
Data " J JOJ JO JEHD "
Data " BNFOGJLGOG CC "
Data " HC JIJC JE HD "
Data " J DNOJHLNN JE "
Data " HONOMJONNM JE "
Data " GBCOOF CKOE JE "
Data " MNOOOMLLNOE JE "

RCO
23.02.2005, 22:08
Jetzt sieht es gut aus!

http://img119.exs.cx/img119/5914/dscn4160640x4809hu.th.jpg (http://img119.exs.cx/my.php?loc=img119&image=dscn4160640x4809hu.jpg)

MFG Moritz

Trabukh
23.02.2005, 22:09
War das jetzt von meinem letzten Beitrag oder von der großen "Print-Liste"?

Gruß, Trabukh

RCO
23.02.2005, 22:17
Sorry, der Post hier drüber bezog sich auf Trabukhs gedrehtes Bild.

Zum neuen Script!
Läuft wunderbar, nur 2 anmerkungen:
1. Hinter Print Chr(nummer) muss ein ";", sonst schreibt er alles untereinander
2. Ich würde ganz am Ende ein Leerzeichen frei lasen, damit das ganze nicht scrolt.

Ansonsten SUPER!

MFG Moritz

Trabukh
23.02.2005, 22:22
Freut mich! Das mit dem Scrollen ist allerdings etwas unglücklich, schließlich könnte man ja auch mal ein Bild nehmen wollen, das bis in die letzte Ecke geht, das wäre dann ja praktisch gar nicht möglich!

@JanB: Kann man das Scrollen irgendwie unterdrücken?

Gruß, Trabukh

JanB
24.02.2005, 06:27
Moin Freunde,

Kann man das Scrollen irgendwie unterdrücken?
Unterdrücken nicht.
aber verhindern.
Beispiel unten im Code.
Da wird nur das letzte Zeichen unterdrückt.

Alternativ könnte ich Ctrl-Codes
für Cursor-An Cursor-Aus in das
Video-Terminal-Programm einbauen.
Wenn diese Funktion oft gebraucht wird.

Gruß Jan




$regfile = "M16def.dat"
$crystal = 16000000
$baud = 9600

Dim Zeile as String * 28
Dim Zeichen as String * 1
Dim Reihe as Byte
Dim Spalte as Byte
Dim Nummer as Byte
Dim Zpz as Byte '<---hier

Restore Daten

Zpz=28 '<---hier
For Reihe = 1 To 24
Read Zeile
if reihe=24 then Zpz=27 '<---hier
For Spalte = 1 To Zpz '<---hier
Zeichen = Mid(Zeile , Spalte , 1)
Nummer = Asc(Zeichen)
If Nummer > 32 Then Nummer = Nummer - 48
Print Chr(Nummer);
Next Spalte
Next Zeile

Do
Loop

End

Daten:
Data " I F OCCM "
Data " ICCF O O "
Data " HA BD OLLG "
Data " FJEJEI O "
Data " E J OHD "
Data " J E BA "
Data " HNCGKCGKOD JE "
Data " LADDDDDDDDFML JE "
Data " NCK GFFFFFFEEE I JE "
Data "J J GFFFFFFEEML I BA "
Data "F GK GFFFFFFEOEBEJ L L "
Data "EJAJ MLLLLLLLOE EJ BMNA "
Data "IJDJ HNEHEJ NM "
Data "JCCGMLLLLNOOOOEGHN NABM "
Data "JBEEHC KMJC JM EGN "
Data "BCCAJ DNOJHLNG CCA HGKD "
Data " ONOEJONNE JGCA "
Data " J JOJ JO JEHD "
Data " BNFOGJLGOG CC "
Data " HC JIJC JE HD "
Data " J DNOJHLNN JE "
Data " HONOMJONNM JE "
Data " GBCOOF CKOE JE "
Data " MNOOOMLLNOE JE "

RCO
24.02.2005, 08:50
@ Trabukh, könnte man das Porgramm nicht noch optimieren?
- Wenn mehr als 2 Leerzeichen folgen, dann wird es durch eine Goto X-Anweisung ersetzt.
- Wenn mehr als ein Leerzeichen am Ende einer Zeile folgt, dann werden sie durch einen Zeilenumbruch chr(10) ersetzt.
- Leere Zeilen ganz raus chr(10)

MFG Moritz

Trabukh
24.02.2005, 09:40
Klar, werd' ich heut' Nachmittag tun...

Gruß, Trabukh

P.S.
Könntest du vllt mal das gesamt Bild posten, also nach dem neuesten Quelltext?

EDIT: @JanB: Schade, dass das letzte Zeichen nicht mit draufgeht. Falls jemand eine rechteckige Karte machen möchte, geht das so wohl nicht. Flags für den Cursor wären super!

RCO
24.02.2005, 09:47
Könntest du vllt mal das gesamt Bild posten, also nach dem neuesten Quelltext?

Jepp, aber erst heute Nachmittag.

MFG Moritz

JanB
24.02.2005, 10:01
Hallo,
interessant wäre auch, es anders zu machen
als mit "ABCD.." usw.
Wenn man andere Zeichen oder so hätte,
dann könte man schön einfach Text und Grafik
mischen. Dann würde man die Buchstaben
einfach als Buchstaben drin lassen.
Was für Zeichen könnte man da nehmen ?
Wir bräuchten 15 Stück.

MIt dem Scrollen beim letzten Zeichen,
da überlege ich mir was.

Gruß Jan

RCO
24.02.2005, 10:15
Tja, das düfte etwas kompliziert werden, wenn man "reguläre" Zeichen nehmen will, also das, was auf der Tastatur da ist.
Man könnte natürlich mal schaun, was chr(x) noch alles ausspuckt, aber dann wirds bei der Bilderstellung natürlich ein andauerndes "Copy and Paste" . Wenn man natürlich das ganze eh mit nem Programm macht, dann gehts ja. brächten wir nur ein schönes "Grafikprogramm".

MFG Moritz

pebisoft
24.02.2005, 10:19
hallo, in bascom gibt es ein tool wo mit man die zeichen für ein lcd-display erstellen kann.
mfg pebisoft

RCO
24.02.2005, 10:25
hallo, in bascom gibt es ein tool wo mit man die zeichen für ein lcd-display erstellen kann.

Ich dachte eher an sowas, wie Trabukh das scheinbar gemacht hat. Also ein Zeichengerät und so, quasi Paint für Arme.
Vielleicht auch eine Funktion zum importieren von Bitmaps oder so, ich weiß allerdings nicht wie kompliziert das ist.
Das Programm sollte nach Möglichkiet ein Datenfeld zu erzeugen und vielleicht noch direkt auszugeben (RS232).
Da ich das jetzt noch nicht kann, eher Wunschdenken.

MFG Moritz

RCO
24.02.2005, 12:27
Also ich weiß jetzt, welche Zeichen du alles nehmen könntest:
Sind sogar 30!

Et un peu Francais:

ÁáÂâÀà
ÉéÊêÈè
ÍíÎîÌì
ÓóÔôÒò
ÚúÛûÙù

Weiß allerdings nicht, genau den Code, aber den kriegt man ja hier raus:
http://www.wintotal.de/softw/index.php?rb=26&id=1506

Hoffe, da kommt was hintereinander, damit man so ne einfache Berechnung wie -48 machen kann.

MFG Moritz

JanB
24.02.2005, 12:45
Hallo,
die Zeichen brauchen nicht hintereinander sein.
Eine Umsetzungstabelle für 15 Zeichen ist in
Bascom doch kein Problem.

Gruß Jan

RCO
24.02.2005, 12:49
Ja klar, nur das andere wäre halt eine Codezeile.
Wie schwierig das ist, darfst du mich nicht fragen, ich kann "noch" nicht.

MFG Moritz

JanB
24.02.2005, 14:50
Hallo,

Ja klar, nur das andere wäre halt eine Codezeile.
hier ein Vorschlag für eine 15-Zeichen-Umsetzung per Tabelle.
So sind es zwei Zeilen.
(nicht getestet, sollte aber gehen)

Gruß Jan


Dim A As String * 15
Dim B As String * 15
Dim N As Byte
Dim Z As String * 1


'Vorbereitung, nur einmal beim Start
A = "ÂÊÎÔÛÀÈÌÒÙÁÉÍÓÚ"
For N = 17 To 31
B = B + Chr(n)
Next N


'Umsetzung Beispiel für ein Zeichen
Z = "Î"

N = Instr(z , A)
Z = Mid(b , N , 1)

Print Z;

pebisoft
24.02.2005, 17:41
hallo, die beiden demos von jan laufen gut.
manchmal wird ein byte verschluckt beim übertragen, setzt da hinter "print..." einfach noch "waitms 5".
die steuerbefehle einfach mit "printbin 12;" (12 ist bildschirm löschen) und auch "waitms 5".
mfg pebisoft

RCO
25.02.2005, 09:18
hier ein Vorschlag für eine 15-Zeichen-Umsetzung per Tabelle.

OK, man sieht, dass du in Bascom deutlich fitter bist als ich ;-)

@ Trabukh:
Bild kommt heute, war gestern nur 5 Minuten zu hause.

MFG Moritz

Edit:
Eine Idee: könnte man nicht

Z = Mid(b , N , 1)

durch

Z = Chr(16+N)
ersetzen?
Dann bräuchte man auch keinen 2. String mit den Zeichen ud keine For-schleife.

MFG Moritz

JanB
25.02.2005, 09:42
Hi Moritz,

könnte man nicht
Z = Mid(b , N , 1)
durch
Z = Chr(16+N)
ersetzen?
Ja klar.
Gute Idee!
Was willst du ? Du hast doch Basic auch gut im Griff !!


BIs dann...Jan

RCO
25.02.2005, 10:18
Was willst du ? Du hast doch Basic auch gut im Griff !!

Naja, dafür musste ich 3 mal ins Helpfile schauen!
Den Code hier verstehe ich aber immer noch nicht so ganz.


Dim Zeile as String * 28
Dim Zeichen as String * 1
Dim Reihe as Byte
Dim Spalte as Byte
Dim Nummer as Byte

Restore Daten

For Reihe = 1 To 24
Read Zeile
For Spalte = 1 To 28
Zeichen = Mid(Zeile , Spalte , 1)
Nummer = Asc(Zeichen)
If Nummer > 32 Then Nummer = Nummer - 48
Print Chr(Nummer)
Next Spalte
Next Zeile

Wo endet die For-Schleife? Was bringt next Zeile?
Woher weiß Read, welches Data er lesen soll, liest es bei jedem Aufruf einfach die nächste Zeile?
Kann man nicht direkt in eine Data-Zeile springen?
Kann man ein zweites Datafeld machen (data2).
MFg moritz

JanB
25.02.2005, 10:41
Hallo,

Wo endet die For-Schleife? Was bringt next Zeile?
Die For Schleife endet am zugehörigen Next. Dafür ist auch das Next da.


Woher weiß Read, welches Data er lesen soll, liest es bei jedem Aufruf einfach die nächste Zeile?
Ja.

Kann man nicht direkt in eine Data-Zeile springen?
Ja, dann muss man diese Datazeile mit einem Label versehen,
und kann dann mit "Restore Label" den Read-Zeiger direkt dahin setzen.

Kann man ein zweites Datafeld machen (data2).
Im Prizip ja, wie gerade beschrieben, mit Label.

Gruß Jan

RCO
25.02.2005, 18:57
So, hier nun das Bild:

http://img168.exs.cx/img168/5219/dscn4162640x4804py.th.jpg (http://img168.exs.cx/my.php?loc=img168&image=dscn4162640x4804py.jpg)

@Jan:
Komischerweise passt das jetzt übrigens gans auf meinen Fernseher?
Hast du an dem neuen Programm was geändert?

MFG Moritz

Trabukh
25.02.2005, 19:20
Gut, scheint ja hier super zu funktionieren, also Jans Sachen mit Bascom. Wenn jetzt jemand klar ein "Dateiformat" zurecht legt, mache ich das nötige Programm zum umrechnen in Visual Basic... Ich habe in Bascom nicht gerade den Masterplan, daher überlasse ich das den Fachkundigen. :-)

Gruß, Trabukh

EDIT: @RCO: Du hast Recht, "Next Zeile" ist falsch, das müsste "Next Reihe" sein, Bascom ist da wohl etwas toleranter...