mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Statischer Text als OSD im TV / FBAS mit BASCOM


Autor: Mario M. (constructor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich lese hier seit Monaten mit und habe als anfänger beeits eine Unmenge 
gelernt, aber wie das halt so ist, werfen Antworten grundsätzlich 
weitere Fragen auf....Nun zu meinem Problem:

Ich habe für meine Eltern eien Alarmanlage mit einem ATMega128 gebaut 
welcher gleichzeitig als Kamera-Umschalter fungiert (4 Kameras auf einem 
Monitor umschaltbar), nun sind meine Eltern nicht mehr die jüngsten und 
haben Problemem auf anhhieb zu erkennen welcher Bereich auf dem Monitor 
gerade abgebildet wird. Da wäre es hilfreich eine Text-Einblendung nach 
dem Muster "Garage vorne" oder "Eingang hinten" darstellen zu können.

Es gibt hier und im Netz ja zahlreiche Beispiele die aber entweder nicht 
in BASCOM oder einfach Overkill vom Schaltungsausfwand her sind....ich 
möchte dies nur über 3 zusaätzlich Widerstände (schwarz, grau, weiß) 
realisieren weil ich die Schaltung ja schon fix und fertig in Betrieb 
habe und da keine speziellen OSD-IC's mehr einlöten kann und außerdem 
reicht eine einfache weiße Schrift auf grauem Hintergrund aus.

Die Software soll in BASCOM einfachst gehalten werden, der Text kann 
ruhig fest im Source-Code implemtiert werden (als Variable).

Wäre jemand so lieb mir diesbezüglich mit dem Sourcecode behilflich zu 
sein? Ich würde mich wahnsinnig freuen!

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
@Falk: Deine herrlich sinnlosen Einträge zeugen von extremer Dummheit 
und Unreifheit. Sie tragen nicht zur Lösung des Problems bei. Wenn also 
ein Problem deinen Horizont übersteigt, antworte einfach nicht

In Bascom wirst du echt Probleme haben, Das umzusetzen, vorallem weil 
die Textausgabe einiges an Rechenzeit in Anspruch nimmt. Ich würde 
behaupten, wenn du 3 Pinne frei hast wäre die am einfachsten zu 
implementierende Lösung eine kleine Zusatzplatine mit nem OSD drauf, die 
dann über I2C oder RS232 Anweisungen bekommt. ELV hatte mal eine fertige 
Platine, für 30€ die nen Controller mit drauf hatte, da konnte der OSD 
GANZ EINFACH über RS232 angesprochen werden

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht nicht die OSD-idee, die du ins auge gefasst hast, aber 
vielleicht lösst sie dein problem trotzdem: wie wär's wenn du auf einer 
zusätzlichen tafel 4 LEDs hast und daneben steht der standort der 
kammera. dann könntest du ganz einfach die entsprechende LED aufleuchten 
lassen. ...aber eben, ich weiss halt nicht, ob das nachträglich noch 
möglich ist.

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Bascom allein wird das wohl nix. Im ein byte aus dem flash zu holen 
verbrauchst du locker deine 12 takte. man könnte sehen das man das dann 
über die spi schnittstelle rausgibt, allerdings möchte ich behaupten das 
da SEEEEEHHHHRR viel zeit mit debuggen rausgehauen werden wird. und 
takte zählen :-)

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach und nochwas. Du willst da das bild uberblenden, über die kamera. das 
bedeutet du musst die videosignale übereinander legen, also müssen die 
syncronsignale gleich sein. das heißt du brauchst nen lm1881 oder so.

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch zu einem OSD-IC tendieren.

Mit dem AVR + 3 Widerständen wirst du es wohl nicht schaffen, da du den 
AVR mit der Kamera syncronisieren musst. Das ginge evtl noch mit einem 
Sync-Abtrenner und die Impulse auf einen Interrupt-eingang gelegt. Nun 
hast aber das Problem, dass du das Timing sehr genau einhalten musst.
Pro Bildschirmzeile führt ein AVR@4MHz nur 256 Befehler aus, in denen du 
das Bild erzeugen musst! Mit bascom (und vermutlich auch mit C) 
unmöglich.

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte sowas doch schonmal gesehen:

http://garydion.com/projects/videoverlay/

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hinweise und vor allem den sehr interessanten Link, 
die Sache mit dem LM1881 habe ich auch bereits in's Auge gefasst, 
außerdem bin ich gerade dabei von BASCOM auf WinAVR unzusteigen, weil 
ich bei einem anderen Projekt bemerken mußte daß BASCOM für die selben 
Routinen doch ein paar Takte mehr benötigt als C.....ich denke in C 
ließe sich das mit dem OSD (zusammen mit LM1881 sicher, denke ich) 
bewältigen.
Ursprünglich dachte ich, ich könnte die Synchronisation über Ain (0-Volt 
abtasten und dann den Text ausgeben), aber da muß ich wohl doch noch ein 
paar PAL-Grundlagen studieren, immerhin habe ich auf die Art einen 
flimmernden weißen Streifen über das Kamera-Bild gezaubert.

@Sebastian:
Vielen Dank für den Link, das werde ich mir jetzt mal genauer ansehen, 
das könnte ich hinbekommen, nur blöd das die ganze Anlage von mir 
bereits in BASCOM programmiert wurde.....

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze NUR bascom (und asm wenns wirklich nötig ist), allzublöd is 
das nicht.

Du wirst schon nen anständigen interrupt-pin nehmen müssen. sonst wird 
das mit dem genauen timing nix

Autor: Sowieso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier hat wohl noch keiner gehöhrt das man ASM direkt in bascom einbinden
kann deswegen macht das umsteigen auf C keinen sinn,
zumal C kein wenig schneller ist wenn man mit bascom vernünftig umgehen 
kann und nicht die high level befehle benutzt.in diesem fall müste man 
bei C auch mit ASM einbinden arbeiten.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, ich bin nun auch wieder am schwanken, bisher habe ich nur an einem 
herumliegenden ATMega8 mit C / WinAVR herum experementiert, aber 
eigentlich arbeite ich am liebsten mit dem 128 bzw 168-Crumb. Jetzt ist 
mir gerade etwas aufgefallen:

Kann es sein das WinAVR nur die Prozessoren

AT90USB82, AT90USB162, ATmega325P, ATmega3250P, ATmega329P, 
ATmega3290PA, AT90PWM1, ATmega16HVA und ATmega8HVA

unterstützt? So steht es zumindest in dem Handbuch.....das wär ja mau.

Zu dem Interrupt, ja davon bin ich bereits ausgegangen: 0V an Ain0 löst 
Interrupt aus und der AVR schreibt dann Pixel für Pixel in's Bild, aber 
wie gesagt, ziemlich laue Vorstellung die ich da habe. Ich habe mir 
jetzt erstmal nen 2,1"-Mini TFT mit FBAS-Eingang gekauft und muß mal n 
bißchen herum experimentieren was wie eigentlich in so enem Signal 
passiert, dan zerschiess ich mir wenigstens nicht den Fernseher. wenn 
alle Stricke reißen nehm ich halt n2. Prozessor nach dem Beispiel von o. 
g. Link. Ist dann zwar nicht so schön weil nicht selbst entwickelt, aber 
hier geht es ja auch um eine schnelle Lösung und gut.

Autor: Sowieso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche nun die Sync-Signale über den Comparator abzufragen (0V = 
Interrupt) und einen Text (bzw. die Pixel) Bitweise über SPI raus zu 
feuern.
So, und nu bin ich mit BASCOM bei dem Problem timing angekommen.....
Kennt jemand einen Link bzw. sonstige Quelle wo ich eine Übersicht aller 
Bascom-Befehle mit deren benötigten Takten zur Ausführung her bekomme?
Ich hab' mich schon wund gesucht.....

Vielen Dank und Gruß!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario wrote:
> Kennt jemand einen Link bzw. sonstige Quelle wo ich eine Übersicht aller
> Bascom-Befehle mit deren benötigten Takten zur Ausführung her bekomme?
> Ich hab' mich schon wund gesucht.....

Würde mich auch wundern, wenn es dazu etwas gäbe.
Diese Taktzahl kann/wird sich mit jeder neueren Version
des Compilers verändern. Der Entwickler braucht nur einen
neuen Kniff in die Optimierungsstufe des Compilers einbauen,
und schon stimmt nichts mehr.

Wenn du taktgenau arbeiten willst/musst, dann ist Assembler
immer noch das Sicherste.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst im Simulatorfenster von BASCOM sehen (ganz unten am Rand), wie
lange ein Befehl jeweils dauert, wenn Du das Programm schrittweise 
abarbeiten läßt.

MfG Paul

Autor: Sowieso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if abfragen solltest du meiden.

 If Pinb.4 = 1 Then
Gosub Zufall ---------> 5 Takte
End If
 SBIC  pinb,4
 rCall Zufall: ----------3 Takte
Rjmp Main:

 Zufall:

 nop
 ret

Paul Baumann hat recht.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, klar, daran hatte ich nicht gedacht, das ist im Simulator 
natürlich schön zu sehen, danke!
Bzgl. If abfragen: Danke für den Hinweis, bei der Timingabhängigkeit 
werde ich in erster Linie mit den Timern arbeiten und die Pixel über SPI 
(mittels DATA oder BIN-FIle ausgeben, ich denke (und werde es am WE 
testen) das sollte gehen, mal sehen.....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.