Hallo @ all,
Premiere .... das erste mal, daß ich einen Interrupt verwende .... hab ich bisher nie gebraucht.
Ich würde nur gerne von euch wissen, ob das so richtig ist.
Ich verwende einen XMega256A3 @ 32 Mhz und am PortD,0 ist ein Taktgeber mit recht genauen 1Hz angeschlossen. Ich möchte nur über den Interrupt an diesem Pin eine LongWord-Variable hoch zählen. Das ist eigentlich alles. Nebenher wird alle 200ms ein Display (98x64 Pixel) refresht.
LongWord habe ich gewählt, da ich nicht weiß, wie lange die Schaltung später mal nonstop in Betrieb ist. So kann das aber 4294967295 Sekunden lang sein. Das sind 136.19 Jahre .
Import PCIntD, .....;
Define
PCintDmask = $01; // %00000001 $01--> IRQ PINS --> PD0
PCintDedge = $01; // %rising edge PortD,0
Procedure PCintD0;
Begin
PushAllRegs;
Inc(TimeTick1);
PopAllRegs;
End PCintD0;
Wenn ich das Push/PopAllRegs weg lasse, hängt das Programm sofort. So wie es oben ist, läuft es (anscheinend). Kann ich das so lassen oder kann ich was besser machen?
Die Variable TimeTick1 wird im Programm weiter verwendet (klar eigentlich) um eine Zeit zu messen.
Gruss
Harry
Premiere .... das erste mal, daß ich einen Interrupt verwende .... hab ich bisher nie gebraucht.
Ich würde nur gerne von euch wissen, ob das so richtig ist.
Ich verwende einen XMega256A3 @ 32 Mhz und am PortD,0 ist ein Taktgeber mit recht genauen 1Hz angeschlossen. Ich möchte nur über den Interrupt an diesem Pin eine LongWord-Variable hoch zählen. Das ist eigentlich alles. Nebenher wird alle 200ms ein Display (98x64 Pixel) refresht.
LongWord habe ich gewählt, da ich nicht weiß, wie lange die Schaltung später mal nonstop in Betrieb ist. So kann das aber 4294967295 Sekunden lang sein. Das sind 136.19 Jahre .
Code
Import PCIntD, .....;
Define
PCintDmask = $01; // %00000001 $01--> IRQ PINS --> PD0
PCintDedge = $01; // %rising edge PortD,0
Procedure PCintD0;
Begin
PushAllRegs;
Inc(TimeTick1);
PopAllRegs;
End PCintD0;
Wenn ich das Push/PopAllRegs weg lasse, hängt das Programm sofort. So wie es oben ist, läuft es (anscheinend). Kann ich das so lassen oder kann ich was besser machen?
Die Variable TimeTick1 wird im Programm weiter verwendet (klar eigentlich) um eine Zeit zu messen.
Gruss
Harry