-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Display schneller ansteuern? Wie?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2006
    Beiträge
    15

    Display schneller ansteuern? Wie?

    Anzeige

    Hallo,

    eine Frage zu Bascom und Displays.
    Ich nutze einen ATmega88 mit 8 MHz, Display über 4-Bit Ansteuerung

    Ich muss eine Motordrehzahl auswerten und diese auf einem Display ausgeben. Des Weiteren berechne ich Parameter, die für eine Einspritzanlage zur Verfügung stehen müssen. Soweit funktioniert alles gut.

    Mein Problem:

    Die Übertragung von z.B. 4 Zeichen (Drehzahl) dauert mit der Bascom Routinen „Lcd ...“ laut Simulation fast 5 ms, sowie die Positionierung des Coursers (“Locate x,y”) fast 1ms.
    Dies ist zu lang für meine Aufgaben. Ich habe oft zwischen zwei „Drehzahlimpulsen“, zwischen denen ja auch noch die Berechnungen gemacht werden müssen, nur 5 ms Zeit.

    Gibt es eine Möglichkeit, das ganze schneller zu übertragen (außer 8-Bit) oder ist die Übertragungsgeschwindigkeit vom Display vorgegeben? Kann man vielleicht geschickt „manuell“ programmieren (Assembler)?

    Für Ideen bin ich dankbar!

    Viele Grüße

    Robert

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    Hast du die LCD LCD4lib ausprobiert ?
    Die sollte vielleicht schneller sein.
    Kann aber sein, daß dafür die Pins an einem Port liegen müssen, weiß ich aber nicht, da ich die noch nicht verwendet habe.


    An sonsten, im Notfall, aber äußerst unsauber:
    Crystal auf 4000000 stellen, eventuell auch auf 2000000 stellen
    Bascom berechnet dann die Zeiten anders (kürzer)
    Eventuelle Waits etc sind dann aber auch kürzer und müssten angepasst werden.
    Auch die Baudraten ändern sich dann jeweils, also alles was mit Zeiten zu tun hat.

    Gruß
    Christopher

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2006
    Beiträge
    15
    habe kurz mal in der help drüber gelesen. Da gibts ja auch die LCD4Busy. Habe aber nicht verstanden, wie genau das Display jetzt an den µC angeschlossen werden muss? An einen Port?

    Hat jemand ein Beispiel...?

    Danke!

    Robert

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    23.04.2006
    Alter
    33
    Beiträge
    46
    Hi Robs0412...

    Habe eine 4-Bit Ansteurung in C. Wenn du dich dafür interessierst meld dich.
    Habe fast keine Wartezeiten. Bei wichtigen Operationen check ich kurz das Buys-Bit und fertig.

    lg Cri

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    45
    Beiträge
    294
    Also entweder Du machst Dir die Mühe und setzt den Cursor mit ein paar Codezeilen Assembler quasi von Hand und schickst auch die Daten per Assembler ans Display, oder Du überlegst Dir, ob Du wirklich 200(!) mal in der Sekunde das Display Refreshen willst...

    Ich würde da eher mal den Display Refresh etwas gemütlicher gestallten, denn so schnell gucken kann kein Mensch!
    Das Gegenteil von "gut" ist "gut gemeint"!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2006
    Beiträge
    15
    @Dnerb:
    hast ja recht, werde Display weniger oft aktuallisieren (ist auch augenschonender), aber es muss dennoch so schnell wie möglich fertig werden, da es sich sonst mit anderen Berechnungen und Ausführungen, die Prio haben, in die Quere kommt. Wie gesagt es dauert eben zu lange.

    Würde es also mal mit der lcd4busy probieren wollen. Komme jetzt aber mit der Definition der Pins nicht klar. Bisher waren die so belegt:

    DB4 – DB7 liegen auf C2 – C5
    E ist B5
    RS ist B4

    Für RW wäre jetzt zum Beispiel noch B3 frei (bzw. lege RS auf B3 und RW auf B4, der Reihenfolge wegen)

    In der Anleitung steht zu lcd4busy (Seite 741):

    Const _lcdport =Porta
    Const _lcdddr =Ddra
    Const _lcdin =Pina
    Const _lcd_e = 1
    Const _lcd_rw = 2
    Const _lcd_rs = 3

    Soweit ich verstehe, gilt dieses Beispiel ja nur für diesen 8515.

    Was bedeuten aber genau die einzelnen Zeilen und wie definier ich hier meine belegten Pins (ATmega8?

    Ach so, habe nur eine Bascom Demo, kann ich die lcd4busy.LBX dennoch nutzen?

    Und passiert eigentlich, wenn Daten zum Display gesendet werden und ein Interrupt kommt? Dieser wird sicherlich erst abgearbeitet und dann? Werden dann die Daten zum Display erneut gesendet oder einfach dort weiter gemacht wo pausiert wurde? Kann das ein Textdisplay stören?

    Vielen Dank!

    Robert

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    45
    Beiträge
    294
    Hi Robert,

    wegen der lib, keine Ahnung.

    Wegen dem Interrupt: probier es aus, denke nicht das viel passieren wird. Die LCD Text Displays sind beim Timing recht unkritisch wenns mal etwas länger dauert.

    Gruß Dnerb
    Das Gegenteil von "gut" ist "gut gemeint"!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    36
    Beiträge
    186
    Hi,
    so wie ich die LCD4Busy verstehe müssen alle deine Pins an einen Port
    SO z.B. PORTA
    RS auf PA1
    RW auf PA2
    E auf PA3
    DB 1-4 auf PA4-7
    Ich bin keine Signatur ich mach hier nur sauber

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2006
    Beiträge
    15
    und da ist das Problem!

    Habe ja nun einen mega88 in einem myAVR Board. An dem gehen nur 6 (von 7) nutzbare Anschlüsse eines Ports raus. Port A gibt es ja bei einem 88er gar nicht (nur B/C/D) und von denen habe ich auch keinen komplett frei, da ADCs, Interrupts oder Compareeinheit auf verschiedensten Ports liegen ...

    @chrigri:
    kannst du mal ein Beispiel in C posten (mit busy flag abfrage). Kenn mich damit zwar nicht aus, evtl. versteh ich aber den sinn ...

    Nen "fertigen" Assembler-Schnipsel hat nicht zufällig jemand zum Ausprobieren?

    Grüße

    Robert

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2006
    Beiträge
    15
    und wie könnte ich es "zu Fuß" in Bascom anstellen. Also wie bisher das Display über Bascom initialisieren, dann aber die PINs mit Basic-Code so schalten, dass was brauchbares aufm Display steht.

    Wie ist aber da die Reinfolge der Ansteuerung der Pins am Display? Habe zwar Datenblätter verschiedener Displays, kann mir aber leider daraus nicht entnehmen, wie sowas genau funktioniert (bin zu sehr Laie)

    Grüße

    Robert

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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