How can I set vector adress in project.prm for MC9S12XHZ512, I want to use input capture mode and timer in interrupt.
hi KDN,
please refer attached tn101 for how to implement interrupt for 8/16bit MCU.
Vector number can be found in datasheet vector locations table of MC9S12XHZ512 reference manual.
Count from bottom of the table for the “vector number”. the reset vector is vector number 0 (located at address 0), vector number 1 is located just after the vector 0 (at address 0x2) and so on.
ie Reset = 0 (address is $FFFE), Clock monitor reset = 1, COP watchdog reset = 2 , ...... You can see “Vector Priority” in this table. When the two interrupt occurs, the system will accept the higher priority interrupt.
I also attached a interrupt demo code, it's not for your chip but method is the same for all 16bit MCU.
I think it is simple and readable. Hope it can help you.
Best Regards,
Zhang Jun
=====================================================
this answer is for you. if it helps, please click on "Correct Answer " button. Thanks!
======================================================
I am using processor expert, is that work on that?
hi KDN,
processor expert implements interrupt in different style.
see project "TimerInt", "Capture" under
C:\Freescale\CWS12V5_1\ProcessorExpert\Projects\Test projects.
processor expert defines interrupt vectors table in file vectors.c.for example, capture interrupt function in vector table is "Cap1_Interrupt". then we can write the related interrupt function inside ISR(Cap1_Interrupt)
Best Regards,
Zhang Jun
=====================================================
this answer is for you. if it helps, please click on "Correct Answer " button. Thanks!
======================================================
I have written my code in Cap1_OnCapture(void) , call my ISR(Cap1_interrupt) , but it's not working
if you set a breakpoint inside ISR(Cap1_interrupt), can the code run into there?
How can i set breakpoint
you need set breakpoint in debugger but not editor
I done debugging and check that variable k is not increment, I shown that variable in pic below with circular.
pls try to set k as local variable and cast it as volatile.
volatile int k=0;
Best Regards,
Zhang Jun
=====================================================
this answer is for you. if it helps, please click on "Correct Answer " button. Thanks!
======================================================
I try volatile int k=0; , but not working .
How can i define global variable?
what is DBG trigger error?
when I am using this calculation PE providing DBG trigger error
time_interval=(t[1]-t[0]);
time_period=(float)( time_interval);
frequency= 1/time_period;
how can I use sprintf(buffer,"%d",time_interval); to print double and long integer
what in place of %d?