- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: Interrupt stört Grafik-LCD-Darstellung. Abhilfe möglich?

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379

    Interrupt stört Grafik-LCD-Darstellung. Abhilfe möglich?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen!

    ich habe folgendes Problem: ich löse per timer0 in festen zeitlichen Abständen einen Interrupt aus, in dem dann ein Unterprogramm ausgeführt wird. Das klappt soweit auch tedellos. Allerdings schreibe ich im Hauptprogramm mittels der von Bascom zur Verfügung gestellten Befehle permanent etwas auf ein Grafik-LCD (240*128 Pixel, Controller T6963). Der Interrupt stört nun augenscheinlich die Darstellung auf dem LCD, denn dieses zeigt nur noch sich ständig ändernden Müll ("Karomuster", wilde Zeichenfolgen). Kann mir 1.) jemand erklären, was da überhaupt vor sich geht und kennt 2.) jemand eine Möglichkeit, wie ich das unterbinden kann? Wollte zumindest mal gefragt haben, bevor ich mich damit abfinde...

    Vielen Dank!
    malthy

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    Die Übertragung vom µC zum Display kann nie so schell sein wie der Controller selbst. Muss denn permanent etwas dargestellt werden?
    Wenn zwischen den Übertragungen etwas Zeit wäre, so 30 mS oder so
    dann wär das doch akzeptabel.
    Kürzere Darstellungen kannst du mit dem Auge doch gar nicht wahrnehmen.
    Es gibt in Bascom eine .lib mit der diese zeitkritische Anwendung ertschärft werden kann
    lcd4busy oder so.

    MFG

    Bertl

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo,

    eigentlich will ich nur exakt alle 250 ms ein Unterprogramm anspringen. Währenddessen kann auf dem LCD alles mögliche passieren. Es würde im Prinzip genügen, das LCD seltener (1/sec) upzudaten. Da die LCD-Ausgabe abhängig ist von Benutzerreaktionen (Tastendruck u.ä.), könnte es aber sein, dass der Interrupt dennoch gerade angesprungen wird, während das Hauptprogramm auf dem LCD was ändern möchte. Und dann würde sich wiederrum Chaos ergeben (sorry, wenn ich mich nicht sonderlich klar ausgedrückt habe...). Ggf. muss ich die Sache doch ohne Interrupts lösen, und alles sauber sequentiell abgearbeiten, vielleicht mit Waitms das Timing einstellen...

    Dank&Gruß,
    malthy

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Zur Not könntest Du während den LCD-Befehlen global die Interrupts sperren, dann kann da nix passieren, und die inzwischen aufgetretenen IRQs werden anschliessend ausgeführt.

    Mit Wait irgendwas Timen ist noch ungünstiger, da in dieser Zeit der AVR überhaupt nix anders machen kann, ausser IRQs !

    @bertl100
    Die GrafikLCDs arbeiten standardmässig mir der Busy-Abfrage (falls vorhanden), die lcd4busy ist nur für TextLCDs.

Berechtigungen

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

Solar Speicher und Akkus Tests