This is a reduced code-example that demonstartes the problem :
Code: Select all
program mysterie;
var mymsecs : longint;
procedure ms_tick_clock; org $22;
begin
TMR3 := 0;
IFS0.7 := 0; // clear flag
inc(mymsecs);
end;
procedure init;
begin
trisb := 0;
// now enable TMR3 as tick generator
mymsecs := 0;
PR3 :=100; // interrupt is generated after PR3 TCY
IPC1.12 := 1; // Interrupt priority level 1
TMR3 := 0;
T3CON := %1000000000000000; // start Timer3
IEC0.7 := 1; // enable timer3 interrupts
end;
begin
init;
while true do
begin
delay_ms(5000); // should wait for 5 full seconds !
latb := latb xor 1;
end;
end.