- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: alle 250 ms Interrupt mit Timer2 auslösen - geht das?

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    15.09.2004
    Beiträge
    30
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    mach es so wie Vitis
    es schreibt :
    Zähle in der ISR nur die bytevariable hoch und prüfe ob sie
    Größer als (250ms / 16,4ms = ca.) 15 ist, wenn das so ist setzt du die
    Variable zurück und setzt ein Bit .

    Im Hautprogramm fragst du genau dieses Bit ab ob es gesetzt, ist wenn ja
    machst du dein „Ersatz ISR Unterprogramm“ und am Ende Resetest du das Bit wieder
    somit hast du für deine Ersatz ISR wieder fast 250 ms zur Verfügung .


    Natürlich dürfen dann im Hautprogramm nicht Sachen wie
    Wait 2 (oder so) stehen, aber das ist ja sicher auch nicht der Fall .

    Gruß
    HansHans

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

    diese Variante funktioniert - wie gesagt - deshalb nicht, weil das Unterprogramm, das alle 250ms ausgeführt werden soll, länger als der max. Abstand zwischen zwei Interrupts ist. Deshalb kann die Sache mit dem Zähler nicht funktionieren - wie ich ja schon in meinem allerersten Posting schrieb.

    Das Unterprogramm dauert nicht wegen eines Programmierfehlers so lange, sondern weil ich einige (leider zeitraubende) Grafik-LCD Befehle ausführe. Das würde ich gerne lassen, muss es aber im Interrupt tun, weil die Grafikausgabe ansonsten durch den Interrupt gestört würde. Wenn also während des Schreibens aufs LCD ein Interrupt ausgelöst wird, stellt das LCD nur noch Müll dar. Ich muss also dafür sorgen, dass die Darstellung immer komplett abgeschlossen ist, bevor ein Interrupt ausgelöst wird. Interrupts während der Grafikausgabe zu verbieten stellt natürlich auch keine Lösung dar, denn dann stimmt das Timing wieder nicht mehr genau. Ich sah also als einzige Variante das Überhnehmen der LCD-Ausgabe in die Interrupt-Routine. Die Routine würde übrigens knapp 20 ms dauern - also auch nicht so viel länger als der mögl. Interruptabstand...
    Ich machs jetzt ingesamt anders: ich tune nach dem alles fertig ist den Schleifendurchlauf auf exakt 250ms mit waitms und waitus.

    Gruß,
    malthy

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    15.09.2004
    Beiträge
    30
    Also ich verstehe zwar nicht warum man das LCD im Interrupt
    beschreiben muss, ich mach das immer im Hauptprogramm
    wenn ich gerade mal zeit dazu habe. Durch eine
    Interrupt Unterbrechung der LCD Routine sollte sich das LCD nicht
    stören lassen. Das sind ja nur ein paar Takte
    Aber wenn es jetzt so geht ...

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo HansHans!

    ich hätte auch nicht gedacht, dass der Interrupt das LCD stört - ist aber definitiv so. Und das ist der alleinige Grund, warum ich das LCD in der Interrupt-Routine beschreiben wollte...

    Gruß,
    malthy

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    naja, so kann mans auch machen, aber ne andere Variante ists
    die Interrupts während der Ausgabe zu disablen, also
    einfach zu Beginn des refresh disabel interrupts, danach
    wieder enable interrupts ... nicht schön, aber sollte gehen.
    Warum das Display aber durch die Int gestört werden kann
    hängt mir aber dennoch zu hoch.
    Was ists denn für ein Display und wie ists angeschlossen?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    15.09.2004
    Beiträge
    30
    Mir geht das mit deinem Display nicht aus dem Kopf .....
    ist das ein Display ohne Controller wo du selbst das
    Timing und den refresh machen musst ?
    (Ich meine jetzt den refresh obwohl sich der Bild Inhalt
    gar nicht verändert hat )

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

    naja, wie gesagt, Interrupts während der Grafikausgabe verbieten macht auch nicht so viel Sinn, weil dann das Timing wieder ungenau wird...
    Es wäre natürlich super, wenn mir noch jemand die Sache mit dem LCD erklären könnte - ich verstehe es nämlich auch nicht so recht. Ich verwende ein 240*128 Grafik-LCD mit einem T6963C als Controller, es ist entsprechend BASCOM-Hilfe an meinen M32 angeschlossen (Controll- und Dataport) Zur Ansteuerung verwende ich ausschließlich die BASCOM-Befehle, vor allem Showpic. Ohne Interrupts funktioniert alles super, mit Interrupts zeigt das Display nur noch Müll...

    Gruß,
    malthy

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    hmmm, dem Datenblatt nach dürfte es eigentlich keine
    Probleme mit den Interrupts geben, der Controller ist nicht
    zeitkritisch. Möglich, das es mit den Einstellungen
    für Stack und Frame zutun hat, das sich dann eben was überschneidet.

    Um genauere Analyse vorzunehmen müsste man den Code sehen.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

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

    ich werde mal versuchen, ein möglichst reduzierten und dadurch durchsichitgen Code zu erzeugen, bei dem das Problem auftritt. Das könnte einen Tag dauern, habe gerade andere Dinge an den Hacken. Was ich vielleicht noch nachtragen könnte: Die Showpic Aufrufe finden in einer Do-Loop-Schleife sehr schnell hintereinander statt, was letztlich programmiertechnische Gründe hat. Im Endeffekt wird also kontinuierlich aufs LCD geschrieben.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen