;==== 25  2017==========3ph_main.asm================================
;  : AT90PWM3B,  : 16 
;   : 
;     0 =  AVRDUDE  !!!
;     AVRDUDE   
;  "!    (PonyProg)"	
;	   avrdudeprog33  :
;			SUT1:0 = 11	-   
;			CKSEL0 = 1 - slowly rising power  
;			CKSEL3:1 = 111 - 8.0 -16.0 MHz    
;			BODLEVEL 2:0 = 010 - BOD level 4.2 V
;			BOOTRST = 1	- reset vector = 0x000	
;			BOOTSZ1:0 =11 - min BootLoader Section Size	
;	   avrdudeprog33 C :
;			PSCRV = 0
;			PSC2RB = 0
;			PSC1RB = 0
;			PSC0RB = 0
;;;;;;;;;;;;;;;;;;;;;        LOCK BYTE !!! ;;;;;;;;;		
;;;;;;;;;;;;;;;;;;;;;        BOOTRST !!! ;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;        SPIEN !!! ;;;;;;;;;
;********************************************************************************
; 	PortName					Signal							#Pin
;	PD5/ADC2					 					17
;	PD6/ADC3					 					18
;	PB2/ADC5					 +12					20
;	PC4/ADC8					 +300					21
;	PC5/ADC9					 + DC				22
;	PC6/ADC10					 - DC 				26
;	PB3							 FStop						27
;	PB4							 Stop						28
;	PB5							 Rev						30
;	PD7							 ||  KV		19
;	PD1/PSCIN0					 /					4
;	PC1							 Btns  HMI				7

;	PC7							 Rdy						29
;	PD2							 						5
;	PD3/MOSI_A					   HMI				6
;	PD4/SCK_A					   HMI				16
;	PD0/PSCOUT00				 -AL						1
;	PB7/PSCOUT01				 -AH						32
;	PB0/PSCOUT20				 -CL						12
;	PB1/PSCOUT21				 -CH						13
;	PC0/PSCOUT10				 -BL						2
;	PB6/PSCOUT11				 -BH						31
;	PE1/XTAL1												14
;	PE2/XTAL2						              			15
;	AREF						+4     +5		25

;********************************* MAIN ASM File ***************************************
.include "pwm3Bdef.inc"
.def Zero = R5          ; 0    
.def One = R6           ; 1    
.def OxFF = R7			; 255   
.def Istrob = R8
.def HMI_Scan = R9		;  
.def To_LL = R10		; To    Fo
.def To_L = R11
.def To_H = R12
.def To_HH = R13		; ptA := To_HH  To_HH < 120
.def Temp_L = R16       ;  
.def Temp_H = R17
.def Temp = R18         
.def Buff = R19
.def Cnt = R20			;     
.def ptA = R21			;   (    ), ptA 
.def ptB = R22
.def ptC = R23
.def HMI_ItemPtr = R24	;    
; R0, R1, R2, R3	-   32 
; R0, R1, R2, R3, R4 -   sqrt16
; R14, R15, R25 - 
.dseg
;  
HMI_String :	.byte 8	;      .  HMI
HMI_ItemPtr0:	.byte 1	;   EEPROM  
Flash_Timer :	.byte 1	;    
Beep_Timer :	.byte 1	;   
BtnRep_Timer :	.byte 1	;        
ZS_Timer :		.byte 1	;     Frmp_0
Rele_Timer :	.byte 1	;     KV
Ovl_Timer:		.byte 2	; Overload Timer    Ia
Ovl_TO:			.byte 2	; Overload TimeOut -   Overload Timer
Stall_Timer:	.byte 1	;    Stall
Fref_buff:		.byte 2	;     Fref (ADC2)
Iref_buff:		.byte 2	;     Iref (ADC3)
I_buff:			.byte 2	;     I+  I-
Idc_ptr:		.byte 1 ;     FIFO  
;   
Idc_buff:		.byte 18;  FIFO     I+(ADC9), I-(ADC10)
Idc:			.byte 2	;    mA
;   +9.7 
DrmpN:			.byte 2	;     Frat  ACCn
DrmpF:			.byte 2	;   .   Frat  dECF
V300_smp :		.byte 2	;    +300 (ADC8)
V300_buff :		.byte 2	;     +300 (ADC8)
Rst:			.byte 2	;  
Iart:			.byte 2	;  .   
Imax:			.byte 2	;    Iart * 1.5
Boost:			.byte 2	; Imax * Rst * 0.9
UrF:			.byte 2	; U/F  .,    . 
FrI:			.byte 2	; F/I .  ,    .
Uo:				.byte 2	;   U 
Fo	:			.byte 2	;   . 
IR_buff	:		.byte 2	; Ia * Rst
;   +8.8 
kEm:			.byte 2	; .  , Uo = UrF * Fo * kEm + abs ( Ia * Rst )
						; max value = 256 =  
;   +-9.7 
IF_buff	:		.byte 2	;   IF
Fref:			.byte 2	; Frequency Reference  c 
Frmp:			.byte 2	;  
Ia:				.byte 2	;  .  
; 2-  -   . 
.cseg
.equ f_Btns = GPIOR0	; .  = .  ,  =  
.equ fBtn_Up  = 7
.equ fBtn_Ent = 6		; 
.equ fBtn_Dwn = 5
.equ fBtn_Esc = 4
.equ f_Flash = GPIOR1	;      :
.equ fFl  = 7			;  ,   Flash_T * 2
.equ fEdit_3 = 3		;    ()  BIN_Par
.equ fEdit_2 = 2
.equ fEdit_1 = 1
.equ fEdit_0 = 0
.equ f_Main = GPIOR2	;   :
.equ fRdy = 7			; 
.equ fRun = 6			; 
.equ fFrmp_0 = 5		;   
.equ fON = 4			;  
.equ fRCT = 3			;  Rele Confirm Timer (  KV)
.equ fZST = 2			;  Zero Speed Timer (    Frmp_0)
.equ fEEwr = 1			;    
.equ fV12good = 0		; +12V   
.equ f_MF = GPIOR3		;     : 
.equ fItrG = 7			; 
.equ fUdcL = 6			;  U  . 
.equ fUdcH = 5			;  U  . 
.equ frELE = 4			;    ( KV   )
.equ fEEPr = 3			;    EEPROM (, )
.equ fIoLd = 2			;     Ovl_TO  Ia > Imax
.equ fStAL = 1			;     Stall_TO  Ia > 2*Imax
.equ fU12L = 0			;    U +12 
;****************************  *****************************************
; note: 1000/320=3.125 mS - 0
.equ Beep_T = 50/3.125		;  50 mS   
.equ BtnRep_T = 700/3.125	;  700 mS      
.equ Flash_T = 100/3.125	;  100 mS   
.equ Rele_T = 300/6.25		;  300 mS    KV     0 
.equ Stall_TO = 200/25		;  200 mS    Stall
.equ V12off = 1120			; *0.01V -   V12good
.equ V12on =  1170			; *0.01V -  V12good
.equ pscTOP = 2046			;  , OCRnRB<-pscTOP,   PSC = 16e6/2/(OCRnRB+1)
.equ Fdct = 4025			; =120*256*256*2/(16e6/2/(pscTOP+1)) Frequency determination constant
.equ halfDT = 8				;     1/16e6 = 62.5 , DT = halfDT*2*62.5 
.equ Iref_min = 25			;  %,    
;******************************************************************************
.org 0x0000 
	rjmp Reset	; External Pin, Power-on Reset, Brown-out Reset,