PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : simulation von interrupts mit IAR C-SPY-Debugger



anabolik
24.11.2005, 09:34
hallo.
ich möchte ein interrupt welcher immer wieder aufgerufen wird im C-SPY-Debugger von IAR simuliren. wenn ich auf cotrol->interrupt gehe kann ich ja alles nötige einstellen. nun meine frage zu den feldern "Activation Time" und "Repeat Interval".
1) ist da die anzahl von takten oder maschinenzyklen einzustellen? sekunden können es ja nicht sein oder?
2) ist unter "Activation Time" der zeitpunkt ab dem programmstart gemeit oder ab dem aufruf vom interrupt?
habe schon verschiedene varianten ausprobiert, klappt irgendwie nicht.
vielleicht ist mein makro nicht richtig? ich rufe den interrupt in dem ich einen breakpoint nach InitInerrupt setze. im breakpoint wird dann ein weiteres von mir defeniertes makro aufgerufen wo dann __orderInterrupt("0xFFEC", 0, 32, 0, 0, 100); steht. ist doch richtig?
hier mein makro:

CODE:

_Timer3Interrupt(){
__orderInterrupt("0xFFEC", 0, 32, 0, 0, 100);
//__enableInterrupts ();
}

_TimerXInterrupt(){
__orderInterrupt("0xFFF2", 0, 2, 0, 0, 100);
}


// Setup Makros
//-----------------------------------------------------------------------------------------------

execUserReset(){
__clearAllBreaks (); // da beim Neuregestrieren des Makros die alten Breaks bleiben
//__cancelAllInterrupts (); // da beim Neuregestrieren des Makros die alten Interrupts bleiben

__setBreak (".qtl_test.c\\215", "CODE", 1, 1, "1", "TRUE", "FO", "_ADU()");
__setBreak (".qtl_test.c\\637", "CODE", 1, 1, "1", "TRUE", "FO", "_ADU()");

__setBreak (".qtl_main.c\\268", "CODE", 1, 1, "1", "TRUE", "FO", "_ADU()");
__setBreak (".qtl_main.c\\274", "CODE", 1, 1, "1", "TRUE", "FO", "_machin_param_IniTime()");
__setBreak (".qtl_main.c\\276", "CODE", 1, 1, "1", "TRUE", "FO", "_Break()");
__setBreak (".qtl_main.c\\237", "CODE", 1, 1, "1", "TRUE", "FO", "_Timer3Interrupt()");

__setBreak (".qtl_sca2.c\\164", "CODE", 1, 1, "1", "TRUE", "FO", "_TimerXInterrupt()");
__setBreak (".qtl_sca2.c\\176", "CODE", 1, 1, "1", "TRUE", "FO", "_TimerXInterrupt()");
__setBreak (".qtl_int.s31\\249", "CODE", 1, 1, "1", "TRUE", "FO", "");
}