Control del motor de subida con ATmega32

1

Estaba tratando de controlar un motor paso a paso usando ATmega32. Estoy usando AVR studio 4. Pero no funciona perfectamente en la simulación en Proteus. Las 4 señales de entrada para el pin IN1, IN2, IN3 e IN4 del controlador del motor están parpadeando sin ninguna secuencia. Mi código está siguiendo -

.include "m32def.inc"         

.DEF TEMP = R16
.DEF COUNTER = R17
.DEF _STACK = R18


.ORG $0000  

LDI TEMP, 0XFF
OUT DDRB, TEMP  

LDI _STACK,LOW(RAMEND)   ;SETUP STACK POINTER
OUT SPL, _STACK          ;SO CALLS TO SUBROUTINES
LDI _STACK,HIGH(RAMEND)  ;WORK CORRECTL
OUT SPH,_STACK




LABEL1:
LDI TEMP, 0b00000001
OUT PORTB,TEMP 
RCALL PAUSE

LDI TEMP, 0b00000010
OUT PORTB,TEMP 
RCALL PAUSE

LDI TEMP, 0b00000100
OUT PORTB,TEMP 
RCALL PAUSE

LDI TEMP, 0b00001000
OUT PORTB,TEMP 
RCALL PAUSE

RJMP LABEL1



;----------------;
;DELAY ROUTINE   ;
;----------------;
PAUSE:
LDI COUNTER, 2
PLUPE:
NOP   
 DEC COUNTER              
  BRNE PLUPE
   RET

    
pregunta Nafees

1 respuesta

1

Lo he arreglado. Cambié la rutina de retardo de esta manera -

PAUSE:
LDI R17, 0X02
WAIT1:
LDI R20, 0X02
WAIT:
DEC R17
BRNE WAIT

DEC R20
BRNE WAIT1

RET
    
respondido por el Nafees

Lea otras preguntas en las etiquetas