-         

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

Thema: LCD Ausgabe macht uC langsam?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    30
    Beiträge
    263

    LCD Ausgabe macht uC langsam?

    Anzeige

    Hallo!
    Wenn ich einfache Sachen über mein LCD ausgebe wird der uC extrem lahm!

    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Portb.0 = Output
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    Cursor Off
    Cls
    Do
      Toggle Portb.0
      Locate 1 , 1 : Lcd "1,22929"
    Loop
    End
    Die LED toggelt gerade mal mit 50Hz! Ohne die Ausgabe an das Display sind es 670kHz.

    Hat Jemand ne Ahnung wieso die Ausgabe den uC so langsam macht?
    uC im Eimer? Oder gibt das Display irgendwas zurück?
    Mit 50Hz kann mn ja nicht mehr viel anfangen


    Gruss

    Alex[/code]

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Das ist bekannt ,damit das LCD nicht vom Speed überfahren wird.

    Wenn Du den Quarz viel langsamer angiebst wird schneller.

    Testen was geht und bei den Baud berücksichtigen.

    Gento

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    30
    Beiträge
    263
    Baudrate spielt dabei eine Rolle?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    in einer loop schleife aufs display draufdonnern ist auch nicht sonderlich geschickt ... wie schnell willst du denn da änderungen wahrnehmen?

    ein display braucht seine zeit und meldet wenn es nicht bereit ist "busy" zurück

    hatte das mal versehentlich in einem c-code, da hat das display dann nur noch wirres zeug angezeigt

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    56
    Beiträge
    2.543
    hi,

    Dein Display hat dann auch eine Darstellungs-Frequenz von 50 Hz.

    Das muß sicherlich nicht sein.
    Für eine einfache Anzeige reicht ein kleines Unterprogramm welches man z.B: regelmäßig über Interrupt oder unregelmäßig bei Bedarf anspringt um das Display mit den neuen Daten zu füttern.

    Dann verbleibt Dir mehr Rechenzeit für andere Aufgaben.

    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    30
    Beiträge
    263
    Moin,
    Wenn ich die Ausgabe in eine 100Hz Timerroutine packe, ändert sich nichts am Problem. Ist evlt das Display im eimer bzw gibt es etwas zurück?

    Gruss
    Alex

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    Zitat Zitat von Brantiko
    Moin,
    Wenn ich die Ausgabe in eine 100Hz Timerroutine packe, ändert sich nichts am Problem. Ist evlt das Display im eimer bzw gibt es etwas zurück?

    Gruss
    Alex
    hoi,
    nee, vermutlich ist gar nix kaputt, sondern das display einfach zu lang beschäftigt, und dann wird halt gewartet, bis es nicht mehr busy ist, und das dauert.
    mfg jeffrey

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    30
    Beiträge
    263
    Okay, aber wie kann ich in ein Zeitkritisches Porgramm ein Display implementieren ohne dass alles aus dem Ruder läuft?

    Gruss

    Alex

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377
    Zitat Zitat von Brantiko
    Okay, aber wie kann ich in ein Zeitkritisches Porgramm ein Display implementieren ohne dass alles aus dem Ruder läuft?
    Hallo Alex!

    Indem du alles Zeitunkritische in die Mainloop verlagerst und alles was zeitkritisch ist in Timer-Interrupthandler (Interrupt Service Routine, ISR).

    Das LCD muss auf jeden Fall in der Mainloop angesteuert werden. So langsame Befehle haben in einer ISR nichts **absolut gar nichts** in einer ISR zu suchen.

    Tausche deine Programmlogik um. Lasse die LEDs in einer ISR blinken und die LCD-Ansteuerung kommt in die Mainloop.

    Achte darauf, dass die ISR nicht lange dauert. Alles was länger dauern kann, muss in die Mainloop.

    mfg
    Gerold
    :-)

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Alex,
    ... wie kann ich in ein Zeitkritisches Porgramm ein Display implementieren ohne dass alles aus dem Ruder läuft?
    Da die LCD langsam sind, muss man sich in der Programmlogik überlegen, was man anzeigen will.
    Beispiel: Wenn das Display eine Uhr darstellt, wird es nur dann neu beschrieben, wenn sich die Sekunde ändert.
    Genauso must du definieren, was dargestellt werden soll. Evtl. kann man auch nur einzelne Zahlen oder Zeichen aktualisieren und nicht das ganze LED neu beschreiben.

    Gruß Dirk

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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