- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 1 von 1

Thema: Interrupts schuld an GLCD/Variablen Fehler

  1. #1

    Frage Interrupts schuld an GLCD/Variablen Fehler

    Anzeige

    E-Bike
    Hi,
    das ganze ist jetzt etwas komplizierter.


    Ich habe einen Mega128 im Einsatz, das ganze ist eine Lüftersteuerung für meinen PC.
    Der Prototyp ist seit einem guten halben Jahr im Einsatz und funktioniert tadellos.

    Die 2. Version steht hier vor mir auf dem Schreibtisch und funktioniert ebenfalls perfekt,
    solange ich die Lüftergeschwindigkeit nicht abfrage.

    Die Int0 - Int3, Int6 und Int7 sind neu dazugekommen um die Flanken vom Fan festzustellen.

    Es wird immer nur ein Lüfter abgefragt und das auch nicht ständig,
    sondern alle 30sec ein kompletter Durchlauf.

    Code:
    ' SETFAN Speedcheck
    Macro SETFAN
       tFan = 5 : flag.1 = 1 : FANSIG = 0
       Select Case fanchannel
          'Config GREEN = Output
          Case 1:
             GIFR.IntF3 = 1
             Enable Int3
          Case 2:
             GIFR.IntF2 = 1
             Enable Int2
          Case 3:
             GIFR.IntF1 = 1
             Enable Int1
          Case 4:
             GIFR.IntF0 = 1
             Enable Int0
          Case 5:
             GIFR.IntF7 = 1
             Enable Int7
          Case 6:
             GIFR.IntF6 = 1
             Enable Int6
       End Select
       cFan = 0
    End Macro
    
    Macro GETFAN
    
          flag.1 = 0
          Disable Int3
          Disable Int2
          Disable Int1
          Disable Int0
          Disable Int7
          Disable Int6
          glcd.0 = 1
          'Shift FANSIG , left , 5
          FANSPEED(fanchannel) = FANSIG * 50
          'Shift FANSPEED(fanchannel) , right , 1 , SIGNED
          Incr fanchannel
          If fanchannel > 6 then
             fanchannel = 1
             tFan = 150
          End If
    End Macro
    
    '##################################################
    ' FANSIGNAL INTERRUPT
    '##################################################
    FANISR:
       incr FANSIG
    Return
    Die ganze Sache funktioniert eine ganze Weile gut,
    bis die Anzeigeroutine durchdreht.

    Code:
    '##################################################
    SUB MENUMAIN                                                ' Haupt Anzeige
       If rebuild = 1 then
          CLS : rebuild = 0 : TempA = PWM0
       End If
    
       For ch = 1 to 6
    
          If glcd.2 = 1 then
             LEISTUNGSANZEIGE                                   ' MACRO Leistung
             TEMPERATURANZEIGE                                  ' MACRO Temperatur
             If ch = 6 then glcd.2 = 0
          End If
          DREHZAHLANZEIGE                                       ' MACRO Drehzahl
       Next ch
    '##################################################
    In diesem ProgTeil wird nacheinander jeder der 6 Kanäle auf seiner Position angezeigt, wenns dann passiert, zählt die For ch = 1 to 6 aber nicht hoch, sondern bleibt 0 obwohl da 1 als Startwert steht.
    Während der gesamten Anzeigeroutine sind Interrupts global DISABLED.

    Wenn die Drehzahlerfassung auskommentiert ist, kommt es NICHT zu Fehlern.

    Ich habe den FAN Teil jetzt schon zig mal umgeschrieben, andere Zeiten benutzt, nur 2 Flanken ausgewertet (1 Umdrehung) und aus der Dauer gerechnet, alle Stacks erhöht (verdoppelt).
    Das Programm ist im wesentlichen das selbe das in meinem PC fehlerfrei arbeitet.

    Ich komm nicht drauf woran das liegen könnte


    EDIT: Niemand eine Idee?
    Geändert von sBronco (29.07.2011 um 11:30 Uhr)

Ähnliche Themen

  1. sind ALLE Interrupts wieder ON nach Enable Interrupts?
    Von sBronco im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.07.2011, 15:58
  2. AtMega2560 reagiert nicht. Falsche Fusebit schuld?
    Von Gravits im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 14.04.2009, 16:41
  3. Verfuset ohne eigene Schuld?
    Von rehbär im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 30.12.2008, 17:58
  4. Programmierpoblem (Fuses schuld?)
    Von Spongebob85 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 03.10.2007, 15:19
  5. RN Control ISP Probleme? Was kann schuld sein?
    Von Axi im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 19
    Letzter Beitrag: 20.09.2006, 11:08

Berechtigungen

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

LiFePO4 Speicher Test