-
        

Ergebnis 1 bis 8 von 8

Thema: LCD Ausgaben beschleunigen

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469

    LCD Ausgaben beschleunigen

    Anzeige

    Ich weiß nicht, ob das schon mal hier besprochen wurde...
    Kleiner Trick um die LCD Ausgaben von Bascom zu beschleunigen:

    Bascom steuert die LCDs im 4-Bit Mode ja ohne Abfrage des Busy-Bits an (WR =0)
    Das Timing ist "sicher" gewählt, also recht langsam, um das Display nicht zu überfordern.
    Man kann die Ausgaben aber beschleunigen, indem man Bascom "anlügt" was die Quarzfrequenz angeht.
    Dadurch ändern sich allerdings auch alle anderen Timings, also betrifft das zB. die Wait Befehle und die Baudrate.
    Ich habe gute Erfahrungen mit einigen Schaltungen gemacht, die mit 16MHz liefen (MEGA32)

    Das sieht dann zB. für die Baudrate so aus:

    $crystal=8000000 'tatsächlich ist es 16 MHz
    Baud=9600 'tatsächlich ist die Baudrate 19200

    Bis jetzt gab's keine Probleme, weder mit dem Display, noch mit der Schnittstelle.


    Gruß
    Christopher

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Als Workaround ist das wohl ok, weil alles ok ist, was funktioniert.
    Aber die möglichen Side-effekts stell' ich mir schon grausig vor.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    läuft zB. in einer Fernsteuerung die ich gebaut habe perfekt seit über einem Jahr. Ohne Side-Effects. Bei knapp 2800 Zeilen Bascom Quellcode ....
    Und in meinen anderen Projekten läuft's auch perfekt so.
    Ich mache das mittlerweile standardmäßig.

    Wo siehst du Probleme mit Side Effects ?
    Solange man im Kopf hat daß man die Zeiten ändern muß, sehe ich eigentlich keine Probleme.. aber man weiß ja nie.

    Gruß
    Christopher

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Zitat Zitat von chr-mt
    Solange man im Kopf hat daß man die Zeiten ändern muß, ..
    Genauso hab ich's gemeint. Immerhin stimmt kein einzige Waitms. Aber wie ich vorher dazusagte, ein funktionierendes Programm ist ein recht gutes Argument, da sag' ich ja eh nix mehr.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ich habe im bascom-code eine asmroutine zum ansprechen des display reingebaut. ist sogar schneller als mit dein trick.
    mfg pebisoft

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    BASCOM bietet von Haus aus auch die Möglichkeit das Busy-Flag auszulesen.
    Nix gegen deine Lösung. Ich glaube das es funktioniert! Und wenn man im Hinterkopf behält die waitms zu verdoppeln und sonst alles was Zeiten benötigt beachtet ist es auch ok.

    Ich wollte es nur der Vollständigkeit halber erwähnen. LCD4BUSY.LBX und LCD4BUSY.BAS mit Beispielen die Dateien dafür.
    Der Nachteil ist da nur, das wieder eine Leitung mehr benötigt wird!

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Bascom bietet von Haus aus auch die Möglichkeit das Busy-Flag auszulesen.
    Ist mir noch gar nicht aufgefallen...
    Werde es mir mal ansehen.
    Ist warscheinlich auf jeden Fall eleganter als seinen Compiler anzuschwindeln

    Danke für den Tipp

    Gruß
    Christopher

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Es gibt auch die Library LCD4.LIB. Diese arbeitet ohne die zusätzlichen Status - Leitung. Der resultierende Code ist kürzer, da die Daten pro Nibble (4 Bit) in einem auf das Port geschrieben werden und nicht von einer ungeordneten Zuordnung der Daten-Bits auf die LCD-Pins ausgegangen wird.
    Dabei müssen die 4 LCD-Datenleitungen in einem Nibble des Ports verdrahtet sein. Etwas Anpassung an das eigene Equipement ist nötig.
    Dort sind auch die Wartezeiten hardcodiert enthalten wie z.B. Waitms oder @genus(100), welches eine ASM-Compiler Directive darstellt, um eine Codesequenz für 100µSec zu erzeugen.

    Da kannst Du dann die Zeiten soweit verkürzen, solange das LCD sicher arbeitet.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •