-         

Ergebnis 1 bis 5 von 5

Thema: interrupt timer crash

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.01.2006
    Beiträge
    101

    interrupt timer crash

    Anzeige

    Hallo


    in einem Projekt verwende ich den Timer interrupt der M-Unit 2.0 mit dem OS 2.03.
    Das Problem ist, dass der interrupt etwa 3 Sekunden lang ausgeführt wird, aber dann nicht mehr.

    Verwendet habe ich verschiedene Compiler Versionen(u.a. basicpp2.1.

    Mit einer älteren Version klappt es (ich weiß nicht genau welche das war)

    Vielleicht hat jemand eine Idee, bin dankbar für Hilfen

    Gruß

    Jörn Arne

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163

    Re: interrupt timer crash

    Zitat Zitat von Jörn Arne
    Hallo


    in einem Projekt verwende ich den Timer interrupt der M-Unit 2.0 mit dem OS 2.03.
    Das Problem ist, dass der interrupt etwa 3 Sekunden lang ausgeführt wird, aber dann nicht mehr.

    Verwendet habe ich verschiedene Compiler Versionen(u.a. basicpp2.1.

    Mit einer älteren Version klappt es (ich weiß nicht genau welche das war)

    Vielleicht hat jemand eine Idee, bin dankbar für Hilfen

    Gruß

    Jörn Arne
    Hallo....
    Kannst du das Programm mal posten?
    ciao.....

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.01.2006
    Beiträge
    101

    Programm

    Hallo

    hier mal ein kleines Testprogram, die Interrupt routine hab ich 1:1 aus meinem Projekt kopiert
    Das eigentliche wäre zu umfangreich (auch viele Import Einträge)

    ;---------------------------

    interrupt timerInterrupt


    define secondthreadtimer word[31]
    define activesecondthread as bit[251]

    'interrupt to timer
    config2.Init
    config2.put 00000001b
    config2.off



    #init
    'hier steht das eigentliche Programm
    'Der timer wird dazu benutzt um Display ausgaben zu erledigen (Uhr Zeit), Hintergrundbeleuchtungen zu schalten, und u.a. als Abschalt-timer
    'die Variable "Activesecondthread" wird über if Blöcke abgefragt und dem entsprechend die oben gennanten Aufgaben ausgeführt
    'Das hat mit dem alten compiler immer ganz gut geklappt
    pause 1

    goto init

    '-------------------------------------interrupt-----------------------------
    #timerInterrupt
    Activesecondthread = off

    if (secondthreadtimer + 50 <= timer) then
    beep 20,1,0 'zum testen

    Activesecondthread = on

    secondthreadtimer = timer

    end if

    return interrupt


    ;-----------------------------------------

    'nach etwa 1 Sekunde hört man keinen Ton mehr.
    'im Normalfall ist der Beep-Befehl auch auskommentiert (funktionslos)



    Jörn

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163

    Re: Programm

    Zitat Zitat von Jörn Arne
    Hallo

    hier mal ein kleines Testprogram, die Interrupt routine hab ich 1:1 aus meinem Projekt kopiert
    Das eigentliche wäre zu umfangreich (auch viele Import Einträge)

    ;---------------------------

    interrupt timerInterrupt


    define secondthreadtimer word[31]
    define activesecondthread as bit[251]

    'interrupt to timer
    config2.Init
    config2.put 00000001b
    config2.off



    #init
    'hier steht das eigentliche Programm
    'Der timer wird dazu benutzt um Display ausgaben zu erledigen (Uhr Zeit), Hintergrundbeleuchtungen zu schalten, und u.a. als Abschalt-timer
    'die Variable "Activesecondthread" wird über if Blöcke abgefragt und dem entsprechend die oben gennanten Aufgaben ausgeführt
    'Das hat mit dem alten compiler immer ganz gut geklappt
    pause 1

    goto init

    '-------------------------------------interrupt-----------------------------
    #timerInterrupt
    Activesecondthread = off

    if (secondthreadtimer + 50 <= timer) then
    beep 20,1,0 'zum testen

    Activesecondthread = on

    secondthreadtimer = timer

    end if

    return interrupt


    ;-----------------------------------------

    'nach etwa 1 Sekunde hört man keinen Ton mehr.
    'im Normalfall ist der Beep-Befehl auch auskommentiert (funktionslos)



    Jörn
    Hallo....
    in diesem Fall liegt es am Beep ! Die Interruptroutine muss verlassen
    werden bevor der nächste Interrupt kommt. -> Beep dauert zu lang.
    Was natürlich nicht die Ursache für das Problem in deinem Programm
    ist, da der Beep ja auskommentiert ist !?

    Versuch noch mal ein Programm mit diesem Problem zu posten.
    ciao......

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.01.2006
    Beiträge
    101
    Hallo!

    Ich habe noch einmal ein Testpogramm gebastelt, das hat erst auch nicht funktioniert, aber ich habe mir den IF Block angesehen, das Problem scheint an einer Klammer gelegen zu haben:

    vorher:
    if (secondthreadtimer + 50 <= timer) then

    nachher:
    if ((secondthreadtimer + 50) <= timer) then

    der ältere compiler hat das geschluckt, deshalb meine Verwirrung...
    das werd ich dann mal in meinem Projekt ausprobieren....

    aber trotzdem vielen Dank

    Gruß
    Jörn

Berechtigungen

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