'-------------------mam------------------------------------------------------
'-----Xmega 128a3u project Electronic Leadscrew Lathe---------------------
'-------------------------X3_1 Master-------------------------------------
'-------------------------------------------------------------------------
'$sim
'===========================Xmega dont use $baud========================
'$regfile = "xm256a3udef.dat"
$regfile = "xm128a3udef.dat"
$crystal = 32000000 '32MHz
$hwstack = 128
$swstack = 128
$framesize = 200
$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$projecttime = 368
$version 0 , 0 , 126
Dim Firmware As String * 6
Firmware = " "
Config Submode = New
$include "subs\Function_Dwin_lcd_get_var_value.inc"
$include "subs\LCD_page_set.inc"
$include "subs\LCD_var_write.inc"
$include "subs\Macro_Dwin_variables_constants_arrays.inc"
$include "subs\Enc_rpm.inc"
$include "subs\Enc_z_axis.inc"
$include "subs\Enc_x_axis.inc"
$include "subs\Drv_z_axis.inc"
$include "subs\drv_x_axis.inc"
$include "subs\Dro_z_axis.inc"
$include "subs\Dro_x_axis.inc"
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'========================System Clock Config==============================
'====================Internal 32MHz No Prescale===========================
Config Osc = Disabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
'==================Enabling Automatic Oscilator Calibration===============
Osc_dfllctrl.0 = 1
Dfllrc32m_ctrl.0 = 1
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'=================================Dynamic Uart============================
Dim Buart_channel As Byte 'variable for dynamic UART channels
Const Main_bus = 1 ' Main Rs485 Bus
Const Debud_port = 2 'Debug port
Const Sensor_bus = 3 'sensors RS485 bus
Const Dwin = 4
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'=============Configuration for com1 Uart_C0 X3_1=========================
'===============TX-PORTC.3 RX-PORTC.2 com1 Inverter===============================
Config Com1 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Open "Com1:"for Binary As #buart_channel 'no need to open any more
Config Serialin1 = Buffered , Size = 128 , Bytematch = None 'for COM1
Open "Com1:"for Binary As#1
'Config Input1 = Crlf , Echo = Cr
'Echo On
'=============Configuration for com2 Uart_E0 X3_1=========================
'===============TX-PORTE.3 RX-PORTE.2 com2 extra board===============================
Config Com2 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Open "Com2:"for Binary As #buart_channel 'no need to open any more
Config Serialin2 = Buffered , Size = 128 , Bytematch = None 'for COM2
Open "Com2:"for Binary As#2
'Config Input2 = Crlf , Echo = Cr
'Echo On
'=============Configuration for com3 Uart_E1 X3_1=========================
'===============TX-PORTE.7 RX-PORTE.6 com3 X3_2===============================
Config Com3 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Open "Com3:"for Binary As #buart_channel 'no need to open any more
Config Serialin3 = Buffered , Size = 128 , Bytematch = None 'for COM3
Open "Com3:"for Binary As#3
'Config Input3 = Crlf , Echo = Cr
'Echo On
'=============Configuration for com4 Uart_F0==============================
'===============TX-PORTF.3 RX-PORTF.2 com4 LCD DWIN===============================
Config Com4 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Open "Com4:"for Binary As #buart_channel 'no need to open any more
Config Serialin4 = Buffered , Size = 128 , Bytematch = None 'for COM4
Open "Com4:"for Binary As#4
'Config Input1 = Crlf , Echo = Cr
'Echo On
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'==================== Clock Config========================================
'we select the internal 1kHz clock from the 32kHz internal oscilator
'Config Clock = Soft , Rtc = 1khz_int32khz_rcosc
'Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled 'the RTC uses LO priority
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++Konfiguracja portów+++++++++++++++++++++++++++
Config Porta.0 = Input 'enkoder RPM kanał Index
Config Xpin = Porta.0 , Outpull = Pullup , Sense = Low_level 'podciągnięcie Portu Wyzwalanie Stan Niski
En_rpm_i Alias Porta.0 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porta.1 = Input 'enkoder RPM kanałB
Config Xpin = Porta.1 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
En_rpm_b Alias Porta.1 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porta.2 = Input 'enkoder RPM kanał A
Config Xpin = Porta.2 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
En_rpm_a Alias Porta.2 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porta.3 = Input 'enkoder pokretła osi Z kanał Index
Config Xpin = Porta.3 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
En_z_i Alias Porta.3 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porta.4 = Input 'enkoder pokretła osi Z kanał B
Config Xpin = Porta.4 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
En_z_b Alias Porta.4 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porta.5 = Input 'enkoder pokrętła osi Z kanał A
Config Xpin = Porta.5 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
En_z_a Alias Porta.5 'nazwa własna portu
'-------------------------------------------------------------------------
Config Pina.6 = Input 'przycisk zerowania osi Z
Config Xpin = Porta.6 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
Sw_zero_z_axis Alias Pina.6 'nazwa własna portu
'-------------------------------------------------------------------------
Config Pina.7 = Input 'przycisk zerowania osi X
Config Xpin = Pina.7 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
Sw_zero_x_axis Alias Pina.7 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.0 = Input 'enkoder pokrętła osi X kanał Index
Config Xpin = Portb.0 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu,wyzwalanie stan niski
En_x_i Alias Portb.0 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.1 = Input 'enkoder pokrętła osi X kanał B
Config Xpin = Portb.1 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu,wyzwalanie stan niski
En_x_b Alias Portb.1 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.2 = Input 'enkoder pokrętła osi X kanał A
Config Xpin = Portb.2 'podciągnięcie portu, wyzwalanie stan niski
En_x_a Alias Portb.2 'nazwa własna kanału
'-------------------------------------------------------------------------
Config Portb.3 = Output 'kierunek osi Z
Config Xpin = Portb.3 , Outpull = Totem 'ustawienie portu w stan wysoki
Dir_z_axis Alias Portb.3 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.4 = Output 'zezwolenie osi Z
Config Xpin = Portb.4 , Outpull = Totem 'ustawienie portu w stan wysoki
Enab_z_axis Alias Portb.4 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.5 = Output 'zezwolenie osi X
Config Xpin = Portb.5 , Outpull = Totem 'ustawienie portu w stan wysoki
Enab_x_axis Alias Portb.5 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portb.6 = Output 'kierunek osi X
Config Xpin = Portb.6 , Outpull = Totem 'ustawienie portu w stan wysoki
Dir_x_axis Alias Portb.6 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portc.0 = Output 'krok osi Z
Config Xpin = Portc.0 , Outpull = Totem 'ustawienie portu w stan wysoki
Step_z_axis Alias Portc.0 'nazwa własn portu
'-------------------------------------------------------------------------
Config Portc.1 = Output 'krok osi X
Config Xpin = Portc.1 , Outpull = Totem 'ustawienie portu w stan wysoki
Step_x_axis Alias Portc.1 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portc.4 = Output 'przekaznik do zmiany kierunku CW falownika
Config Xpin = Portc.4 , Outpull = Totem 'ustawienie portu w stan wysoki
Inv_cw Alias Portc.4 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portc.5 = Output 'przekażnik do zmiany kierunku CCW falownika
Config Xpin = Portc.5 , Outpull = Totem 'ustawienie portu w stan wysoki
Inv_ccw Alias Portc.5 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portd.0 = Input 'przycisk recznej zmiany kierunku w prawo osi Z
Config Xpin = Portd.0 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
Cw_sw Alias Portd.0 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portd.1 = Input 'przycisk recznej zmiany kierunku w lewo osi Z
Config Xpin = Portd.1 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
Ccw_sw Alias Portd.1 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portd.5 = Output 'włączenie nadawania MAX3485 UART C0
Config Xpin = Portd.5 , Outpull = Totem 'ustawienie portu w stan wysoki
Rx_tx Alias Portd.5 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porte.4 = Input 'praca w trybie automatycznym
Config Xpin = Porte.4 , Outpull = Pullup , Sense = Low_level 'podciągniecie portu, wyzwalanie stan niski
Man Alias Porte.4 'nazwa własna portu
'-------------------------------------------------------------------------
Config Porte.5 = Input 'praca e trybie ręcznym
Config Xpin = Porte.5 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
Auto Alias Porte.5 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portf.0 = Input 'limit -X
Config Xpin = Portf.0 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
X_minus_limit Alias Portf.0 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portf.1 = Input 'limit +X
Config Xpin = Portf.1 , Outpull = Pullup , Sense = Low_level 'podciągnięcie portu, wyzwalanie stan niski
X_plus_limit Alias Portf.1 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portf.4 = Input 'limit -Z
Config Xpin = Portf.4 , Outpull = Pullup , Sense = Low_level 'podciagnięcie portu,wyzwalanie stan niski
Z_minus_limit Alias Portf.4 'nazwa własna portu
'-------------------------------------------------------------------------
Config Portf.5 = Input 'limit +Z
Config Xpin = Portf.5 , Outpull = Pullup , Sense = Low_level 'Podciagniecie Portu , Wyzwalanie Stan Niski
Z_plus_limit Alias Portf.5 'nazwa własna portu
'-------------------------------------------------------------------------
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++++++++++++++++++++Event system config++++++++++++++++++++++++++++++++
'----------------------------Enkoder RPM----------------------------------
Config Event_system = Dummy , Mux0 = Porta.0 , Qd0 = Enabled , Qdi0 = Enabled , Digflt0 = 8 'konfiguracja systemu zdarzeń multiplexer kanał 0 ,porta.0, obsługa enkodera QDO włączona, filtr cyfrowy 8
'----------------------------Enkoder pokrętła osi Z-----------------------
Config Event_system = Dummy , Mux0 = Porta.3 , Qd0 = Enabled , Qdi0 = Enabled , Digflt0 = 8 'konfiguracja systemu zdarzeń multiplexer kanał 0 ,porta.3, obsługa enkodera QDO włączona, filtr cyfrowy 8
'----------------------------Enkoder pokrętła osi X-----------------------
Config Event_system = Dummy , Mux0 = Portb.0 , Qd0 = Enabled , Qdi0 = Enabled , Digflt0 = 8 'konfiguracja systemu zdarzeń multiplexer kanał 0 ,portb.0, obsługa enkodera QDO włączona, filtr cyfrowy 8
'-------------------------------------------------------------------------
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++++++++++++++++++++++++++++Zmienne++++++++++++++++++++++++++++++++++++
'--------------------------Zmienne enkoderów------------------------------
Dim Rpm_en_a As Dword 'zmienna enkodera obrotów kanał A
Dim Rpm_en_b As Dword 'zmienna enkodera obrotów kanał B
Dim Rpm_en_i As Word 'zmienna enkodera obrotów kanał Index
'-------------------------------------------------------------------------
Dim Z_en_a As Word 'zmienna enkodera pokrętła osi Z kanał A
Dim Z_en_b As Word 'zmienna enkodera pokrętła osi Z kanał B
Dim Z_en_i As Word 'zmienna enkodera pokrętła osi Z kanał Index
'-------------------------------------------------------------------------
Dim X_en_a As Word 'zmienna enkodera pokrętła osi X kanał A
Dim X_en_b As Word 'zmienna enkodera pokrętła osi X kanał B
Dim X_en_i As Word 'zmienna enkodera pokrętła osi X kanał Index
'-------------------------------------------------------------------------
'---------------------------Zmienne LCD DWIN------------------------------
Dim Dwin_arr(8) As Byte 'tablica na adres LCD DWIN
Dim Dwin_ad As Word At Dwin_arr(5) Overlay 'zmienna nakładki na adres LCD DWIN
Dim Dwin_ad_tmp As Word 'zmienna pomocnicza nakładki na adres LCD DWIN
Dim Dwin_val As Word At Dwin_arr(7) Overlay 'zmienna nakładki na wartość LCD DWIN
Dim Dwin_val_tmp As Word 'zmienna pomocnicza nakładki na wartość LCD DWIN
'-------------------------------------------------------------------------
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++++++++++USTAWIENIA POCZĄTKOWE++++++++++++++++++++++++++++++++++++++++
Do
Loop
End