Halte ich für ausgeschlossen, dass das Probleme gibt, jedenfalls nicht bei einer Handvoll Variablen - ich habe aber nur sehr, sehr wenig Erfahrung mit PowerBasic! Vielleicht kann da einer der Basic-Profis was sagen...Nightflyer hat geschrieben:Super vielen Dank für das Beispiel, genau sowas habe ich gesucht.
Habe auch gleich einige Versuche damit gemacht. In der neuen ISR habe ich die Berechnung der Frequenz und das setzten des Output Bits am LPT eingefügt, und funktioniert auch einwandfrei. Ausserhalb der ISR kann ich nun eine Frequenz festlegen, und diese wird dann am LPT ausgegeben. Genau so soll es sein !
Nun habe ich trotzdem noch ein paar Fragen:
Ausserhalb der ISR hab ich einer variable FREQUENZ als SHARED deklariert, damit ich in der ISR darauf zugreifen kann. In der ISR selber wurde jedoch per ASM einen lokalen STACK angelegt. Können irgendwelche Probleme entstehen, mit dem lokalen Stack und der SHARED Variable von Powerbasic ? Bis jetzt funktionierts, frage aber trotzdem...
Du mußt innerhalb Deiner ISR die alte ISR aufrufen, und zwar so, dass sie wieder mit ca. 18.2 Mal die Sekunde aufgerufen wird.Nightflyer hat geschrieben: Durch die neue Frequenz, läuft natürlich auch die Systemuhr schneller.. Wie genau muss ich dies zurecht biegen, damit die Uhr trotzdem stimmt ?
Wahrscheinlich sicherst Du die alte ISR so:
Code: Alles auswählen
GetInterruptVector &H08, OldAddr
SetInterruptVector &H08, CODEPTR32(ClockISR)
z.B. so:
Code: Alles auswählen
DIM OldIntCounterBase AS SHARED DWORD
DIM OldIntCounter AS SHARED DWORD
DIM ISRFrequenz AS SHARED WORD
GetInterruptVector &H08, OldAddr
SetInterruptVector &H08, CODEPTR32(ClockISR)
SetInterruptVector &H68, OldAddr
OldIntCounterBase = 1193180 / ISRFrequenz
OldIntCounter = OldIntCounterBase
Code: Alles auswählen
** Your Basic code goes here **
IF OldIntCounter = 0 THEN
OldIntCounter = OldIntCounterBase
! int &H68
END IF
DECR OldIntCounter
Aber vielleicht postest Du einfach Deine ISR mal hier im Forum. Dann können sich das auch mal echte Basic-Profis anguggen. Ich kann nämlich gar kein Basic mehr
Edit: Viele Nächtliche Fehler ausgebessert... ..und nochmal Fehler....