Hallo,
komme nicht mehr weiter.
Möchte den Komparator Interrupt nutzen.
Registereintrag müsste gehen:
Procedure pInit_ACA;
Begin
ACACTRLA := %1111 1001; // IRmode rise, Ilev high, HSm high, HYSm no, E on.
ACAAC0MUXCTR:= %0011 0101; // -, Pin6, DAC
End pInit_ACA;
Wie deklariere ich das mit der Einsprungadresse?
Und dort mit einem RJMP zur eigentlichen Interruptabarbeitung?
Meine Assemlerkenntisse sind sehr dürftig.
Könnte in etwa so gehen?
Bzw. was sollte verbessert, geändert werden, daß es funktioniert?
--------
$0088, ACA_INT_base = Analog Comparator on Port A interrupt base
$008A,
$008C,
---------
.org 0x088
RJMP INTERRUPT_ACOMP
--------
INTERRUPT_ACOMP:
asm;
PUSH _ACCALO
PUSH _ACCAHI
PUSH _ACCBLO
PUSH _ACCBHI
endasm;
excl(AD_CNV_1_2); // ext. AD-Wandler 1 u. 2 starten
incl(AD_CNV_1_2);
asm;
POP _ACCBHI
POP _ACCBLO
POP _ACCAHI
POP _ACCALO
reti
endasm;
--------
Danke
komme nicht mehr weiter.
Möchte den Komparator Interrupt nutzen.
Registereintrag müsste gehen:
Code
Procedure pInit_ACA;
Begin
ACACTRLA := %1111 1001; // IRmode rise, Ilev high, HSm high, HYSm no, E on.
ACAAC0MUXCTR:= %0011 0101; // -, Pin6, DAC
End pInit_ACA;
Wie deklariere ich das mit der Einsprungadresse?
Und dort mit einem RJMP zur eigentlichen Interruptabarbeitung?
Meine Assemlerkenntisse sind sehr dürftig.
Könnte in etwa so gehen?
Bzw. was sollte verbessert, geändert werden, daß es funktioniert?
Code
--------
$0088, ACA_INT_base = Analog Comparator on Port A interrupt base
$008A,
$008C,
---------
.org 0x088
RJMP INTERRUPT_ACOMP
--------
INTERRUPT_ACOMP:
asm;
PUSH _ACCALO
PUSH _ACCAHI
PUSH _ACCBLO
PUSH _ACCBHI
endasm;
excl(AD_CNV_1_2); // ext. AD-Wandler 1 u. 2 starten
incl(AD_CNV_1_2);
asm;
POP _ACCBHI
POP _ACCBLO
POP _ACCAHI
POP _ACCALO
reti
endasm;
--------
Danke