Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/05/05 22:05
Read: times


 
#84420 - Optimizing ISR
Dear all members,
I have this piece of code in assembly which is an ISR. If I'm not mistaken then it take approximatelly 282us to complet the task at 12MHz sysclk. However I'd like to make it faster but still preserve the functionality (in this case generating a chain of 5 firing pulses precisely 30us on and 20us off). Is there any other approachs that can optimize this to make it faster and take less MCU resource?
The reason I'm asking because I'm experiencing some sort of problem as "missed-firing" in an application where I need to control 2 pair of SCRs. It only occurs when I run both pair at the same time, and only miss firing on second pair.If I run one pair at the time then it's OK.
I think the ISR take too long so the control loops miss something
The device is 87C552 but I'm running Emulator now.
I use only Bank 0 and ISRs don't do any thing that related to ACC or PSW, so I don't use PUSH and POP inst.
I use Timer 2 CT0 for Phase detect, and CM0, CM1 for generating firing pulses
Here is the ISRs:

COM0:	MOV 44H,#05H		; 1
CONY1:  SETB P4.0		; 1 - Pulses on
        MOV 45H,#0FH		; 1
	DJNZ 45H,$		; 2 x 15 = 30us
        CLR P4.0		; 1 - Pulses off
        MOV 46H,#0AH		; 1        
	DJNZ 46H,$		; 2 x 10 = 20us
        DJNZ 44H,CONY1		; (5 x 54) + (2 x 5) = 280us  
        CLR TM2IR.4		; 1 	      
        RETI			; Total = 282us

COM1:	MOV 47H,#05H		; Load ram @47H with 5 Hex
CONY2:  SETB P4.1		; Pulses on
        MOV 48H,#15		; Load ram @48H with 15        
	DJNZ 48H,$		; Loop here 15 times
        CLR P4.1		; Pulses off
        MOV 49H,#10		; Load ram @49H with 10        
	DJNZ 49H,$		; Loop here 10 times
        DJNZ 47H,CONY2		; Loop back
        CLR TM2IR.5		; Enable interrupt CM1
        RETI			; Return from interrupt


And here is the config of my SCRs:
 

					            X----------------------------X
				         X----------|  INDUCTIVE LOAD - FIELD A  |--------(+)------------------(+)		
				      	 |          X ---------------------------X	   |			|     							
		||X~~~~~~~~(AC1)200Vac	 |					 	   |			|			
	(X)~~~~X||C			 |					 	   |			|			
	       C||C			 |					 	   | /			| /			
               C||C			 |					        -------		     -------			
	       C||C			 |					 	  / 		       / 			
	       C||C			 |					         /A 1		      /A 2			
	       C||C	        0Vac	 |		        			-------		     -------							
      480Vac   C||X~~~~~~~~~~~~~~~~~~~~~~X						   |			|			
	       C||C	       		 |					 	   |			|			
	       C||C			 |					 	   |			|			
	       C||C			 |					 	   | 			|			
	       C||C 			 |					         (AC1)		      (AC2)  					
	       C||C			 |					 	   |			|     							
	       C||C			 |					 	   |			|			
	(X)~~~~X||C			 |					 	   |			|			
	        ||C~~~~~~~~(AC2)200Vac	 |					 	   | /			| /			
					 |					        -------		     -------			
					 |					 	  / 		       / 			
					 |					         /B 1		      /B 2			
					 |					        -------		     -------						
					 |					 	   |			|			
					 |					 	   |			|			
					 |					 	   |			|			
				         |          X ---------------------------X 	   | 			|			
				         X----------|  INDUCTIVE LOAD - FIELD B  |--------(-)------------------(-)
				                    X ---------------------------X				


	This is Dual config and firing sequence will be
	A1 and A2 on for motor A and/or
	B1 and B2 on for motor B

Any input/suggestions would be greatly appreciated.

Regards,
T.L

List of 10 messages in thread
TopicAuthorDate
Optimizing ISR            01/01/70 00:00      
   Delay loop inside ISR=no-no            01/01/70 00:00      
      Delay in ISR            01/01/70 00:00      
   re-sched ISR            01/01/70 00:00      
   Timing ISR            01/01/70 00:00      
      ISR            01/01/70 00:00      
   More thoughts            01/01/70 00:00      
      More thought            01/01/70 00:00      
   how about a PCA            01/01/70 00:00      
       how about a PCA            01/01/70 00:00      

Back to Subject List