![]() |
|
#1
|
|||
|
|||
|
Forth IRQ High Level Handler
Hi all,
I have an older HC11 engine running Version 3.5E. I'm writing a new application that will require interrupt driving. So of course I am starting with the example application. I have attached it below. What I find when I am downloading it to the HC11 is that when I come to the vector table where LO-LEVEL-IRQRTN is inserted, the CPU reboots. Any ideas?
__________________
Chris Lirakis |
|
#2
|
|||
|
|||
|
The forum does not take any attachment file. If your file is small, you can copy and paste it here. If it's a large file, email me at nmitech@newmicros.com, i will find a place to put it for download if necessary.
|
|
#3
|
|||
|
|||
|
code snippet
Hi, Thanks for the advice. I'll cut and paste and see how it goes.
( irq_enable ) ( This series of words/proceedures was stolen from the manual ) ( for the UM-MAX Max-FORTH Users Manual, page 84 ) ( ) ( Modified By Reason ) ( -------- -- ------ ) ( 04-Jan-02 CBL Original ) ( -------------------------------------------------------------- ) HEX : HI-LEVEL-IRQRTN ( HANDLE EXT PIN IRQ'S ) ( Put our code here ) ; ( ----------------------------- ) CODE LO-LEVEL-IRQRTN ( CC C, ' HI-LEVEL-IRQRTN CFA , ( LDD # CFA-OF-HI-LEVEL-IRQRTN ) ( BD C, ATO4 , ( JSR ATO4 ) 3B C, ( RTI ) END-CODE ( ----------------------------------- ) CODE-SUB CLI 0E C, ( CLI ) 39 C, ( RTS ) END-CODE ( --------------------------------------- ) CODE-SUB SEI 0F C, ( SEI ) 39 C, ( RTS ) END-CODE ( --------------------------------------- ) VARIABLE VEC-TABLE -2 ALLOT 7E C, FFFE @ , ( B7BF SCI SER SYS ) 7E C, FFFE @ , ( B7C2 SPI SER ) 7E C, FFFE @ , ( B7C5 PLS ACC OVFL ) 7E C, LO-LEVEL-IRQRTN @ , ( B7C8 PLS ACC EDGE ) 7E C, FFFE @ , ( B7CB TMR OVERFLOW ) 7E C, FFFE @ , ( B7CE TMR OUT CMP 5 ) 7E C, FFFE @ , ( B7D1 TMR OUT CMP 4 ) 7E C, FFFE @ , ( B7D4 TMR OUT CMP 3 ) 7E C, FFFE @ , ( B7D7 TMR OUT CMP 2 ) 7E C, FFFE @ , ( B7DA TMR OUT CMP 1 ) 7E C, FFFE @ , ( B7DD TMR IN CAP 3 ) 7E C, FFFE @ , ( B7E0 TMR IN CAP 2 ) 7E C, FFFE @ , ( B7E3 TMR IN CAP 1 ) 7E C, FFFE @ , ( B7E6 REAL TIME ) 7E C, FFFE @ , ( B7E9 IRQ ) 7E C, FFFE @ , ( B7EC XIRQ ) 7E C, FFFE @ , ( B7EF SWI ) 7E C, FFFE @ , ( B7F2 OP-CODE TRAP ) 7E C, FFFE @ , ( B7F5 COP FAILURE ) 7E C, FFFE @ , ( B7F8 CLK MON ) HERE CONSTANT VEC-TABLE-END ( -------------------------------------------------- ) : VEC-INIT ( CHECK AND MOVE VECTORS IF NECESSARY ) VEC-TABLE-END VEC-TABLE - 0 ( RANGE ) DO B7BF I + C@ VEC-TABLE I + C@ = NOT IF VEC-TABLE I + C@ B7BF I + ." ." EEC! THEN LOOP ; ( ------------------------------------------------- ) : ENABLE-IRQ'S VEC-INIT CLI ;
__________________
Chris Lirakis |
|
#4
|
|||
|
|||
|
Add a TICK (') in front of the interrupt WORD, ' LO-LEVEL-IRQRTN in the vector table.
( --------------------------------------- ) VARIABLE VEC-TABLE -2 ALLOT 7E C, FFFE @ , ( B7BF SCI SER SYS ) 7E C, FFFE @ , ( B7C2 SPI SER ) 7E C, FFFE @ , ( B7C5 PLS ACC OVFL ) 7E C, ' LO-LEVEL-IRQRTN @ , ( B7C8 PLS ACC EDGE ) 7E C, FFFE @ , ( B7CB TMR OVERFLOW ) ...... ...... |
|
#5
|
|||
|
|||
|
Thanks!..
Thank you for your help.
__________________
Chris Lirakis |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|