Gast
#96460
Ich habe einen unterprogramm fur motorsteuerung geschrieben, der
programm wird in einen 5ms schleife immer mit CALL MOTOR aufgerufen.
Aus irgendeinem grund will der statemaschine in diesem unterprogramm
nicht funktionieren. Ich vermute dass es in der ausrechnung von der
nachsten state liegt, aber wo?
;;;;;;;;;;;;; MOTOR ;;;;;;;;;;;;;;;;;;;;;;;
RSEG segCODE
MOTOR:
LDS R30,STATE_MOTOR ;ladet nachste state
CLR R31
LDI R17,HIGH(MOTOR_TAB)
LDI R16,LOW(MOTOR_TAB)
ADD R30,R16
ADC R31,R17 ;PLUS ANFANG ADRESSE
IJMP ;springt ins tabelle
MOTOR_TAB:
JMP DONOTHING ;state 1
S_CCW_LAUF: JMP CCW_LAUF ;state 2
S_CW_LAUF: JMP CW_LAUF ;state 3
S_INCPWM: JMP INCPWM_MAIN ;state 4
S_SPEED_N: JMP SPEED_N_MAIN ;state 5
;***************************************************************
DONOTHING:
.
.
.
.
.
.
.
LDI R16,(S_CCW_LAUF-MOTOR_TAB)
STS STATE_MOTOR,R16
RET
;***********************************************************************
******
CCW_LAUF:
.
.
.
.
.
LDI R16,(S_CW_LAUF-MOTOR_TAB)
STS STATE_MOTOR,R16
RET
CW_LAUF:
.
.
.
usw.
Ich benutze den iar assembler fur atmega128.
Danke fur jede hilfe und bemerkung.
MFG
Zolo