mirror of
https://github.com/SasaKaranovic/HousePlantMonitoringSystem.git
synced 2026-07-08 17:52:37 +02:00
Part 2 Development
Adding solenoid close timeout. Closing all solenoids on power-up. Central unit and Solenoid valve release
This commit is contained in:
@@ -40,23 +40,6 @@ PrefsVaultGUID=
|
||||
PrefsRevisionGUID=
|
||||
|
||||
[Document1]
|
||||
DocumentPath=Out.OutJob
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document2]
|
||||
DocumentPath=MFGOutput.OutJob
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -73,7 +56,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document3]
|
||||
[Document2]
|
||||
DocumentPath=PlantSensor_V02_PCB.PcbDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -90,7 +73,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=SKQOVKES
|
||||
|
||||
[Document4]
|
||||
[Document3]
|
||||
DocumentPath=PlantSensor_V02_Schematic.SchDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -682,46 +665,16 @@ OutputName9=Specctra Design PCB
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
OutputType10=Ansoft Neutral
|
||||
OutputName10=Ansoft Neutral (AutoPCB)
|
||||
OutputType10=MBAExportPARASOLID
|
||||
OutputName10=Export PARASOLID
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=
|
||||
OutputDefault10=0
|
||||
OutputType11=HyperLynx
|
||||
OutputName11=HyperLynx (AutoPCB)
|
||||
OutputType11=MBAExportSTEP
|
||||
OutputName11=Export STEP
|
||||
OutputDocumentPath11=
|
||||
OutputVariantName11=
|
||||
OutputDefault11=0
|
||||
OutputType12=MBAExportPARASOLID
|
||||
OutputName12=Export PARASOLID
|
||||
OutputDocumentPath12=
|
||||
OutputVariantName12=
|
||||
OutputDefault12=0
|
||||
OutputType13=MBAExportSTEP
|
||||
OutputName13=Export STEP
|
||||
OutputDocumentPath13=
|
||||
OutputVariantName13=
|
||||
OutputDefault13=0
|
||||
OutputType14=Orcad v7 Capture Design
|
||||
OutputName14=Orcad v7 Capture Design (AutoSCH)
|
||||
OutputDocumentPath14=
|
||||
OutputVariantName14=
|
||||
OutputDefault14=0
|
||||
OutputType15=P-CAD ASCII
|
||||
OutputName15=P-CAD ASCII (AutoPCB)
|
||||
OutputDocumentPath15=
|
||||
OutputVariantName15=
|
||||
OutputDefault15=0
|
||||
OutputType16=P-CAD V16 Schematic Design
|
||||
OutputName16=P-CAD V16 Schematic Design (AutoSCH)
|
||||
OutputDocumentPath16=
|
||||
OutputVariantName16=
|
||||
OutputDefault16=0
|
||||
OutputType17=SiSoft
|
||||
OutputName17=SiSoft (AutoPCB)
|
||||
OutputDocumentPath17=
|
||||
OutputVariantName17=
|
||||
OutputDefault17=0
|
||||
|
||||
[OutputGroup10]
|
||||
Name=PostProcess Outputs
|
||||
|
||||
@@ -1 +1 @@
|
||||
Record=TopLevelDocument|FileName=PlantSensor_V02_Schematic.SchDoc
|
||||
Record=TopLevelDocument|FileName=PlantSensor_V02_Schematic.SchDoc|SheetNumber=
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
#
|
||||
# There exist several targets which are by default empty and which can be
|
||||
# used for execution of your targets. These targets are usually executed
|
||||
# before and after some main targets. They are:
|
||||
#
|
||||
# .build-pre: called before 'build' target
|
||||
# .build-post: called after 'build' target
|
||||
# .clean-pre: called before 'clean' target
|
||||
# .clean-post: called after 'clean' target
|
||||
# .clobber-pre: called before 'clobber' target
|
||||
# .clobber-post: called after 'clobber' target
|
||||
# .all-pre: called before 'all' target
|
||||
# .all-post: called after 'all' target
|
||||
# .help-pre: called before 'help' target
|
||||
# .help-post: called after 'help' target
|
||||
#
|
||||
# Targets beginning with '.' are not intended to be called on their own.
|
||||
#
|
||||
# Main targets can be executed directly, and they are:
|
||||
#
|
||||
# build build a specific configuration
|
||||
# clean remove built files from a configuration
|
||||
# clobber remove all built files
|
||||
# all build all configurations
|
||||
# help print help mesage
|
||||
#
|
||||
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
|
||||
# .help-impl are implemented in nbproject/makefile-impl.mk.
|
||||
#
|
||||
# Available make variables:
|
||||
#
|
||||
# CND_BASEDIR base directory for relative paths
|
||||
# CND_DISTDIR default top distribution directory (build artifacts)
|
||||
# CND_BUILDDIR default top build directory (object files, ...)
|
||||
# CONF name of current configuration
|
||||
# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
|
||||
# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
|
||||
# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
|
||||
# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
|
||||
# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
|
||||
# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
|
||||
#
|
||||
# NOCDDL
|
||||
|
||||
|
||||
# Environment
|
||||
MKDIR=mkdir
|
||||
CP=cp
|
||||
CCADMIN=CCadmin
|
||||
RANLIB=ranlib
|
||||
|
||||
|
||||
# build
|
||||
build: .build-post
|
||||
|
||||
.build-pre:
|
||||
# Add your pre 'build' code here...
|
||||
|
||||
.build-post: .build-impl
|
||||
# Add your post 'build' code here...
|
||||
|
||||
|
||||
# clean
|
||||
clean: .clean-post
|
||||
|
||||
.clean-pre:
|
||||
# Add your pre 'clean' code here...
|
||||
# WARNING: the IDE does not call this target since it takes a long time to
|
||||
# simply run make. Instead, the IDE removes the configuration directories
|
||||
# under build and dist directly without calling make.
|
||||
# This target is left here so people can do a clean when running a clean
|
||||
# outside the IDE.
|
||||
|
||||
.clean-post: .clean-impl
|
||||
# Add your post 'clean' code here...
|
||||
|
||||
|
||||
# clobber
|
||||
clobber: .clobber-post
|
||||
|
||||
.clobber-pre:
|
||||
# Add your pre 'clobber' code here...
|
||||
|
||||
.clobber-post: .clobber-impl
|
||||
# Add your post 'clobber' code here...
|
||||
|
||||
|
||||
# all
|
||||
all: .all-post
|
||||
|
||||
.all-pre:
|
||||
# Add your pre 'all' code here...
|
||||
|
||||
.all-post: .all-impl
|
||||
# Add your post 'all' code here...
|
||||
|
||||
|
||||
# help
|
||||
help: .help-post
|
||||
|
||||
.help-pre:
|
||||
# Add your pre 'help' code here...
|
||||
|
||||
.help-post: .help-impl
|
||||
# Add your post 'help' code here...
|
||||
|
||||
|
||||
|
||||
# include project implementation makefile
|
||||
include nbproject/Makefile-impl.mk
|
||||
|
||||
# include project make variables
|
||||
include nbproject/Makefile-variables.mk
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,43 @@
|
||||
#ifndef __PLANTSYSTEM_COMMS_H
|
||||
#define __PLANTSYSTEM_COMMS_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
// CMD (1byte) + DATATYPE (1byte) + DATALEN (2bytes)
|
||||
#define PLANTSYSTEM_MIN_HEADER_LENGHT 4
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CMD_FIRST = 0x00,
|
||||
CMD_GET_DEVICE_INFO,
|
||||
CMD_GET_TEMPERATURE,
|
||||
CMD_GET_SOILMOISTURE,
|
||||
CMD_GET_AMBIENTLIGHT,
|
||||
CMD_GET_SOLENOID_STATE,
|
||||
CMD_SET_SOLENOID_STATE,
|
||||
CMD_LAST
|
||||
} plant_cmd_t;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DATATYPE_FIRST = 0x00,
|
||||
DATATYPE_NONE,
|
||||
DATATYPE_SINGLE_VALUE,
|
||||
DATATYPE_KEY_VALUE_PAIR,
|
||||
DATATYPE_LAST
|
||||
} plant_dataType_t;
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DEVICETYPE_FIRST = 0x00,
|
||||
DEVICETYPE_SENSOR_V1,
|
||||
DEVICETYPE_SOLENOID_V1,
|
||||
DEVICETYPE_LAST
|
||||
} plant_deviceType_t;
|
||||
|
||||
bool PlanSystem_ParseBuffer(uint8_t *pBuffer, uint8_t nBufferLen, uint8_t *cmd, uint8_t *dataType, uint8_t *dataLength);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "SolenoidDriver.h"
|
||||
#include "PlantSystem.h"
|
||||
#include "debug.h"
|
||||
#include "mcc_generated_files/include/twi0_slave.h"
|
||||
|
||||
// -- Global definitions
|
||||
|
||||
// -- Extern variables
|
||||
extern uint8_t TWI_TxBuff[TWI_BUFFER_SIZE];
|
||||
extern uint8_t TWI_TxLen;
|
||||
extern uint8_t TWI_TxPos;
|
||||
|
||||
extern uint8_t TWI_RxBuff[TWI_BUFFER_SIZE]; // Device RX from host
|
||||
extern uint8_t TWI_RxPos;
|
||||
|
||||
// Solenoid turn-off timer
|
||||
extern volatile uint32_t milliseconds;
|
||||
extern volatile uint32_t solenoidTurnOff_target;
|
||||
extern volatile bool bWDTRunning;
|
||||
|
||||
// CMD (1byte) + DATATYPE (1byte) + DATALEN (2bytes)
|
||||
void SolenoidDriver_ProcessRequest(uint8_t *pRxBuff, uint8_t nLen)
|
||||
{
|
||||
#if 0
|
||||
debugStr("pRxBuff:\r\n");
|
||||
for(uint8_t i=0; i<nLen; i++)
|
||||
{
|
||||
debugHex(pRxBuff[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
// First byte is always command
|
||||
switch(pRxBuff[0])
|
||||
{
|
||||
// -- Get device information
|
||||
case CMD_GET_DEVICE_INFO:
|
||||
{
|
||||
debugStr("\r\nInfo\r\n");
|
||||
TWI_TxBuff[0] = 0xFF; // First byte is 0xFF to allow compatibility with STM and disable clock strech
|
||||
TWI_TxBuff[1] = CMD_GET_DEVICE_INFO; // Second byte is response to command
|
||||
TWI_TxBuff[2] = DATATYPE_SINGLE_VALUE;
|
||||
TWI_TxBuff[3] = 0;
|
||||
TWI_TxBuff[4] = 2;
|
||||
TWI_TxBuff[5] = DEVICETYPE_SOLENOID_V1;
|
||||
TWI_TxBuff[6] = 1;
|
||||
TWI_TxLen = 7;
|
||||
}
|
||||
break;
|
||||
|
||||
// -- SET solenoid state
|
||||
case CMD_SET_SOLENOID_STATE:
|
||||
{
|
||||
debugStr("\r\nSET State: ");
|
||||
|
||||
// Data Type `DATATYPE_SINGLE_VALUE` and exactly 0 + 1 = 1 bytes
|
||||
if(pRxBuff[1] == DATATYPE_SINGLE_VALUE && pRxBuff[2] == 0 && pRxBuff[3] == 1)
|
||||
{
|
||||
debugHex(pRxBuff[1]);
|
||||
|
||||
if(pRxBuff[4] == 0)
|
||||
{
|
||||
debugStr("Turn OFF\r\n");
|
||||
Solenoid_SET_Off();
|
||||
Solenoid_ActLED_Off();
|
||||
}
|
||||
else
|
||||
{
|
||||
debugStr("Turn ON\r\n");
|
||||
Solenoid_SET_On();
|
||||
Solenoid_ActLED_On();
|
||||
SolenoidWDT_Activate();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
debugStr("Bad Data\r\n");
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
// -- GET solenoid state
|
||||
case CMD_GET_SOLENOID_STATE:
|
||||
{
|
||||
debugStr("\r\nGET state\r\n");
|
||||
|
||||
TWI_TxBuff[0] = 0xFF; // First byte is 0xFF to allow compatibility with STM and disable clock strech
|
||||
TWI_TxBuff[1] = CMD_GET_SOLENOID_STATE; // Second byte is response to command
|
||||
TWI_TxBuff[2] = DATATYPE_SINGLE_VALUE;
|
||||
TWI_TxBuff[3] = 0;
|
||||
TWI_TxBuff[4] = 1;
|
||||
TWI_TxBuff[5] = Solenoid_GetState();
|
||||
TWI_TxLen = 6;
|
||||
}
|
||||
break;
|
||||
|
||||
// Catch-all
|
||||
default:
|
||||
debugStr("Uknown CMD received\r\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SolenoidWDT_Activate(void)
|
||||
{
|
||||
solenoidTurnOff_target = milliseconds + SOLENOID_ON_TIMEOUT;
|
||||
bWDTRunning = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef SOLENOID_DRIVER_H
|
||||
#define SOLENOID_DRIVER_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "mcc_generated_files/utils/compiler.h"
|
||||
#include "mcc_generated_files/include/port.h"
|
||||
|
||||
#define TWI_BUFFER_SIZE 40
|
||||
#define DEVICE_I2C_ADDRESS (0x20 << 1)
|
||||
|
||||
#define Solenoid_ActLED_On() (PORTB_set_pin_level(1, true))
|
||||
#define Solenoid_ActLED_Off() (PORTB_set_pin_level(1, false))
|
||||
|
||||
|
||||
#define Solenoid_GetState() (PORTA_get_pin_level(3))
|
||||
#define Solenoid_SET_On() (PORTA_set_pin_level(3, true))
|
||||
#define Solenoid_SET_Off() (PORTA_set_pin_level(3, false))
|
||||
|
||||
|
||||
#define SOLENOID_ON_TIMEOUT 9000
|
||||
void SolenoidWDT_Activate(void);
|
||||
|
||||
void SolenoidDriver_ProcessRequest(uint8_t *pRxBuff, uint8_t nLen);
|
||||
|
||||
#endif /* SOLENOID_DRIVER_H */
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#include "debug.h"
|
||||
#include "mcc_generated_files/include/usart0.h"
|
||||
|
||||
static const char HEX[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
|
||||
#define HEXUPPER(x) (HEX[ ((x>>4)&0x0F) ])
|
||||
#define HEXLOWER(x) (HEX[(x&0x0F)])
|
||||
|
||||
#ifdef _DEBUG_ENABLE_
|
||||
void debugStr(char *data)
|
||||
{
|
||||
while(*data)
|
||||
{
|
||||
while (!(USART0.STATUS & USART_DREIF_bm));
|
||||
USART0.TXDATAL = *data++;
|
||||
}
|
||||
}
|
||||
|
||||
void debugHex(char data)
|
||||
{
|
||||
char tmp[7] = { '0', 'x', '0', '0', '\r', '\n', 0};
|
||||
|
||||
tmp[2] = HEXUPPER(data);
|
||||
tmp[3] = HEXLOWER(data);
|
||||
|
||||
debugStr(tmp);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef DEBUG_H
|
||||
#define DEBUG_H
|
||||
|
||||
// #define _DEBUG_ENABLE_
|
||||
//#define _DEBUG_TWI_
|
||||
|
||||
#ifdef _DEBUG_ENABLE_
|
||||
void debugStr(char *data);
|
||||
void debugHex(char data);
|
||||
#else
|
||||
#define debugStr(x)
|
||||
#define debugHex(x)
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG_TWI_
|
||||
#define debugTWIStr(x) (debugStr(x))
|
||||
#else
|
||||
#define debugTWIStr(x)
|
||||
#endif
|
||||
|
||||
#endif /* DEBUG_H */
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "mcc_generated_files/mcc.h"
|
||||
#include "SolenoidDriver.h"
|
||||
#include "debug.h"
|
||||
|
||||
volatile uint32_t milliseconds = 0;
|
||||
volatile uint32_t solenoidTurnOff_target = 0;
|
||||
volatile bool bWDTRunning = 0;
|
||||
|
||||
static void SolenoidWDT_Tick(void);
|
||||
|
||||
/*
|
||||
Main application
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
/* Initializes MCU, drivers and middleware */
|
||||
__builtin_avr_delay_cycles(500);
|
||||
SYSTEM_Initialize();
|
||||
__builtin_avr_delay_cycles(2000);
|
||||
|
||||
debugStr("\r\n\r\nWell hello there!\r\n");
|
||||
|
||||
while (1)
|
||||
{
|
||||
SolenoidWDT_Tick();
|
||||
__builtin_avr_wdr();
|
||||
}
|
||||
}
|
||||
|
||||
void SysTick(void)
|
||||
{
|
||||
milliseconds++;
|
||||
}
|
||||
|
||||
static void SolenoidWDT_Tick(void)
|
||||
{
|
||||
if((Solenoid_GetState()) && (bWDTRunning) && (solenoidTurnOff_target < milliseconds))
|
||||
{
|
||||
Solenoid_SET_Off();
|
||||
Solenoid_ActLED_Off();
|
||||
bWDTRunning = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
End of File
|
||||
*/
|
||||
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CLOCK_CONFIG_H
|
||||
#define CLOCK_CONFIG_H
|
||||
|
||||
#ifndef F_CPU
|
||||
#define F_CPU 20000000
|
||||
#endif
|
||||
|
||||
#endif // CLOCK_CONFIG_H
|
||||
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include <avr/io.h>
|
||||
|
||||
/**
|
||||
* \Configures Fuse bits
|
||||
*/
|
||||
|
||||
FUSES =
|
||||
{
|
||||
.APPEND = 0,
|
||||
.BODCFG = ACTIVE_DIS_gc | LVL_BODLEVEL0_gc | SAMPFREQ_1KHz_gc | SLEEP_DIS_gc,
|
||||
.BOOTEND = 0,
|
||||
.OSCCFG = FREQSEL_20MHZ_gc,
|
||||
.SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_UPDI_gc,
|
||||
.SYSCFG1 = SUT_64MS_gc,
|
||||
.WDTCFG = PERIOD_2KCLK_gc | WINDOW_OFF_gc,
|
||||
};
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CPU_CCP_H
|
||||
#define CPU_CCP_H
|
||||
|
||||
#include "../utils/compiler.h"
|
||||
#include "../include/protected_io.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Write to a CCP-protected 8-bit I/O register
|
||||
*
|
||||
* \param addr Address of the I/O register
|
||||
* \param value Value to be written
|
||||
*
|
||||
* \note Using IAR Embedded workbench, the choice of memory model has an impact
|
||||
* on calling convention. The memory model is not visible to the
|
||||
* preprocessor, so it must be defined in the Assembler preprocessor directives.
|
||||
*/
|
||||
static inline void ccp_write_io(void *addr, uint8_t value)
|
||||
{
|
||||
protected_write_io(addr, CCP_IOREG_gc, value);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* \brief Write to CCP-protected 8-bit SPM register
|
||||
*
|
||||
* \param addr Address of the SPM register
|
||||
* \param value Value to be written
|
||||
*
|
||||
* \note Using IAR Embedded workbench, the choice of memory model has an impact
|
||||
* on calling convention. The memory model is not visible to the
|
||||
* preprocessor, so it must be defined in the Assembler preprocessor directives.
|
||||
*/
|
||||
static inline void ccp_write_spm(void *addr, uint8_t value)
|
||||
{
|
||||
protected_write_io(addr, CCP_SPM_gc, value);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CPU_CCP_H */
|
||||
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CPUINT_H_INCLUDED
|
||||
#define CPUINT_H_INCLUDED
|
||||
|
||||
#include "../utils/compiler.h"
|
||||
#include "ccp.h"
|
||||
#include "../utils/atomic.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /** \
|
||||
* \brief Initialize cpuint interface \
|
||||
* \
|
||||
* \return Initialization status \
|
||||
*/
|
||||
int8_t CPUINT_Initialize();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CPUINT_H_INCLUDED */
|
||||
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef NVMCTRL_BASIC_H_INCLUDED
|
||||
#define NVMCTRL_BASIC_H_INCLUDED
|
||||
|
||||
#include "../utils/compiler.h"
|
||||
|
||||
#include <string.h>
|
||||
#include "ccp.h"
|
||||
|
||||
#define BOOTLOADER_SECTION __attribute__((section(".bootloader")))
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Datatype for flash address */
|
||||
typedef uint16_t flash_adr_t;
|
||||
|
||||
/** Datatype for EEPROM address */
|
||||
typedef uint16_t eeprom_adr_t;
|
||||
|
||||
/** Datatype for return status of NVMCTRL operations */
|
||||
typedef enum {
|
||||
NVM_OK = 0, ///< NVMCTRL free, no write ongoing.
|
||||
NVM_ERROR = 1, ///< NVMCTRL operation retsulted in error
|
||||
NVM_BUSY = 2, ///< NVMCTRL busy, write ongoing.
|
||||
} nvmctrl_status_t;
|
||||
|
||||
|
||||
|
||||
int8_t FLASH_Initialize();
|
||||
|
||||
uint8_t FLASH_ReadEepromByte(eeprom_adr_t eeprom_adr);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteEepromByte(eeprom_adr_t eeprom_adr, uint8_t data);
|
||||
|
||||
void FLASH_ReadEepromBlock(eeprom_adr_t eeprom_adr, uint8_t *data, size_t size);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteEepromBlock(eeprom_adr_t eeprom_adr, uint8_t *data, size_t size);
|
||||
|
||||
bool FLASH_IsEepromReady();
|
||||
|
||||
uint8_t FLASH_ReadFlashByte(flash_adr_t flash_adr);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteFlashByte(flash_adr_t flash_adr, uint8_t *ram_buffer, uint8_t data);
|
||||
|
||||
nvmctrl_status_t FLASH_EraseFlashPage(flash_adr_t flash_adr);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteFlashPage(flash_adr_t flash_adr, uint8_t *data);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteFlashBlock(flash_adr_t flash_adr, uint8_t *data, size_t size,
|
||||
uint8_t *ram_buffer);
|
||||
|
||||
nvmctrl_status_t FLASH_WriteFlashStream(flash_adr_t flash_adr, uint8_t data, bool finalize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* NVMCTRL_BASIC_H_INCLUDED */
|
||||
@@ -0,0 +1,160 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef PINS_H_INCLUDED
|
||||
#define PINS_H_INCLUDED
|
||||
|
||||
#include <avr/io.h>
|
||||
#include "port.h"
|
||||
|
||||
//get/set PB3 aliases
|
||||
#define PB3_SetHigh() do { PORTB_OUTSET = 0x8; } while(0)
|
||||
#define PB3_SetLow() do { PORTB_OUTCLR = 0x8; } while(0)
|
||||
#define PB3_Toggle() do { PORTB_OUTTGL = 0x8; } while(0)
|
||||
#define PB3_GetValue() (VPORTB.IN & (0x1 << 3))
|
||||
#define PB3_SetDigitalInput() do { PORTB_DIRCLR = 0x8; } while(0)
|
||||
#define PB3_SetDigitalOutput() do { PORTB_DIRSET = 0x8; } while(0)
|
||||
#define PB3_SetPullUp() do { PORTB_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define PB3_ResetPullUp() do { PORTB_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define PB3_SetInverted() do { PORTB_PIN3CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define PB3_ResetInverted() do { PORTB_PIN3CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define PB3_DisableInterruptOnChange() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define PB3_EnableInterruptForBothEdges() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define PB3_EnableInterruptForRisingEdge() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define PB3_EnableInterruptForFallingEdge() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define PB3_DisableDigitalInputBuffer() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define PB3_EnableInterruptForLowLevelSensing() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
//get/set PA2 aliases
|
||||
#define PA2_SetHigh() do { PORTA_OUTSET = 0x4; } while(0)
|
||||
#define PA2_SetLow() do { PORTA_OUTCLR = 0x4; } while(0)
|
||||
#define PA2_Toggle() do { PORTA_OUTTGL = 0x4; } while(0)
|
||||
#define PA2_GetValue() (VPORTA.IN & (0x1 << 2))
|
||||
#define PA2_SetDigitalInput() do { PORTA_DIRCLR = 0x4; } while(0)
|
||||
#define PA2_SetDigitalOutput() do { PORTA_DIRSET = 0x4; } while(0)
|
||||
#define PA2_SetPullUp() do { PORTA_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define PA2_ResetPullUp() do { PORTA_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define PA2_SetInverted() do { PORTA_PIN2CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define PA2_ResetInverted() do { PORTA_PIN2CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define PA2_DisableInterruptOnChange() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define PA2_EnableInterruptForBothEdges() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define PA2_EnableInterruptForRisingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define PA2_EnableInterruptForFallingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define PA2_DisableDigitalInputBuffer() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define PA2_EnableInterruptForLowLevelSensing() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
//get/set PB2 aliases
|
||||
#define PB2_SetHigh() do { PORTB_OUTSET = 0x4; } while(0)
|
||||
#define PB2_SetLow() do { PORTB_OUTCLR = 0x4; } while(0)
|
||||
#define PB2_Toggle() do { PORTB_OUTTGL = 0x4; } while(0)
|
||||
#define PB2_GetValue() (VPORTB.IN & (0x1 << 2))
|
||||
#define PB2_SetDigitalInput() do { PORTB_DIRCLR = 0x4; } while(0)
|
||||
#define PB2_SetDigitalOutput() do { PORTB_DIRSET = 0x4; } while(0)
|
||||
#define PB2_SetPullUp() do { PORTB_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define PB2_ResetPullUp() do { PORTB_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define PB2_SetInverted() do { PORTB_PIN2CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define PB2_ResetInverted() do { PORTB_PIN2CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define PB2_DisableInterruptOnChange() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define PB2_EnableInterruptForBothEdges() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define PB2_EnableInterruptForRisingEdge() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define PB2_EnableInterruptForFallingEdge() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define PB2_DisableDigitalInputBuffer() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define PB2_EnableInterruptForLowLevelSensing() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
//get/set PA1 aliases
|
||||
#define PA1_SetHigh() do { PORTA_OUTSET = 0x2; } while(0)
|
||||
#define PA1_SetLow() do { PORTA_OUTCLR = 0x2; } while(0)
|
||||
#define PA1_Toggle() do { PORTA_OUTTGL = 0x2; } while(0)
|
||||
#define PA1_GetValue() (VPORTA.IN & (0x1 << 1))
|
||||
#define PA1_SetDigitalInput() do { PORTA_DIRCLR = 0x2; } while(0)
|
||||
#define PA1_SetDigitalOutput() do { PORTA_DIRSET = 0x2; } while(0)
|
||||
#define PA1_SetPullUp() do { PORTA_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define PA1_ResetPullUp() do { PORTA_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define PA1_SetInverted() do { PORTA_PIN1CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define PA1_ResetInverted() do { PORTA_PIN1CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define PA1_DisableInterruptOnChange() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define PA1_EnableInterruptForBothEdges() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define PA1_EnableInterruptForRisingEdge() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define PA1_EnableInterruptForFallingEdge() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define PA1_DisableDigitalInputBuffer() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define PA1_EnableInterruptForLowLevelSensing() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
//get/set SOLENOID_FET aliases
|
||||
#define SOLENOID_FET_SetHigh() do { PORTA_OUTSET = 0x8; } while(0)
|
||||
#define SOLENOID_FET_SetLow() do { PORTA_OUTCLR = 0x8; } while(0)
|
||||
#define SOLENOID_FET_Toggle() do { PORTA_OUTTGL = 0x8; } while(0)
|
||||
#define SOLENOID_FET_GetValue() (VPORTA.IN & (0x1 << 3))
|
||||
#define SOLENOID_FET_SetDigitalInput() do { PORTA_DIRCLR = 0x8; } while(0)
|
||||
#define SOLENOID_FET_SetDigitalOutput() do { PORTA_DIRSET = 0x8; } while(0)
|
||||
#define SOLENOID_FET_SetPullUp() do { PORTA_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define SOLENOID_FET_ResetPullUp() do { PORTA_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define SOLENOID_FET_SetInverted() do { PORTA_PIN3CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define SOLENOID_FET_ResetInverted() do { PORTA_PIN3CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define SOLENOID_FET_DisableInterruptOnChange() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define SOLENOID_FET_EnableInterruptForBothEdges() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define SOLENOID_FET_EnableInterruptForRisingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define SOLENOID_FET_EnableInterruptForFallingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define SOLENOID_FET_DisableDigitalInputBuffer() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define SOLENOID_FET_EnableInterruptForLowLevelSensing() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
//get/set LED aliases
|
||||
#define LED_SetHigh() do { PORTB_OUTSET = 0x2; } while(0)
|
||||
#define LED_SetLow() do { PORTB_OUTCLR = 0x2; } while(0)
|
||||
#define LED_Toggle() do { PORTB_OUTTGL = 0x2; } while(0)
|
||||
#define LED_GetValue() (VPORTB.IN & (0x1 << 1))
|
||||
#define LED_SetDigitalInput() do { PORTB_DIRCLR = 0x2; } while(0)
|
||||
#define LED_SetDigitalOutput() do { PORTB_DIRSET = 0x2; } while(0)
|
||||
#define LED_SetPullUp() do { PORTB_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0)
|
||||
#define LED_ResetPullUp() do { PORTB_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0)
|
||||
#define LED_SetInverted() do { PORTB_PIN1CTRL |= PORT_INVEN_bm; } while(0)
|
||||
#define LED_ResetInverted() do { PORTB_PIN1CTRL &= ~PORT_INVEN_bm; } while(0)
|
||||
#define LED_DisableInterruptOnChange() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
|
||||
#define LED_EnableInterruptForBothEdges() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
|
||||
#define LED_EnableInterruptForRisingEdge() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
|
||||
#define LED_EnableInterruptForFallingEdge() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
|
||||
#define LED_DisableDigitalInputBuffer() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
|
||||
#define LED_EnableInterruptForLowLevelSensing() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
|
||||
|
||||
void PIN_MANAGER_Initialize();
|
||||
void PORTB_PB3_DefaultInterruptHandler(void);
|
||||
void PORTB_PB3_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
void PORTA_PA2_DefaultInterruptHandler(void);
|
||||
void PORTA_PA2_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
void PORTB_PB2_DefaultInterruptHandler(void);
|
||||
void PORTB_PB2_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
void PORTA_PA1_DefaultInterruptHandler(void);
|
||||
void PORTA_PA1_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
void PORTA_SOLENOID_FET_DefaultInterruptHandler(void);
|
||||
void PORTA_SOLENOID_FET_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
void PORTB_LED_DefaultInterruptHandler(void);
|
||||
void PORTB_LED_SetInterruptHandler(void (* interruptHandler)(void)) ;
|
||||
#endif /* PINS_H_INCLUDED */
|
||||
@@ -0,0 +1,499 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef PORT_INCLUDED
|
||||
#define PORT_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "../utils/compiler.h"
|
||||
|
||||
enum port_pull_mode {
|
||||
PORT_PULL_OFF,
|
||||
PORT_PULL_UP,
|
||||
};
|
||||
|
||||
enum port_dir {
|
||||
PORT_DIR_IN,
|
||||
PORT_DIR_OUT,
|
||||
PORT_DIR_OFF,
|
||||
};
|
||||
/**
|
||||
* \brief Set port pin pull mode
|
||||
*
|
||||
* Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] pull_mode Pin pull mode
|
||||
*/
|
||||
static inline void PORTA_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin);
|
||||
|
||||
if (pull_mode == PORT_PULL_UP) {
|
||||
*port_pin_ctrl |= PORT_PULLUPEN_bm;
|
||||
} else if (pull_mode == PORT_PULL_OFF) {
|
||||
*port_pin_ctrl &= ~PORT_PULLUPEN_bm;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin inverted mode
|
||||
*
|
||||
* Configure pin invert I/O or not
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] inverted Pin inverted mode
|
||||
*/
|
||||
static inline void PORTA_pin_set_inverted(const uint8_t pin, const bool inverted)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin);
|
||||
|
||||
if (inverted) {
|
||||
*port_pin_ctrl |= PORT_INVEN_bm;
|
||||
} else {
|
||||
*port_pin_ctrl &= ~PORT_INVEN_bm;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin input/sense configuration
|
||||
*
|
||||
* Enable/disable digital input buffer and pin change interrupt,
|
||||
* select pin interrupt edge/level sensing mode
|
||||
*
|
||||
* \param[in] pin pin number within port
|
||||
* \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled
|
||||
* PORT_ISC_BOTHEDGES_gc = Sense Both Edges
|
||||
* PORT_ISC_RISING_gc = Sense Rising Edge
|
||||
* PORT_ISC_FALLING_gc = Sense Falling Edge
|
||||
* PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled
|
||||
* PORT_ISC_LEVEL_gc = Sense low Level
|
||||
*
|
||||
*/
|
||||
static inline void PORTA_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin);
|
||||
|
||||
*port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port data direction
|
||||
*
|
||||
* Select if the pin data direction is input, output or disabled.
|
||||
* If disabled state is not possible, this function throws an assert.
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means apply direction setting to the
|
||||
* corresponding pin
|
||||
* \param[in] dir PORT_DIR_IN = Data direction in
|
||||
* PORT_DIR_OUT = Data direction out
|
||||
* PORT_DIR_OFF = Disables the pin
|
||||
* (low power state)
|
||||
*/
|
||||
static inline void PORTA_set_port_dir(const uint8_t mask, const enum port_dir dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case PORT_DIR_IN:
|
||||
VPORTA.DIR &= ~mask;
|
||||
break;
|
||||
case PORT_DIR_OUT:
|
||||
VPORTA.DIR |= mask;
|
||||
break;
|
||||
case PORT_DIR_OFF:
|
||||
/*/ should activate the pullup for power saving
|
||||
but a bit costly to do it here */
|
||||
{
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
if (mask & 1 << i) {
|
||||
*((uint8_t *)&PORTA + 0x10 + i) |= 1 << PORT_PULLUPEN_bp;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin data direction
|
||||
*
|
||||
* Select if the pin data direction is input, output or disabled.
|
||||
* If disabled state is not possible, this function throws an assert.
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] dir PORT_DIR_IN = Data direction in
|
||||
* PORT_DIR_OUT = Data direction out
|
||||
* PORT_DIR_OFF = Disables the pin
|
||||
* (low power state)
|
||||
*/
|
||||
static inline void PORTA_set_pin_dir(const uint8_t pin, const enum port_dir dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case PORT_DIR_IN:
|
||||
VPORTA.DIR &= ~(1 << pin);
|
||||
break;
|
||||
case PORT_DIR_OUT:
|
||||
VPORTA.DIR |= (1 << pin);
|
||||
break;
|
||||
case PORT_DIR_OFF:
|
||||
*((uint8_t *)&PORTA + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port level
|
||||
*
|
||||
* Sets output level on the pins defined by the bit mask
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means apply port level to the corresponding
|
||||
* pin
|
||||
* \param[in] level true = Pin levels set to "high" state
|
||||
* false = Pin levels set to "low" state
|
||||
*/
|
||||
static inline void PORTA_set_port_level(const uint8_t mask, const bool level)
|
||||
{
|
||||
if (level == true) {
|
||||
VPORTA.OUT |= mask;
|
||||
} else {
|
||||
VPORTA.OUT &= ~mask;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port level
|
||||
*
|
||||
* Sets output level on a pin
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] level true = Pin level set to "high" state
|
||||
* false = Pin level set to "low" state
|
||||
*/
|
||||
static inline void PORTA_set_pin_level(const uint8_t pin, const bool level)
|
||||
{
|
||||
if (level == true) {
|
||||
VPORTA.OUT |= (1 << pin);
|
||||
} else {
|
||||
VPORTA.OUT &= ~(1 << pin);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Toggle out level on pins
|
||||
*
|
||||
* Toggle the pin levels on pins defined by bit mask
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means toggle pin level to the corresponding
|
||||
* pin
|
||||
*/
|
||||
static inline void PORTA_toggle_port_level(const uint8_t mask)
|
||||
{
|
||||
PORTA.OUTTGL = mask;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Toggle output level on pin
|
||||
*
|
||||
* Toggle the pin levels on pins defined by bit mask
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
*/
|
||||
static inline void PORTA_toggle_pin_level(const uint8_t pin)
|
||||
{
|
||||
PORTA.OUTTGL = 1 << pin;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get input level on pins
|
||||
*
|
||||
* Read the input level on pins connected to a port
|
||||
*
|
||||
*/
|
||||
static inline uint8_t PORTA_get_port_level()
|
||||
{
|
||||
return VPORTA.IN;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get level on pin
|
||||
*
|
||||
* Reads the level on pins connected to a port
|
||||
*/
|
||||
static inline bool PORTA_get_pin_level(const uint8_t pin)
|
||||
{
|
||||
return VPORTA.IN & (1 << pin);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Write value to Port
|
||||
*
|
||||
* Write directly to the port OUT register
|
||||
*
|
||||
* \param[in] value Value to write to the port register
|
||||
*/
|
||||
static inline void PORTA_write_port(const uint8_t value)
|
||||
{
|
||||
VPORTA.OUT = value;
|
||||
}
|
||||
/**
|
||||
* \brief Set port pin pull mode
|
||||
*
|
||||
* Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] pull_mode Pin pull mode
|
||||
*/
|
||||
static inline void PORTB_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin);
|
||||
|
||||
if (pull_mode == PORT_PULL_UP) {
|
||||
*port_pin_ctrl |= PORT_PULLUPEN_bm;
|
||||
} else if (pull_mode == PORT_PULL_OFF) {
|
||||
*port_pin_ctrl &= ~PORT_PULLUPEN_bm;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin inverted mode
|
||||
*
|
||||
* Configure pin invert I/O or not
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] inverted Pin inverted mode
|
||||
*/
|
||||
static inline void PORTB_pin_set_inverted(const uint8_t pin, const bool inverted)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin);
|
||||
|
||||
if (inverted) {
|
||||
*port_pin_ctrl |= PORT_INVEN_bm;
|
||||
} else {
|
||||
*port_pin_ctrl &= ~PORT_INVEN_bm;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin input/sense configuration
|
||||
*
|
||||
* Enable/disable digital input buffer and pin change interrupt,
|
||||
* select pin interrupt edge/level sensing mode
|
||||
*
|
||||
* \param[in] pin pin number within port
|
||||
* \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled
|
||||
* PORT_ISC_BOTHEDGES_gc = Sense Both Edges
|
||||
* PORT_ISC_RISING_gc = Sense Rising Edge
|
||||
* PORT_ISC_FALLING_gc = Sense Falling Edge
|
||||
* PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled
|
||||
* PORT_ISC_LEVEL_gc = Sense low Level
|
||||
*
|
||||
*/
|
||||
static inline void PORTB_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc)
|
||||
{
|
||||
volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin);
|
||||
|
||||
*port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port data direction
|
||||
*
|
||||
* Select if the pin data direction is input, output or disabled.
|
||||
* If disabled state is not possible, this function throws an assert.
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means apply direction setting to the
|
||||
* corresponding pin
|
||||
* \param[in] dir PORT_DIR_IN = Data direction in
|
||||
* PORT_DIR_OUT = Data direction out
|
||||
* PORT_DIR_OFF = Disables the pin
|
||||
* (low power state)
|
||||
*/
|
||||
static inline void PORTB_set_port_dir(const uint8_t mask, const enum port_dir dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case PORT_DIR_IN:
|
||||
VPORTB.DIR &= ~mask;
|
||||
break;
|
||||
case PORT_DIR_OUT:
|
||||
VPORTB.DIR |= mask;
|
||||
break;
|
||||
case PORT_DIR_OFF:
|
||||
/*/ should activate the pullup for power saving
|
||||
but a bit costly to do it here */
|
||||
{
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
if (mask & 1 << i) {
|
||||
*((uint8_t *)&PORTB + 0x10 + i) |= 1 << PORT_PULLUPEN_bp;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port pin data direction
|
||||
*
|
||||
* Select if the pin data direction is input, output or disabled.
|
||||
* If disabled state is not possible, this function throws an assert.
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] dir PORT_DIR_IN = Data direction in
|
||||
* PORT_DIR_OUT = Data direction out
|
||||
* PORT_DIR_OFF = Disables the pin
|
||||
* (low power state)
|
||||
*/
|
||||
static inline void PORTB_set_pin_dir(const uint8_t pin, const enum port_dir dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case PORT_DIR_IN:
|
||||
VPORTB.DIR &= ~(1 << pin);
|
||||
break;
|
||||
case PORT_DIR_OUT:
|
||||
VPORTB.DIR |= (1 << pin);
|
||||
break;
|
||||
case PORT_DIR_OFF:
|
||||
*((uint8_t *)&PORTB + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port level
|
||||
*
|
||||
* Sets output level on the pins defined by the bit mask
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means apply port level to the corresponding
|
||||
* pin
|
||||
* \param[in] level true = Pin levels set to "high" state
|
||||
* false = Pin levels set to "low" state
|
||||
*/
|
||||
static inline void PORTB_set_port_level(const uint8_t mask, const bool level)
|
||||
{
|
||||
if (level == true) {
|
||||
VPORTB.OUT |= mask;
|
||||
} else {
|
||||
VPORTB.OUT &= ~mask;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set port level
|
||||
*
|
||||
* Sets output level on a pin
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
* \param[in] level true = Pin level set to "high" state
|
||||
* false = Pin level set to "low" state
|
||||
*/
|
||||
static inline void PORTB_set_pin_level(const uint8_t pin, const bool level)
|
||||
{
|
||||
if (level == true) {
|
||||
VPORTB.OUT |= (1 << pin);
|
||||
} else {
|
||||
VPORTB.OUT &= ~(1 << pin);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Toggle out level on pins
|
||||
*
|
||||
* Toggle the pin levels on pins defined by bit mask
|
||||
*
|
||||
* \param[in] mask Bit mask where 1 means toggle pin level to the corresponding
|
||||
* pin
|
||||
*/
|
||||
static inline void PORTB_toggle_port_level(const uint8_t mask)
|
||||
{
|
||||
PORTB.OUTTGL = mask;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Toggle output level on pin
|
||||
*
|
||||
* Toggle the pin levels on pins defined by bit mask
|
||||
*
|
||||
* \param[in] pin The pin number within port
|
||||
*/
|
||||
static inline void PORTB_toggle_pin_level(const uint8_t pin)
|
||||
{
|
||||
PORTB.OUTTGL = 1 << pin;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get input level on pins
|
||||
*
|
||||
* Read the input level on pins connected to a port
|
||||
*
|
||||
*/
|
||||
static inline uint8_t PORTB_get_port_level()
|
||||
{
|
||||
return VPORTB.IN;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get level on pin
|
||||
*
|
||||
* Reads the level on pins connected to a port
|
||||
*/
|
||||
static inline bool PORTB_get_pin_level(const uint8_t pin)
|
||||
{
|
||||
return VPORTB.IN & (1 << pin);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Write value to Port
|
||||
*
|
||||
* Write directly to the port OUT register
|
||||
*
|
||||
* \param[in] value Value to write to the port register
|
||||
*/
|
||||
static inline void PORTB_write_port(const uint8_t value)
|
||||
{
|
||||
VPORTB.OUT = value;
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PORT_INCLUDED */
|
||||
@@ -0,0 +1,95 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_system_protected_io Protected IO
|
||||
* \ingroup doc_driver_system
|
||||
*
|
||||
* \section doc_driver_protected_io_rev Revision History
|
||||
* - v0.0.0.1 Initial Commit
|
||||
*
|
||||
*@{
|
||||
*/
|
||||
|
||||
#ifndef PROTECTED_IO_H
|
||||
#define PROTECTED_IO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(__DOXYGEN__)
|
||||
//! \name IAR Memory Model defines.
|
||||
//@{
|
||||
|
||||
/**
|
||||
* \def CONFIG_MEMORY_MODEL_TINY
|
||||
* \brief Configuration symbol to enable 8 bit pointers.
|
||||
*
|
||||
*/
|
||||
#define CONFIG_MEMORY_MODEL_TINY
|
||||
|
||||
/**
|
||||
* \def CONFIG_MEMORY_MODEL_SMALL
|
||||
* \brief Configuration symbol to enable 16 bit pointers.
|
||||
* \note If no memory model is defined, SMALL is default.
|
||||
*
|
||||
*/
|
||||
#define CONFIG_MEMORY_MODEL_SMALL
|
||||
|
||||
/**
|
||||
* \def CONFIG_MEMORY_MODEL_LARGE
|
||||
* \brief Configuration symbol to enable 24 bit pointers.
|
||||
*
|
||||
*/
|
||||
#define CONFIG_MEMORY_MODEL_LARGE
|
||||
|
||||
//@}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Write to am 8-bit I/O register protected by CCP or a protection bit
|
||||
*
|
||||
* \param addr Address of the I/O register
|
||||
* \param magic CCP magic value or Mask for protection bit
|
||||
* \param value Value to be written
|
||||
*
|
||||
* \note Using IAR Embedded workbench, the choice of memory model has an impact
|
||||
* on calling convention. The memory model is not visible to the
|
||||
* preprocessor, so it must be defined in the Assembler preprocessor directives.
|
||||
*/
|
||||
extern void protected_write_io(void *addr, uint8_t magic, uint8_t value);
|
||||
|
||||
/** @} */
|
||||
|
||||
#endif /* PROTECTED_IO_H */
|
||||
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef RSTCTRL_INCLUDED
|
||||
#define RSTCTRL_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "ccp.h"
|
||||
|
||||
static inline void RSTCTRL_reset(void)
|
||||
{
|
||||
/* SWRR is protected with CCP */
|
||||
// ccp_write_io((void *)&RSTCTRL.SWRR, 0x1);
|
||||
}
|
||||
|
||||
static inline uint8_t RSTCTRL_get_reset_cause(void)
|
||||
{
|
||||
return RSTCTRL.RSTFR;
|
||||
}
|
||||
|
||||
static inline void RSTCTRL_clear_reset_cause(void)
|
||||
{
|
||||
RSTCTRL.RSTFR
|
||||
= RSTCTRL_UPDIRF_bm | RSTCTRL_SWRF_bm | RSTCTRL_WDRF_bm | RSTCTRL_EXTRF_bm | RSTCTRL_BORF_bm | RSTCTRL_PORF_bm;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* RSTCTRL_INCLUDED */
|
||||
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TCB0_H_INCLUDED
|
||||
#define TCB0_H_INCLUDED
|
||||
|
||||
#include "../utils/compiler.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (*TCB0_cb_t)(void);
|
||||
void TCB0_SetCaptIsrCallback(TCB0_cb_t cb);
|
||||
void TCB0_SetOvfIsrCallback(TCB0_cb_t cb);
|
||||
|
||||
int8_t TCB0_Initialize();
|
||||
void TCB0_EnableCaptInterrupt(void);
|
||||
void TCB0_DisableCaptInterrupt(void);
|
||||
uint16_t TCB0_ReadTimer(void);
|
||||
void TCB0_WriteTimer(uint16_t timerVal);
|
||||
void TCB0_ClearCaptInterruptFlag(void);
|
||||
bool TCB0_IsCaptInterruptEnabled();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TCB0_H_INCLUDED */
|
||||
@@ -0,0 +1,186 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TWI0_SLAVE_H
|
||||
#define TWI0_SLAVE_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include "../utils/compiler.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void(TWI0_callback)(void);
|
||||
|
||||
/**
|
||||
* \brief Initialize I2C interface
|
||||
* If module is configured to disabled state, the clock to the I2C is disabled
|
||||
* if this is supported by the device's clock system.
|
||||
*
|
||||
* \return Initialization status.
|
||||
* \retval 0 the init was successful
|
||||
* \retval 1 the init was not successful
|
||||
*/
|
||||
uint8_t I2C_Initialize(void);
|
||||
|
||||
/**
|
||||
* \brief Open the I2C for communication. Enables the module if disabled.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_Open(void);
|
||||
|
||||
/**
|
||||
* \brief Close the I2C for communication. Disables the module if enabled.
|
||||
* Disables address recognition.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_Close(void);
|
||||
|
||||
/**
|
||||
* \brief The function called by the I2C IRQ handler.
|
||||
* Can be called in a polling loop in a polled driver.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_isr(void);
|
||||
|
||||
/**
|
||||
* \brief Read one byte from the data register of I2C
|
||||
*
|
||||
* Function will not block if a character is not available, so should
|
||||
* only be called when data is available.
|
||||
*
|
||||
* \return Data read from the I2C module
|
||||
*/
|
||||
uint8_t I2C_Read(void);
|
||||
|
||||
/**
|
||||
* \brief Write one byte to the data register of I2C
|
||||
*
|
||||
* Function will not block if data cannot be safely accepted, so should
|
||||
* only be called when safe, i.e. in the read callback handler.
|
||||
*
|
||||
* \param[in] data The character to write to the I2C
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_Write(uint8_t data);
|
||||
|
||||
/**
|
||||
* \brief Enable address recognition in I2C
|
||||
* 1. If supported by the clock system, enables the clock to the module
|
||||
* 2. Enables the I2C slave functionality by setting the enable-bit in the HW's control register
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_Enable(void);
|
||||
|
||||
/**
|
||||
* \brief Send ACK to received address or data. Should
|
||||
* only be called when appropriate, i.e. in the callback handlers.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SendAck(void);
|
||||
|
||||
/**
|
||||
* \brief Send NACK to received address or data. Should
|
||||
* only be called when appropriate, i.e. in the callback handlers.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SendNack(void);
|
||||
|
||||
/**
|
||||
* \brief Goto unaddressed state. Used to reset I2C HW that are aware
|
||||
* of bus state to an unaddressed state.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_GotoUnaddressed(void);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where master wishes to read a byte from slave.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetReadCallback(TWI0_callback handler);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where master wishes to write a byte to slave.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetWriteCallback(TWI0_callback handler);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where slave has received its address.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetAddressCallback(TWI0_callback handler);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where slave has received a STOP condition after being addressed.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetStopCallback(TWI0_callback handler);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where slave detects a bus collision.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetCollisionCallback(TWI0_callback handler);
|
||||
|
||||
/**
|
||||
* \brief Callback handler for event where slave detects a bus error.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void I2C_SetBusErrorCallback(TWI0_callback handler);
|
||||
|
||||
|
||||
void I2C_SetAddress(uint8_t address);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TWI0_SLAVE_H */
|
||||
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef USART0_H_INCLUDED
|
||||
#define USART0_H_INCLUDED
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include "../utils/compiler.h"
|
||||
#include "../utils/atomic.h"
|
||||
#include "../config/clock_config.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Normal Mode, Baud register value */
|
||||
#define USART0_BAUD_RATE(BAUD_RATE) (((float)20000000 * 64 / (16 * (float)BAUD_RATE)) + 0.5)
|
||||
|
||||
/**
|
||||
* \brief Initialize USART interface
|
||||
* If module is configured to disabled state, the clock to the USART is disabled
|
||||
* if this is supported by the device's clock system.
|
||||
*
|
||||
* \return Initialization status.
|
||||
* \retval 0 the USART init was successful
|
||||
* \retval 1 the USART init was not successful
|
||||
*/
|
||||
void UART_Initialize();
|
||||
|
||||
/**
|
||||
* \brief Enable RX and TX in UART
|
||||
* 1. If supported by the clock system, enables the clock to the USART
|
||||
* 2. Enables the USART module by setting the RX and TX enable-bits in the USART control register
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void UART_Enable();
|
||||
|
||||
/**
|
||||
* \brief Enable RX in UART
|
||||
* 1. If supported by the clock system, enables the clock to the USART
|
||||
* 2. Enables the USART module by setting the RX enable-bit in the USART control register
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void UART_EnableRx();
|
||||
|
||||
/**
|
||||
* \brief Enable TX in UART
|
||||
* 1. If supported by the clock system, enables the clock to the USART
|
||||
* 2. Enables the USART module by setting the TX enable-bit in the USART control register
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void UART_EnableTx();
|
||||
|
||||
/**
|
||||
* \brief Disable UART
|
||||
* 1. Disables the USART module by clearing the enable-bit(s) in the USART control register
|
||||
* 2. If supported by the clock system, disables the clock to the USART
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void UART_Disable();
|
||||
|
||||
/**
|
||||
* \brief Get recieved data from UART
|
||||
*
|
||||
* \return Data register from UART module
|
||||
*/
|
||||
uint8_t UART_GetData();
|
||||
|
||||
/**
|
||||
* \brief Check if the usart can accept data to be transmitted
|
||||
*
|
||||
* \return The status of USART TX data ready check
|
||||
* \retval false The USART can not receive data to be transmitted
|
||||
* \retval true The USART can receive data to be transmitted
|
||||
*/
|
||||
bool UART_IsTxReady();
|
||||
|
||||
/**
|
||||
* \brief Check if the USART has received data
|
||||
*
|
||||
* \return The status of USART RX data ready check
|
||||
* \retval true The USART has received data
|
||||
* \retval false The USART has not received data
|
||||
*/
|
||||
bool UART_IsRxReady();
|
||||
|
||||
/**
|
||||
* \brief Check if UART data is transmitted
|
||||
*
|
||||
* \return Receiver ready status
|
||||
* \retval true Data is not completely shifted out of the shift register
|
||||
* \retval false Data completely shifted out if the USART shift register
|
||||
*/
|
||||
bool UART_IsTxBusy();
|
||||
|
||||
bool UART_IsTxDone();
|
||||
|
||||
/**
|
||||
* \brief Read one character from UART
|
||||
*
|
||||
* Function will block if a character is not available.
|
||||
*
|
||||
* \return Data read from the UART module
|
||||
*/
|
||||
uint8_t UART_Read(void);
|
||||
|
||||
/**
|
||||
* \brief Write one character to UART
|
||||
*
|
||||
* Function will block until a character can be accepted.
|
||||
*
|
||||
* \param[in] data The character to write to the USART
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void UART_Write(const uint8_t data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* USART0_H_INCLUDED */
|
||||
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "mcc.h"
|
||||
|
||||
/**
|
||||
* Initializes MCU, drivers and middleware in the project
|
||||
**/
|
||||
void SYSTEM_Initialize(void)
|
||||
{
|
||||
PIN_MANAGER_Initialize();
|
||||
BOD_Initialize();
|
||||
WDT_Initialize();
|
||||
CLKCTRL_Initialize();
|
||||
SLPCTRL_Initialize();
|
||||
I2C_Initialize();
|
||||
UART_Initialize();
|
||||
FLASH_Initialize();
|
||||
CPUINT_Initialize();
|
||||
TCB0_Initialize();
|
||||
TCB0_EnableCaptInterrupt();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initialize bod interface
|
||||
*/
|
||||
int8_t BOD_Initialize()
|
||||
{
|
||||
//SLEEP DIS;
|
||||
ccp_write_io((void*)&(BOD.CTRLA),0x00);
|
||||
|
||||
//VLMCFG BELOW; VLMIE disabled;
|
||||
BOD.INTCTRL = 0x00;
|
||||
|
||||
//VLMLVL 5ABOVE;
|
||||
BOD.VLMCTRLA = 0x00;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ISR(BOD_VLM_vect)
|
||||
{
|
||||
/* Insert your AC interrupt handling code here */
|
||||
|
||||
/* The interrupt flag has to be cleared manually */
|
||||
BOD.INTFLAGS = BOD_VLMIE_bm;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initialize clkctrl interface
|
||||
*/
|
||||
int8_t CLKCTRL_Initialize()
|
||||
{
|
||||
//RUNSTDBY disabled;
|
||||
ccp_write_io((void*)&(CLKCTRL.OSC32KCTRLA),0x00);
|
||||
|
||||
//CSUT 1K; SEL disabled; RUNSTDBY disabled; ENABLE disabled;
|
||||
ccp_write_io((void*)&(CLKCTRL.XOSC32KCTRLA),0x00);
|
||||
|
||||
//RUNSTDBY disabled;
|
||||
ccp_write_io((void*)&(CLKCTRL.OSC20MCTRLA),0x00);
|
||||
|
||||
//PDIV 6X; PEN disabled;
|
||||
ccp_write_io((void*)&(CLKCTRL.MCLKCTRLB),0x10);
|
||||
|
||||
//CLKOUT disabled; CLKSEL OSC20M;
|
||||
ccp_write_io((void*)&(CLKCTRL.MCLKCTRLA),0x00);
|
||||
|
||||
//LOCKEN disabled;
|
||||
ccp_write_io((void*)&(CLKCTRL.MCLKLOCK),0x00);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initialize slpctrl interface
|
||||
*/
|
||||
int8_t SLPCTRL_Initialize()
|
||||
{
|
||||
//SMODE IDLE; SEN disabled;
|
||||
ccp_write_io((void*)&(SLPCTRL.CTRLA),0x00);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initialize wdt interface
|
||||
*/
|
||||
|
||||
int8_t WDT_Initialize()
|
||||
{
|
||||
//WINDOW OFF; PERIOD 2KCLK;
|
||||
ccp_write_io((void*)&(WDT.CTRLA),0x09);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef MCC_H
|
||||
#define MCC_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "utils/compiler.h"
|
||||
#include "include/pin_manager.h"
|
||||
#include "include/twi0_slave.h"
|
||||
#include "include/tcb0.h"
|
||||
#include "include/cpuint.h"
|
||||
#include "include/usart0.h"
|
||||
#include "include/nvmctrl.h"
|
||||
#include "config/clock_config.h"
|
||||
|
||||
/**
|
||||
* Initializes MCU, drivers and middleware in the project
|
||||
**/
|
||||
void SYSTEM_Initialize(void);
|
||||
int8_t BOD_Initialize();
|
||||
int8_t CLKCTRL_Initialize();
|
||||
int8_t SLPCTRL_Initialize();
|
||||
int8_t WDT_Initialize();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* MCC_H */
|
||||
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/cpuint.h"
|
||||
|
||||
/**
|
||||
* \brief Initialize cpuint interface
|
||||
*/
|
||||
int8_t CPUINT_Initialize()
|
||||
{
|
||||
/* IVSEL and CVT are Configuration Change Protected */
|
||||
|
||||
//IVSEL disabled; CVT disabled; LVL0RR disabled;
|
||||
ccp_write_io((void*)&(CPUINT.CTRLA),0x00);
|
||||
|
||||
//LVL0PRI 0;
|
||||
CPUINT.LVL0PRI = 0x00;
|
||||
|
||||
//LVL1VEC 0;
|
||||
CPUINT.LVL1VEC = 0x00;
|
||||
|
||||
ENABLE_INTERRUPTS();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,367 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "../include/nvmctrl.h"
|
||||
|
||||
/**
|
||||
* \brief Initialize nvmctrl interface
|
||||
* \return Return value 0 if success
|
||||
*/
|
||||
int8_t FLASH_Initialize()
|
||||
{
|
||||
//BOOTLOCK disabled; APCWP disabled;
|
||||
NVMCTRL.CTRLB = 0x00;
|
||||
|
||||
//EEREADY disabled;
|
||||
NVMCTRL.INTCTRL = 0x00;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ISR(NVMCTRL_EE_vect)
|
||||
{
|
||||
|
||||
/* The interrupt flag has to be cleared manually */
|
||||
NVMCTRL.INTFLAGS = NVMCTRL_EEREADY_bm;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Read a byte from eeprom
|
||||
*
|
||||
* \param[in] eeprom_adr The byte-address in eeprom to read from
|
||||
*
|
||||
* \return The read byte
|
||||
*/
|
||||
uint8_t FLASH_ReadEepromByte(eeprom_adr_t eeprom_adr)
|
||||
{
|
||||
// Read operation will be stalled by hardware if any write is in progress
|
||||
return *(uint8_t *)(EEPROM_START + eeprom_adr);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Write a byte to eeprom
|
||||
*
|
||||
* \param[in] eeprom_adr The byte-address in eeprom to write to
|
||||
* \param[in] data The byte to write
|
||||
*
|
||||
* \return Status of write operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteEepromByte(eeprom_adr_t eeprom_adr, uint8_t data)
|
||||
{
|
||||
/* Wait for completion of previous write */
|
||||
while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm)
|
||||
;
|
||||
|
||||
/* Clear page buffer */
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEBUFCLR_gc);
|
||||
|
||||
/* Write byte to page buffer */
|
||||
*(uint8_t *)(EEPROM_START + eeprom_adr) = data;
|
||||
|
||||
/* Erase byte and program it with desired value */
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
|
||||
return NVM_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Read a block from eeprom
|
||||
*
|
||||
* \param[in] eeprom_adr The byte-address in eeprom to read from
|
||||
* \param[in] data Buffer to place read data into
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void FLASH_ReadEepromBlock(eeprom_adr_t eeprom_adr, uint8_t *data, size_t size)
|
||||
{
|
||||
// Read operation will be stalled by hardware if any write is in progress
|
||||
memcpy(data, (uint8_t *)(EEPROM_START + eeprom_adr), size);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Write a block to eeprom
|
||||
*
|
||||
* \param[in] eeprom_adr The byte-address in eeprom to write to
|
||||
* \param[in] data The buffer to write
|
||||
*
|
||||
* \return Status of write operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteEepromBlock(eeprom_adr_t eeprom_adr, uint8_t *data, size_t size)
|
||||
{
|
||||
uint8_t *write = (uint8_t *)(EEPROM_START + eeprom_adr);
|
||||
|
||||
/* Wait for completion of previous write */
|
||||
while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm)
|
||||
;
|
||||
|
||||
/* Clear page buffer */
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEBUFCLR_gc);
|
||||
|
||||
do {
|
||||
/* Write byte to page buffer */
|
||||
*write++ = *data++;
|
||||
size--;
|
||||
// If we have filled an entire page or written last byte to a partially filled page
|
||||
if ((((uintptr_t)write % EEPROM_PAGE_SIZE) == 0) || (size == 0)) {
|
||||
/* Erase written part of page and program with desired value(s) */
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
}
|
||||
} while (size != 0);
|
||||
|
||||
return NVM_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Check if the EEPROM can accept data to be read or written
|
||||
*
|
||||
* \return The status of EEPROM busy check
|
||||
* \retval false The EEPROM can not receive data to be read or written
|
||||
* \retval true The EEPROM can receive data to be read or written
|
||||
*/
|
||||
bool FLASH_IsEepromReady()
|
||||
{
|
||||
return (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Read a byte from flash
|
||||
*
|
||||
* \param[in] flash_adr The byte-address in flash to read from
|
||||
*
|
||||
* \return The read byte
|
||||
*/
|
||||
uint8_t FLASH_ReadFlashByte(flash_adr_t flash_adr)
|
||||
{
|
||||
|
||||
return *(uint8_t *)(MAPPED_PROGMEM_START + flash_adr);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Write a byte to flash
|
||||
*
|
||||
* \param[in] flash_adr The byte-address in flash to write to
|
||||
* \param[in] page_buffer A buffer in memory the size of a flash page, used as a scratchpad
|
||||
* \param[in] data The byte to write
|
||||
*
|
||||
* \return Status of the operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteFlashByte(flash_adr_t flash_adr, uint8_t *ram_buffer, uint8_t data)
|
||||
{
|
||||
// Create a pointer to the start of the flash page containing the byte to write
|
||||
volatile uint8_t *start_of_page = (uint8_t *)((MAPPED_PROGMEM_START + flash_adr) & ~(PROGMEM_PAGE_SIZE - 1));
|
||||
uint8_t i;
|
||||
|
||||
/* Backup all the FLASH page data to page buffer and update the new data.
|
||||
The page buffer is loaded by writing directly to the memories as defined in the memory map.
|
||||
A write to start_of_page fills the page buffer and a read from start_of_page reads the flash location*/
|
||||
for (i = 0; i < flash_adr % PROGMEM_PAGE_SIZE; i++) {
|
||||
start_of_page[i] = start_of_page[i]; //filling the page buffer from flash
|
||||
}
|
||||
start_of_page[i++] = data;// updating the new data
|
||||
for (; i < PROGMEM_PAGE_SIZE; i++) {
|
||||
start_of_page[i] = start_of_page[i];//filling the page buffer from flash
|
||||
}
|
||||
|
||||
// Erase and write the flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
else
|
||||
return NVM_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Erase a page in flash
|
||||
*
|
||||
* \param[in] flash_adr The byte-address in flash to erase. Must point to start-of-page.
|
||||
*
|
||||
* \return Status of the operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_EraseFlashPage(flash_adr_t flash_adr)
|
||||
{
|
||||
|
||||
// Create a pointer in unified memory map to the page to erase
|
||||
uint8_t *data_space = (uint8_t *)(MAPPED_PROGMEM_START + flash_adr);
|
||||
|
||||
// Perform a dummy write to this address to update the address register in NVMCTL
|
||||
*data_space = 0;
|
||||
|
||||
// Erase the flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASE_gc);
|
||||
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
else
|
||||
return NVM_OK;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Write a page in flash. No page erase is performed by this function.
|
||||
*
|
||||
* \param[in] flash_adr: starting address of NVM page which needs to be written
|
||||
* \param[in] data: pointer to an array of size 'PROGMEM_PAGE_SIZE'
|
||||
*
|
||||
* \return Status of the operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteFlashPage(flash_adr_t flash_adr, uint8_t *data)
|
||||
{
|
||||
// Calculate the starting address of the page which contains the requested flash address
|
||||
uint16_t pageStartAddr = (uint16_t) (flash_adr & ((PROGMEM_SIZE - 1) ^ (PROGMEM_PAGE_SIZE - 1)));
|
||||
|
||||
// Create a pointer in unified memory map to the page to write
|
||||
uint8_t *data_space = (uint8_t *)(MAPPED_PROGMEM_START + flash_adr);
|
||||
|
||||
// Return error if requested address is not the starting address of a page
|
||||
if (pageStartAddr != flash_adr)
|
||||
return NVM_ERROR;
|
||||
|
||||
// Write data to the page buffer
|
||||
memcpy(data_space, data, PROGMEM_PAGE_SIZE);
|
||||
|
||||
// Write the flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEWRITE_gc);
|
||||
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
else
|
||||
return NVM_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Writes a buffer to flash.
|
||||
* The flash does not need to be erased beforehand.
|
||||
* The flash address to write to does not need to be aligned to any specific boundary.
|
||||
*
|
||||
* \param[in] flash_adr The byte-address of the flash to write to
|
||||
* \param[in] data The data to write to the flash
|
||||
* \param[in] size The size of the data (in bytes) to write to the flash
|
||||
* \param[in] page_buffer A buffer in memory the size of a flash page, used as a scratchpad
|
||||
*
|
||||
* \return Status of the operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteFlashBlock(flash_adr_t flash_adr, uint8_t *data, size_t size, uint8_t *ram_buffer)
|
||||
{
|
||||
|
||||
// Create a pointer in unified memory map to the start of first page to modify
|
||||
volatile uint8_t *data_space = (uint8_t *)((MAPPED_PROGMEM_START + flash_adr) & ~(PROGMEM_PAGE_SIZE - 1));
|
||||
uint8_t start_offset = flash_adr % PROGMEM_PAGE_SIZE;
|
||||
uint8_t i;
|
||||
|
||||
// Step 1:
|
||||
// Fill page buffer with contents of first flash page to be written up
|
||||
// to the first flash address to be replaced by the new contents
|
||||
for (i = 0; i < start_offset; i++) {
|
||||
*data_space = *data_space;
|
||||
data_space++;
|
||||
}
|
||||
|
||||
// Step 2:
|
||||
// Write all of the new flash contents to the page buffer, writing the
|
||||
// page buffer to flash every time the buffer contains a complete flash
|
||||
// page.
|
||||
while (size > 0) {
|
||||
*data_space++ = *data++;
|
||||
size--;
|
||||
if (((uintptr_t)data_space % PROGMEM_PAGE_SIZE) == 0) {
|
||||
// Erase and write the flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// Step 3:
|
||||
// After step 2, the page buffer may be partially full with the last
|
||||
// part of the new data to write to flash. The remainder of the flash page
|
||||
// shall be unaltered. Fill up the remainder
|
||||
// of the page buffer with the original contents of the flash page, and do a
|
||||
// final flash page write.
|
||||
while (1) {
|
||||
*data_space = *data_space;
|
||||
data_space++;
|
||||
if (((uintptr_t)data_space % PROGMEM_PAGE_SIZE) == 0) {
|
||||
// Erase and write the last flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
else
|
||||
return NVM_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Writes a byte stream to flash.
|
||||
* The erase granularity of the flash (i.e. one page) will cause this operation
|
||||
* to erase an entire page at a time. To avoid corrupting other flash contents,
|
||||
* make sure that the memory range in flash being streamed to is starting on a page
|
||||
* boundary, and that enough flash pages are available to hold all data being written.
|
||||
*
|
||||
* The function will perform flash page operations such as erase and write
|
||||
* as appropriate, typically when the last byte in a page is written. If
|
||||
* the last byte written is not at the last address of a page, the "finalize"
|
||||
* parameter can be set to force a page write after this byte.
|
||||
*
|
||||
* This function is intended used in devices where RAM resources are too limited
|
||||
* to afford a buffer needed by the write and erase page functions, and where
|
||||
* performance needs and code size concerns leaves the byte write and block
|
||||
* write functions too expensive.
|
||||
*
|
||||
* \param[in] flash_adr The byte-address of the flash to write to
|
||||
* \param[in] data The data byte to write to the flash
|
||||
* \param[in] finalize Set to true for the final write to the buffer
|
||||
*
|
||||
* \return Status of the operation
|
||||
*/
|
||||
nvmctrl_status_t FLASH_WriteFlashStream(flash_adr_t flash_adr, uint8_t data, bool finalize)
|
||||
{
|
||||
|
||||
bool final_adr_in_page = ((flash_adr & (PROGMEM_PAGE_SIZE - 1)) == (PROGMEM_PAGE_SIZE - 1));
|
||||
|
||||
// Write the new byte value to the correct address in the page buffer
|
||||
*(uint8_t *)(MAPPED_PROGMEM_START + flash_adr) = data;
|
||||
|
||||
if (final_adr_in_page || finalize)
|
||||
// Erase and write the flash page
|
||||
ccp_write_spm((void *)&NVMCTRL.CTRLA, NVMCTRL_CMD_PAGEERASEWRITE_gc);
|
||||
|
||||
if (NVMCTRL.STATUS & NVMCTRL_WRERROR_bm)
|
||||
return NVM_ERROR;
|
||||
else
|
||||
return NVM_OK;
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/pin_manager.h"
|
||||
static void (*PORTB_PB3_InterruptHandler)(void);
|
||||
static void (*PORTA_PA2_InterruptHandler)(void);
|
||||
static void (*PORTB_PB2_InterruptHandler)(void);
|
||||
static void (*PORTA_PA1_InterruptHandler)(void);
|
||||
static void (*PORTA_SOLENOID_FET_InterruptHandler)(void);
|
||||
static void (*PORTB_LED_InterruptHandler)(void);
|
||||
|
||||
void PORT_Initialize(void);
|
||||
|
||||
void PIN_MANAGER_Initialize()
|
||||
{
|
||||
PORT_Initialize();
|
||||
|
||||
/* DIR Registers Initialization */
|
||||
PORTA.DIR = 0x08;
|
||||
PORTB.DIR = 0x06;
|
||||
|
||||
/* OUT Registers Initialization */
|
||||
PORTA.OUT = 0x00;
|
||||
PORTB.OUT = 0x00;
|
||||
|
||||
/* PINxCTRL registers Initialization */
|
||||
PORTA.PIN0CTRL = 0x00;
|
||||
PORTA.PIN1CTRL = 0x00;
|
||||
PORTA.PIN2CTRL = 0x00;
|
||||
PORTA.PIN3CTRL = 0x00;
|
||||
PORTA.PIN4CTRL = 0x00;
|
||||
PORTA.PIN5CTRL = 0x00;
|
||||
PORTA.PIN6CTRL = 0x04;
|
||||
PORTA.PIN7CTRL = 0x00;
|
||||
PORTB.PIN0CTRL = 0x00;
|
||||
PORTB.PIN1CTRL = 0x00;
|
||||
PORTB.PIN2CTRL = 0x00;
|
||||
PORTB.PIN3CTRL = 0x00;
|
||||
PORTB.PIN4CTRL = 0x00;
|
||||
PORTB.PIN5CTRL = 0x00;
|
||||
PORTB.PIN6CTRL = 0x00;
|
||||
PORTB.PIN7CTRL = 0x00;
|
||||
|
||||
/* PORTMUX Initialization */
|
||||
PORTMUX.CTRLA = 0x00;
|
||||
PORTMUX.CTRLB = 0x10;
|
||||
PORTMUX.CTRLC = 0x00;
|
||||
PORTMUX.CTRLD = 0x00;
|
||||
|
||||
// register default ISC callback functions at runtime; use these methods to register a custom function
|
||||
PORTB_PB3_SetInterruptHandler(PORTB_PB3_DefaultInterruptHandler);
|
||||
PORTA_PA2_SetInterruptHandler(PORTA_PA2_DefaultInterruptHandler);
|
||||
PORTB_PB2_SetInterruptHandler(PORTB_PB2_DefaultInterruptHandler);
|
||||
PORTA_PA1_SetInterruptHandler(PORTA_PA1_DefaultInterruptHandler);
|
||||
PORTA_SOLENOID_FET_SetInterruptHandler(PORTA_SOLENOID_FET_DefaultInterruptHandler);
|
||||
PORTB_LED_SetInterruptHandler(PORTB_LED_DefaultInterruptHandler);
|
||||
}
|
||||
|
||||
void PORT_Initialize(void)
|
||||
{
|
||||
/* On AVR devices all peripherals are enable from power on reset, this
|
||||
* disables all peripherals to save power. Driver shall enable
|
||||
* peripheral if used */
|
||||
|
||||
/* Set all pins to low power mode */
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
*((uint8_t *)&PORTA + 0x10 + i) |= 1 << PORT_PULLUPEN_bp;
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
*((uint8_t *)&PORTB + 0x10 + i) |= 1 << PORT_PULLUPEN_bp;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTB_PB3 at application runtime
|
||||
*/
|
||||
void PORTB_PB3_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTB_PB3_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTB_PB3_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTB_PB3 interrupt custom code
|
||||
// or set custom function using PORTB_PB3_SetInterruptHandler()
|
||||
}
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTA_PA2 at application runtime
|
||||
*/
|
||||
void PORTA_PA2_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTA_PA2_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTA_PA2_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTA_PA2 interrupt custom code
|
||||
// or set custom function using PORTA_PA2_SetInterruptHandler()
|
||||
}
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTB_PB2 at application runtime
|
||||
*/
|
||||
void PORTB_PB2_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTB_PB2_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTB_PB2_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTB_PB2 interrupt custom code
|
||||
// or set custom function using PORTB_PB2_SetInterruptHandler()
|
||||
}
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTA_PA1 at application runtime
|
||||
*/
|
||||
void PORTA_PA1_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTA_PA1_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTA_PA1_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTA_PA1 interrupt custom code
|
||||
// or set custom function using PORTA_PA1_SetInterruptHandler()
|
||||
}
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTA_SOLENOID_FET at application runtime
|
||||
*/
|
||||
void PORTA_SOLENOID_FET_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTA_SOLENOID_FET_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTA_SOLENOID_FET_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTA_SOLENOID_FET interrupt custom code
|
||||
// or set custom function using PORTA_SOLENOID_FET_SetInterruptHandler()
|
||||
}
|
||||
/**
|
||||
Allows selecting an interrupt handler for PORTB_LED at application runtime
|
||||
*/
|
||||
void PORTB_LED_SetInterruptHandler(void (* interruptHandler)(void))
|
||||
{
|
||||
PORTB_LED_InterruptHandler = interruptHandler;
|
||||
}
|
||||
|
||||
void PORTB_LED_DefaultInterruptHandler(void)
|
||||
{
|
||||
// add your PORTB_LED interrupt custom code
|
||||
// or set custom function using PORTB_LED_SetInterruptHandler()
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../utils/assembler.h"
|
||||
|
||||
/*
|
||||
* GNU and IAR use different calling conventions. Since this is
|
||||
* a very small and simple function to begin with, it's easier
|
||||
* to implement it twice than to deal with the differences
|
||||
* within a single implementation.
|
||||
*/
|
||||
|
||||
PUBLIC_FUNCTION(protected_write_io)
|
||||
|
||||
#if defined(__GNUC__)
|
||||
|
||||
#ifdef RAMPZ
|
||||
out _SFR_IO_ADDR(RAMPZ), r1 // Clear bits 23:16 of Z
|
||||
#endif
|
||||
movw r30, r24 // Load addr into Z
|
||||
out CCP, r22 // Start CCP handshake
|
||||
st Z, r20 // Write value to I/O register
|
||||
ret // Return to caller
|
||||
|
||||
#elif defined(__IAR_SYSTEMS_ASM__)
|
||||
|
||||
# if !defined(CONFIG_MEMORY_MODEL_TINY) && !defined(CONFIG_MEMORY_MODEL_SMALL) \
|
||||
&& !defined(CONFIG_MEMORY_MODEL_LARGE)
|
||||
# define CONFIG_MEMORY_MODEL_SMALL
|
||||
# endif
|
||||
# if defined(CONFIG_MEMORY_MODEL_LARGE)
|
||||
ldi r20, 0
|
||||
out RAMPZ, r20 // Reset bits 23:16 of Z
|
||||
movw r30, r16 // Load addr into Z
|
||||
# elif defined(CONFIG_MEMORY_MODEL_TINY)
|
||||
ldi r31, 0 // Reset bits 8:15 of Z
|
||||
mov r30, r16 // Load addr into Z
|
||||
# else
|
||||
movw r30, r16 // Load addr into Z
|
||||
# endif
|
||||
# if defined(CONFIG_MEMORY_MODEL_TINY)
|
||||
out CCP, r17 // Start CCP handshake
|
||||
st Z, r18 // Write value to I/O register
|
||||
# elif defined(CONFIG_MEMORY_MODEL_SMALL)
|
||||
out CCP, r18 // Start CCP handshake
|
||||
st Z, r19 // Write value to I/O register
|
||||
# elif defined(CONFIG_MEMORY_MODEL_LARGE)
|
||||
out CCP, r19 // Start CCP handshake
|
||||
st Z, r20 // Write value to I/O register
|
||||
# else
|
||||
# error Unknown memory model in use, no idea how registers should be accessed
|
||||
# endif
|
||||
ret
|
||||
#else
|
||||
# error Unknown assembler
|
||||
#endif
|
||||
|
||||
END_FUNC(protected_write_io)
|
||||
END_FILE()
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/tcb0.h"
|
||||
|
||||
extern void SysTick(void);
|
||||
|
||||
/**
|
||||
* \brief Initialize tcb interface
|
||||
*
|
||||
* \return Initialization status.
|
||||
*/
|
||||
|
||||
void (*TCB0_CAPT_isr_cb)(void) = NULL;
|
||||
|
||||
void TCB0_SetCaptIsrCallback(TCB0_cb_t cb)
|
||||
{
|
||||
TCB0_CAPT_isr_cb = cb;
|
||||
}
|
||||
|
||||
|
||||
ISR(TCB0_INT_vect)
|
||||
{
|
||||
/* Insert your TCB interrupt handling code */
|
||||
|
||||
/**
|
||||
* The interrupt flag is cleared by writing 1 to it, or when the Capture register
|
||||
* is read in Capture mode
|
||||
*/
|
||||
if(TCB0.INTFLAGS & TCB_CAPT_bm)
|
||||
{
|
||||
if (TCB0_CAPT_isr_cb != NULL)
|
||||
{
|
||||
(*TCB0_CAPT_isr_cb)();
|
||||
}
|
||||
|
||||
TCB0.INTFLAGS = TCB_CAPT_bm;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initialize TCB interface
|
||||
*/
|
||||
int8_t TCB0_Initialize()
|
||||
{
|
||||
//Compare or Capture
|
||||
TCB0.CCMP = 0x4E1F;
|
||||
|
||||
//Count
|
||||
TCB0.CNT = 0x00;
|
||||
|
||||
//ASYNC disabled; CCMPINIT disabled; CCMPEN disabled; CNTMODE INT;
|
||||
TCB0.CTRLB = 0x00;
|
||||
|
||||
//DBGRUN disabled;
|
||||
TCB0.DBGCTRL = 0x00;
|
||||
|
||||
//FILTER disabled; EDGE disabled; CAPTEI disabled;
|
||||
TCB0.EVCTRL = 0x00;
|
||||
|
||||
//CAPT disabled;
|
||||
TCB0.INTCTRL = 0x00;
|
||||
|
||||
//CAPT disabled;
|
||||
TCB0.INTFLAGS = 0x00;
|
||||
|
||||
//Temporary Value
|
||||
TCB0.TEMP = 0x00;
|
||||
|
||||
//RUNSTDBY disabled; SYNCUPD disabled; CLKSEL CLKDIV1; ENABLE enabled;
|
||||
TCB0.CTRLA = 0x01;
|
||||
|
||||
|
||||
TCB0_CAPT_isr_cb = SysTick;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void TCB0_WriteTimer(uint16_t timerVal)
|
||||
{
|
||||
TCB0.CNT=timerVal;
|
||||
}
|
||||
|
||||
uint16_t TCB0_ReadTimer(void)
|
||||
{
|
||||
uint16_t readVal;
|
||||
|
||||
readVal = TCB0.CNT;
|
||||
|
||||
return readVal;
|
||||
}
|
||||
|
||||
void TCB0_EnableCaptInterrupt(void)
|
||||
{
|
||||
TCB0.INTCTRL |= TCB_CAPT_bm; /* Capture or Timeout: enabled */
|
||||
}
|
||||
|
||||
void TCB0_DisableCaptInterrupt(void)
|
||||
{
|
||||
TCB0.INTCTRL &= ~TCB_CAPT_bm; /* Capture or Timeout: disabled */
|
||||
|
||||
}
|
||||
|
||||
inline void TCB0_ClearCaptInterruptFlag(void)
|
||||
{
|
||||
TCB0.INTFLAGS &= ~TCB_CAPT_bm;
|
||||
|
||||
}
|
||||
|
||||
inline bool TCB0_IsCaptInterruptEnabled(void)
|
||||
{
|
||||
return ((TCB0.INTCTRL & TCB_CAPT_bm) > 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,465 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/twi0_slave.h"
|
||||
#include "../../mcc_generated_files/utils/atomic.h"
|
||||
#include "../../debug.h"
|
||||
#include "../../SolenoidDriver.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
/* I2C Internal API's */
|
||||
/* Slave */
|
||||
bool I2C_SlaveIsAddressInterrupt(void);
|
||||
bool I2C_SlaveIsDataInterrupt(void);
|
||||
bool I2C_SlaveIsStopInterrupt(void);
|
||||
void I2C_SlaveOpen(void);
|
||||
void I2C_SlaveClose(void);
|
||||
bool I2C_SlaveDIR(void);
|
||||
char I2C_SlaveReset(void);
|
||||
uint8_t I2C_SlaveRead(void);
|
||||
char I2C_SlaveWrite(uint8_t data);
|
||||
bool I2C_SlaveIsNack(void);
|
||||
void I2C_SlaveSendAck(void);
|
||||
void I2C_SlaveSendNack(void);
|
||||
bool I2C_SlaveIsBusCollision(void);
|
||||
bool I2C_SlaveIsBusError(void);
|
||||
bool I2C_SlaveIsTxComplete(void);
|
||||
|
||||
// Read Event Interrupt Handlers
|
||||
void I2C_ReadCallback(void);
|
||||
void (*I2C_ReadInterruptHandler)(void);
|
||||
|
||||
// Write Event Interrupt Handlers
|
||||
void I2C_WriteCallback(void);
|
||||
void (*I2C_WriteInterruptHandler)(void);
|
||||
|
||||
// Address Event Interrupt Handlers
|
||||
void I2C_AddressCallback(void);
|
||||
void (*I2C_AddressInterruptHandler)(void);
|
||||
|
||||
// Stop Event Interrupt Handlers
|
||||
void I2C_StopCallback(void);
|
||||
void (*I2C_StopInterruptHandler)(void);
|
||||
|
||||
// Bus Collision Event Interrupt Handlers
|
||||
void I2C_CollisionCallback(void);
|
||||
void (*I2C_CollisionInterruptHandler)(void);
|
||||
|
||||
// Bus Error Event Interrupt Handlers
|
||||
void I2C_BusErrorCallback(void);
|
||||
void (*I2C_BusErrorInterruptHandler)(void);
|
||||
|
||||
// I2C buffers and positional variables
|
||||
bool processPending = false;
|
||||
uint8_t TWI_TxBuff[TWI_BUFFER_SIZE] = {0}; // Device TX to host
|
||||
uint8_t TWI_TxPos = 0;
|
||||
uint8_t TWI_TxLen = 0;
|
||||
uint8_t TWI_RxBuff[TWI_BUFFER_SIZE] = {0}; // Device RX from host
|
||||
uint8_t TWI_RxPos = 0;
|
||||
|
||||
// Function prototypes
|
||||
static void I2C_AddressFn(void);
|
||||
static void I2C_WriteFn(void);
|
||||
static void I2C_ReadFn(void);
|
||||
static void I2C_StopFn(void);
|
||||
static void I2C_CollisionFn(void);
|
||||
static void TWI_ISR_Handler(void);
|
||||
|
||||
uint8_t I2C_Initialize()
|
||||
{
|
||||
//SDASETUP 4CYC; SDAHOLD OFF; FMPEN disabled;
|
||||
TWI0.CTRLA = 0x00;
|
||||
|
||||
//Debug Run
|
||||
TWI0.DBGCTRL = 0x00;
|
||||
|
||||
//Slave Address
|
||||
TWI0.SADDR = DEVICE_I2C_ADDRESS;
|
||||
|
||||
//ADDRMASK 0; ADDREN disabled;
|
||||
TWI0.SADDRMASK = 0x00;
|
||||
// DIEN enabled; APIEN enabled; PIEN disabled; PMEN disabled; SMEN disabled; ENABLE enabled;
|
||||
TWI0.SCTRLA = 0xE1;
|
||||
|
||||
//ACKACT ACK; SCMD NOACT;
|
||||
TWI0.SCTRLB = 0x00;
|
||||
|
||||
//Slave Data
|
||||
TWI0.SDATA = 0x00;
|
||||
|
||||
//DIF disabled; APIF disabled; COLL disabled; BUSERR disabled;
|
||||
TWI0.SSTATUS = 0x00;
|
||||
|
||||
// I2C_SetWriteCallback(NULL);
|
||||
// I2C_SetReadCallback(NULL);
|
||||
// I2C_SetAddressCallback(NULL);
|
||||
// I2C_SetStopCallback(NULL);
|
||||
// I2C_SetCollisionCallback(NULL);
|
||||
// I2C_SetBusErrorCallback(NULL);
|
||||
I2C_SetWriteCallback(I2C_WriteFn);
|
||||
I2C_SetReadCallback(I2C_ReadFn);
|
||||
I2C_SetAddressCallback(I2C_AddressFn);
|
||||
I2C_SetStopCallback(I2C_StopFn);
|
||||
I2C_SetCollisionCallback(I2C_CollisionFn);
|
||||
I2C_SetBusErrorCallback(I2C_CollisionFn);
|
||||
|
||||
//TWI0.SCTRLA = 0xC1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void I2C_AddressFn(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void I2C_WriteFn(void)
|
||||
{
|
||||
// Reset TX/RX buffer positions
|
||||
TWI_RxBuff[TWI_RxPos] = I2C_SlaveRead();
|
||||
TWI_RxPos++;
|
||||
if(TWI_RxPos >= TWI_BUFFER_SIZE)
|
||||
{
|
||||
TWI_RxPos = TWI_BUFFER_SIZE-1;
|
||||
}
|
||||
}
|
||||
|
||||
static void I2C_ReadFn(void)
|
||||
{
|
||||
I2C_SlaveWrite(TWI_TxBuff[TWI_TxPos]);
|
||||
TWI_TxPos++;
|
||||
if( TWI_TxPos >= TWI_TxLen)
|
||||
{
|
||||
TWI_TxPos = TWI_BUFFER_SIZE-1;
|
||||
}
|
||||
else if(TWI_TxPos >= TWI_BUFFER_SIZE)
|
||||
{
|
||||
TWI_TxPos = TWI_TxLen-1;
|
||||
}
|
||||
}
|
||||
|
||||
static void I2C_StopFn(void)
|
||||
{
|
||||
if (processPending == true)
|
||||
{
|
||||
SolenoidDriver_ProcessRequest(TWI_RxBuff, TWI_RxPos);
|
||||
processPending = false;
|
||||
}
|
||||
|
||||
// Reset TX/RX buffer positions
|
||||
TWI_TxPos = 0;
|
||||
TWI_RxPos = 0;
|
||||
}
|
||||
|
||||
static void I2C_CollisionFn(void)
|
||||
{
|
||||
I2C_GotoUnaddressed();
|
||||
}
|
||||
|
||||
void I2C_SetAddress(uint8_t address)
|
||||
{
|
||||
// Always enable general call
|
||||
address = address | 0x01;
|
||||
TWI0.SADDR = address;
|
||||
}
|
||||
|
||||
void I2C_SetMask(uint8_t mask)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void I2C_Open(void)
|
||||
{
|
||||
I2C_SlaveOpen();
|
||||
}
|
||||
|
||||
void I2C_Close(void)
|
||||
{
|
||||
I2C_SlaveClose();
|
||||
}
|
||||
|
||||
|
||||
static void TWI_ISR_Handler(void)
|
||||
{
|
||||
if (I2C_SlaveIsBusCollision()) {
|
||||
I2C_CollisionFn();
|
||||
return;
|
||||
}
|
||||
|
||||
if (I2C_SlaveIsBusError()) {
|
||||
I2C_CollisionFn();
|
||||
return;
|
||||
}
|
||||
|
||||
if (I2C_SlaveIsAddressInterrupt()) {
|
||||
I2C_AddressFn();
|
||||
debugTWIStr("\r\nA");
|
||||
if (I2C_SlaveDIR()) {
|
||||
// Master wishes to read from slave
|
||||
// I2C_ReadFn();
|
||||
I2C_SlaveSendAck();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (I2C_SlaveIsDataInterrupt()) {
|
||||
if (I2C_SlaveDIR())
|
||||
{
|
||||
// Master wishes to read from slave
|
||||
// if (!I2C_SlaveIsNack()) {
|
||||
debugTWIStr("R");
|
||||
// Received ACK from master
|
||||
I2C_ReadFn();
|
||||
I2C_SlaveSendAck();
|
||||
// } else {
|
||||
// Received NACK from master
|
||||
// debugTWIStr("RN");
|
||||
// I2C_SlaveSendAck();
|
||||
// I2C_GotoUnaddressed();
|
||||
// }
|
||||
}
|
||||
else // Master wishes to write to slave
|
||||
{
|
||||
debugTWIStr("W");
|
||||
I2C_WriteFn();
|
||||
processPending = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if STOP was received
|
||||
if (I2C_SlaveIsStopInterrupt()) {
|
||||
debugTWIStr("S\r\n");
|
||||
I2C_StopFn();
|
||||
I2C_SlaveIsTxComplete(); // To check the status of the transaction
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ISR(TWI0_TWIS_vect)
|
||||
{
|
||||
TWI_ISR_Handler();
|
||||
|
||||
// Reset Interrupt flags
|
||||
TWI0.SSTATUS |= (TWI_DIF_bm | TWI_APIF_bm);
|
||||
}
|
||||
|
||||
|
||||
uint8_t I2C_Read(void)
|
||||
{
|
||||
return I2C_SlaveRead();
|
||||
}
|
||||
|
||||
void I2C_Write(uint8_t data)
|
||||
{
|
||||
I2C_SlaveWrite(data);
|
||||
}
|
||||
|
||||
void I2C_Enable(void)
|
||||
{
|
||||
I2C_SlaveOpen();
|
||||
}
|
||||
|
||||
void I2C_SendAck(void)
|
||||
{
|
||||
I2C_SlaveSendAck();
|
||||
}
|
||||
|
||||
void I2C_SendNack(void)
|
||||
{
|
||||
I2C_SlaveSendNack();
|
||||
}
|
||||
|
||||
void I2C_GotoUnaddressed(void)
|
||||
{
|
||||
// Reset module
|
||||
I2C_SlaveReset();
|
||||
}
|
||||
|
||||
// Read Event Interrupt Handlers
|
||||
void I2C_ReadCallback(void)
|
||||
{
|
||||
if (I2C_ReadInterruptHandler) {
|
||||
I2C_ReadInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetReadCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_ReadInterruptHandler = handler;
|
||||
}
|
||||
|
||||
// Write Event Interrupt Handlers
|
||||
void I2C_WriteCallback(void)
|
||||
{
|
||||
if (I2C_WriteInterruptHandler) {
|
||||
I2C_WriteInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetWriteCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_WriteInterruptHandler = handler;
|
||||
}
|
||||
|
||||
// Address Event Interrupt Handlers
|
||||
void I2C_AddressCallback(void)
|
||||
{
|
||||
if (I2C_AddressInterruptHandler) {
|
||||
I2C_AddressInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetAddressCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_AddressInterruptHandler = handler;
|
||||
}
|
||||
|
||||
// Stop Event Interrupt Handlers
|
||||
void I2C_StopCallback(void)
|
||||
{
|
||||
if (I2C_StopInterruptHandler) {
|
||||
I2C_StopInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetStopCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_StopInterruptHandler = handler;
|
||||
}
|
||||
|
||||
// Bus Collision Event Interrupt Handlers
|
||||
void I2C_CollisionCallback(void)
|
||||
{
|
||||
if (I2C_CollisionInterruptHandler) {
|
||||
I2C_CollisionInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetCollisionCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_CollisionInterruptHandler = handler;
|
||||
}
|
||||
|
||||
// Bus Error Event Interrupt Handlers
|
||||
void I2C_BusErrorCallback(void)
|
||||
{
|
||||
if (I2C_BusErrorInterruptHandler) {
|
||||
I2C_BusErrorInterruptHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void I2C_SetBusErrorCallback(TWI0_callback handler)
|
||||
{
|
||||
I2C_BusErrorInterruptHandler = handler;
|
||||
}
|
||||
|
||||
|
||||
/* Slave Configurations */
|
||||
void I2C_SlaveOpen(void)
|
||||
{
|
||||
TWI0.SCTRLA |= TWI_ENABLE_bm;
|
||||
}
|
||||
|
||||
void I2C_SlaveClose(void)
|
||||
{
|
||||
TWI0.SCTRLA &= ~TWI_ENABLE_bm;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsBusCollision(void)
|
||||
{
|
||||
return TWI0.SSTATUS & TWI_COLL_bm;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsBusError(void)
|
||||
{
|
||||
return TWI0.SSTATUS & TWI_BUSERR_bm;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsAddressInterrupt(void)
|
||||
{
|
||||
return (TWI0.SSTATUS & TWI_APIF_bm) && (TWI0.SSTATUS & TWI_AP_bm);
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsDataInterrupt(void)
|
||||
{
|
||||
return TWI0.SSTATUS & TWI_DIF_bm;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsStopInterrupt(void)
|
||||
{
|
||||
return (TWI0.SSTATUS & TWI_APIF_bm) && (!(TWI0.SSTATUS & TWI_AP_bm));
|
||||
}
|
||||
|
||||
bool I2C_SlaveDIR(void)
|
||||
{
|
||||
return TWI0.SSTATUS & TWI_DIR_bm;
|
||||
}
|
||||
|
||||
void I2C_SlaveSendAck(void)
|
||||
{
|
||||
TWI0.SCTRLB = TWI_ACKACT_ACK_gc | TWI_SCMD_RESPONSE_gc;
|
||||
}
|
||||
|
||||
void I2C_SlaveSendNack(void)
|
||||
{
|
||||
TWI0.SCTRLB = TWI_ACKACT_NACK_gc | TWI_SCMD_COMPTRANS_gc;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsNack(void)
|
||||
{
|
||||
return TWI0.SSTATUS & TWI_RXACK_bm;
|
||||
}
|
||||
|
||||
bool I2C_SlaveIsTxComplete(void)
|
||||
{
|
||||
TWI0.SCTRLB = TWI_SCMD_COMPTRANS_gc;
|
||||
return TWI0.SCTRLB;
|
||||
}
|
||||
|
||||
uint8_t I2C_SlaveRead(void)
|
||||
{
|
||||
return TWI0.SDATA;
|
||||
}
|
||||
|
||||
char I2C_SlaveWrite(uint8_t data)
|
||||
{
|
||||
TWI0.SDATA = data;
|
||||
TWI0.SCTRLB |= TWI_SCMD_RESPONSE_gc;
|
||||
return TWI0.SDATA;
|
||||
}
|
||||
|
||||
char I2C_SlaveReset(void)
|
||||
{
|
||||
TWI0.SSTATUS |= (TWI_DIF_bm | TWI_APIF_bm);
|
||||
TWI0.SCTRLB = TWI_SCMD_COMPTRANS_gc;
|
||||
return TWI0.SSTATUS;
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/usart0.h"
|
||||
|
||||
|
||||
void UART_Initialize()
|
||||
{
|
||||
//set baud rate register
|
||||
USART0.BAUD = (uint16_t)USART0_BAUD_RATE(115200);
|
||||
|
||||
//RXCIE disabled; TXCIE disabled; DREIE disabled; RXSIE disabled; LBME disabled; ABEIE disabled; RS485 OFF;
|
||||
USART0.CTRLA = 0x00;
|
||||
|
||||
//RXEN disabled; TXEN enabled; SFDEN disabled; ODME disabled; RXMODE NORMAL; MPCM disabled;
|
||||
USART0.CTRLB = 0x40;
|
||||
|
||||
//CMODE ASYNCHRONOUS; PMODE DISABLED; SBMODE 1BIT; CHSIZE 8BIT; UDORD disabled; UCPHA disabled;
|
||||
USART0.CTRLC = 0x03;
|
||||
|
||||
//DBGCTRL_DBGRUN
|
||||
USART0.DBGCTRL = 0x00;
|
||||
|
||||
//EVCTRL_IREI
|
||||
USART0.EVCTRL = 0x00;
|
||||
|
||||
//RXPLCTRL_RXPL
|
||||
USART0.RXPLCTRL = 0x00;
|
||||
|
||||
//TXPLCTRL_TXPL
|
||||
USART0.TXPLCTRL = 0x00;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void UART_Enable()
|
||||
{
|
||||
USART0.CTRLB |= USART_RXEN_bm | USART_TXEN_bm;
|
||||
}
|
||||
|
||||
void UART_EnableRx()
|
||||
{
|
||||
USART0.CTRLB |= USART_RXEN_bm;
|
||||
}
|
||||
|
||||
void UART_EnableTx()
|
||||
{
|
||||
USART0.CTRLB |= USART_TXEN_bm;
|
||||
}
|
||||
|
||||
void UART_Disable()
|
||||
{
|
||||
USART0.CTRLB &= ~(USART_RXEN_bm | USART_TXEN_bm);
|
||||
}
|
||||
|
||||
uint8_t UART_GetData()
|
||||
{
|
||||
return USART0.RXDATAL;
|
||||
}
|
||||
|
||||
bool UART_IsTxReady()
|
||||
{
|
||||
return (USART0.STATUS & USART_DREIF_bm);
|
||||
}
|
||||
|
||||
bool UART_IsRxReady()
|
||||
{
|
||||
return (USART0.STATUS & USART_RXCIF_bm);
|
||||
}
|
||||
|
||||
bool UART_IsTxBusy()
|
||||
{
|
||||
return (!(USART0.STATUS & USART_TXCIF_bm));
|
||||
}
|
||||
|
||||
bool UART_IsTxDone()
|
||||
{
|
||||
return (USART0.STATUS & USART_TXCIF_bm);
|
||||
}
|
||||
|
||||
uint8_t UART_Read()
|
||||
{
|
||||
while (!(USART0.STATUS & USART_RXCIF_bm))
|
||||
;
|
||||
return USART0.RXDATAL;
|
||||
}
|
||||
|
||||
void UART_Write(const uint8_t data)
|
||||
{
|
||||
while (!(USART0.STATUS & USART_DREIF_bm))
|
||||
;
|
||||
USART0.TXDATAL = data;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ASSEMBLER_H_INCLUDED
|
||||
#define ASSEMBLER_H_INCLUDED
|
||||
|
||||
#if !defined(__ASSEMBLER__) && !defined(__IAR_SYSTEMS_ASM__) && !defined(__DOXYGEN__)
|
||||
#error This file may only be included from assembly files
|
||||
#endif
|
||||
|
||||
#if defined(__ASSEMBLER__)
|
||||
#include "assembler/gas.h"
|
||||
#include <avr/io.h>
|
||||
#elif defined(__IAR_SYSTEMS_ASM__)
|
||||
#include "assembler/iar.h"
|
||||
#include <ioavr.h>
|
||||
#endif
|
||||
|
||||
#endif /* ASSEMBLER_H_INCLUDED */
|
||||
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ASSEMBLER_GAS_H_INCLUDED
|
||||
#define ASSEMBLER_GAS_H_INCLUDED
|
||||
|
||||
#ifndef __DOXYGEN__
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* IAR doesn't accept dots in macro names */
|
||||
.macro ld_addr, reg, sym
|
||||
lda.w \reg, \sym
|
||||
.endm
|
||||
|
||||
/* Define a function \a name that is either globally visible or only
|
||||
* file-local.
|
||||
*/
|
||||
.macro gas_begin_func name, is_public
|
||||
.if \is_public
|
||||
.global \name
|
||||
.endif
|
||||
.section .text.\name, "ax", @progbits
|
||||
.type \name, @function
|
||||
\name :
|
||||
.endm
|
||||
|
||||
/* Define a function \a name that is either globally visible or only
|
||||
* file-local in a given segment.
|
||||
*/
|
||||
.macro gas_begin_func_segm name, is_public, segment
|
||||
.if \is_public
|
||||
.global \name
|
||||
.endif
|
||||
.section .\segment, "ax", @progbits
|
||||
.type \name, @function
|
||||
\name :
|
||||
.endm
|
||||
|
||||
/* Define \a name as a weak alias for the function \a strong_name */
|
||||
.macro gas_weak_function_alias name, strong_name
|
||||
.global \name
|
||||
.weak \name
|
||||
.type \name, @function
|
||||
.set \name, \strong_name
|
||||
.endm
|
||||
|
||||
/* Define a weak function called \a name */
|
||||
.macro gas_weak_function name
|
||||
.weak \name
|
||||
gas_begin_func \name 1
|
||||
.endm
|
||||
|
||||
#define REPEAT(count) .rept count
|
||||
#define END_REPEAT() .endr
|
||||
#define FILL_BYTES(count) .fill count
|
||||
#define SET_LOC(offset) .org offset
|
||||
#define L(name) .L##name
|
||||
#define EXTERN_SYMBOL(name)
|
||||
|
||||
#define TEXT_SECTION(name) \
|
||||
.section name, "ax", @progbits
|
||||
#define RODATA_SECTION(name) \
|
||||
.section name, "a", @progbits
|
||||
#define DATA_SECTION(name) \
|
||||
.section name, "aw", @progbits
|
||||
#define BSS_SECTION(name) \
|
||||
.section name, "aw", @nobits
|
||||
|
||||
#define FUNCTION(name) gas_begin_func name 0
|
||||
#define PUBLIC_FUNCTION(name) gas_begin_func name 1
|
||||
#define PUBLIC_FUNCTION_SEGMENT(name, segment) \
|
||||
gas_begin_func_segm name 1 segment
|
||||
#define WEAK_FUNCTION(name) gas_weak_function name
|
||||
#define WEAK_FUNCTION_ALIAS(name, strong_name) \
|
||||
gas_weak_function_alias name strong_name
|
||||
#define END_FUNC(name) \
|
||||
.size name, . - name
|
||||
|
||||
#define END_FILE()
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#endif /* __DOXYGEN__ */
|
||||
|
||||
#endif /* ASSEMBLER_GAS_H_INCLUDED */
|
||||
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ASSEMBLER_IAR_H_INCLUDED
|
||||
#define ASSEMBLER_IAR_H_INCLUDED
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
ld_addr MACRO reg, sym
|
||||
mov reg, LWRD sym
|
||||
orh reg, HWRD sym
|
||||
ENDM
|
||||
|
||||
call MACRO sym
|
||||
rcall sym
|
||||
ENDM
|
||||
|
||||
iar_begin_func MACRO name, sect, is_public, is_weak
|
||||
MODULE name
|
||||
RSEG CODE:CODE:NOROOT(1)
|
||||
IF is_weak == 1
|
||||
PUBWEAK name
|
||||
ELSEIF is_public
|
||||
PUBLIC name
|
||||
ENDIF
|
||||
name:
|
||||
ENDM
|
||||
|
||||
iar_begin_func_segm MACRO name, sect, is_public, is_weak, segment
|
||||
MODULE name
|
||||
RSEG segment:CODE:NOROOT(1)
|
||||
IF is_weak == 1
|
||||
PUBWEAK name
|
||||
ELSEIF is_public
|
||||
PUBLIC name
|
||||
ENDIF
|
||||
name:
|
||||
ENDM
|
||||
|
||||
iar_weak_alias MACRO name, strong_name
|
||||
PUBWEAK name
|
||||
name:
|
||||
rjmp strong_name
|
||||
ENDM
|
||||
|
||||
#define lo(x) LWRD x
|
||||
#define hi(x) HWRD x
|
||||
|
||||
#define REPEAT(count) REPT count
|
||||
#define END_REPEAT() ENDR
|
||||
#define SET_LOC(offset) ORG offset
|
||||
#define END_FILE() END
|
||||
|
||||
#define FILL_BYTES(count) DS8 count
|
||||
|
||||
#define L(name) name
|
||||
#define EXTERN_SYMBOL(name) EXTERN name
|
||||
#define FUNCTION(name) iar_begin_func name, text_##name, 0, 0
|
||||
#define PUBLIC_FUNCTION(name) iar_begin_func name, text_##name, 1, 0
|
||||
#define PUBLIC_FUNCTION_SEGMENT(name, segment) \
|
||||
iar_begin_func_segm name, text_##name, 1, 0, segment
|
||||
#define WEAK_FUNCTION(name) iar_begin_func name, text_##name, 1, 1
|
||||
#define WEAK_FUNCTION_ALIAS(name, strong_name) \
|
||||
iar_weak_alias name, strong_name
|
||||
#define END_FUNC(name) ENDMOD
|
||||
|
||||
#define TEXT_SECTION(name) RSEG name:CODE:NOROOT
|
||||
#define RODATA_SECTION(name) RSEG name:CONST:NOROOT
|
||||
#define DATA_SECTION(name) RSEG name:DATA:NOROOT
|
||||
#define BSS_SECTION(name) RSEG name:DATA:NOROOT
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#endif /* ASSEMBLER_IAR_H_INCLUDED */
|
||||
@@ -0,0 +1,113 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ATOMIC_H
|
||||
#define ATOMIC_H
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_utils_atomic Atomic memory access and critical sections
|
||||
* \ingroup doc_driver_utils
|
||||
*
|
||||
* Atomic memory access and critical sections
|
||||
*
|
||||
* \{
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
#if defined(__GNUC__) || defined (__DOXYGEN__)
|
||||
|
||||
/**
|
||||
* \brief Enter a critical region
|
||||
*
|
||||
* Saves the contents of the status register, including the Global
|
||||
* Interrupt Enable bit, so that it can be restored upon leaving the
|
||||
* critical region. Thereafter, clears the Global Interrupt Enable Bit.
|
||||
* This macro takes a parameter P that is unused for the GCC compiler,
|
||||
* but necessary for code compatibility with the IAR compiler. The IAR
|
||||
* compiler declares a variable with the name of the parameter for
|
||||
* holding the SREG value. Since a variable is declared in the macro,
|
||||
* this variable must have a name that is unique within the scope
|
||||
* that the critical region is declared within, otherwise compilation
|
||||
* will fail.
|
||||
*
|
||||
* \param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG
|
||||
*
|
||||
*/
|
||||
|
||||
#define ENTER_CRITICAL(UNUSED) __asm__ __volatile__ ( \
|
||||
"in __tmp_reg__, __SREG__" "\n\t" \
|
||||
"cli" "\n\t" \
|
||||
"push __tmp_reg__" "\n\t" \
|
||||
::: "memory" \
|
||||
)
|
||||
|
||||
/**
|
||||
* \brief Exit a critical region
|
||||
*
|
||||
* Restores the contents of the status register, including the Global
|
||||
* Interrupt Enable bit, as it was when entering the critical region.
|
||||
* This macro takes a parameter P that is unused for the GCC compiler,
|
||||
* but necessary for code compatibility with the IAR compiler. The IAR
|
||||
* compiler uses this parameter as the name of a variable that holds
|
||||
* the SREG value. The parameter must be identical to the parameter
|
||||
* used in the corresponding ENTER_CRITICAL().
|
||||
*
|
||||
* \param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG
|
||||
*
|
||||
*/
|
||||
|
||||
#define EXIT_CRITICAL(UNUSED) __asm__ __volatile__ ( \
|
||||
"pop __tmp_reg__" "\n\t" \
|
||||
"out __SREG__, __tmp_reg__" "\n\t" \
|
||||
::: "memory" \
|
||||
)
|
||||
|
||||
#define DISABLE_INTERRUPTS() __asm__ __volatile__ ( "cli" ::: "memory")
|
||||
#define ENABLE_INTERRUPTS() __asm__ __volatile__ ( "sei" ::: "memory")
|
||||
|
||||
#elif defined(__ICCAVR__)
|
||||
|
||||
#define ENTER_CRITICAL(P) unsigned char P = __save_interrupt();__disable_interrupt();
|
||||
#define EXIT_CRITICAL(P) __restore_interrupt(P);
|
||||
|
||||
#define DISABLE_INTERRUPTS() __disable_interrupt();
|
||||
#define ENABLE_INTERRUPTS() __enable_interrupt();
|
||||
|
||||
#else
|
||||
# error Unsupported compiler.
|
||||
#endif
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#endif /* ATOMIC_H */
|
||||
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef UTILS_COMPILER_H
|
||||
#define UTILS_COMPILER_H
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_utils_compiler Compiler abstraction
|
||||
* \ingroup doc_driver_utils
|
||||
*
|
||||
* Compiler abstraction layer and code utilities for 8-bit AVR.
|
||||
* This module provides various abstraction layers and utilities
|
||||
* to make code compatible between different compilers.
|
||||
*
|
||||
* \{
|
||||
*/
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#include <avr/io.h>
|
||||
#include <avr/builtins.h>
|
||||
#elif defined(__ICCAVR__)
|
||||
#define ENABLE_BIT_DEFINITIONS 1
|
||||
#include <ioavr.h>
|
||||
#include <intrinsics.h>
|
||||
|
||||
#ifndef CCP_IOREG_gc
|
||||
#define CCP_IOREG_gc 0xD8 /* CPU_CCP_IOREG_gc */
|
||||
#endif
|
||||
#ifndef CCP_SPM_gc
|
||||
#define CCP_SPM_gc 0x9D /* CPU_CCP_SPM_gc */
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error Unsupported compiler.
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "interrupt_avr8.h"
|
||||
|
||||
/**
|
||||
* \def UNUSED
|
||||
* \brief Marking \a v as a unused parameter or value.
|
||||
*/
|
||||
#define UNUSED(v) (void)(v)
|
||||
|
||||
#endif /* UTILS_COMPILER_H */
|
||||
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_utils_interrupts ISR abstraction
|
||||
* \ingroup doc_driver_utils
|
||||
*
|
||||
* Interrupt-related functionality.
|
||||
*
|
||||
* \{
|
||||
*/
|
||||
|
||||
#ifndef UTILS_INTERRUPT_AVR8_H
|
||||
#define UTILS_INTERRUPT_AVR8_H
|
||||
|
||||
/**
|
||||
* \weakgroup interrupt_group
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifdef ISR_CUSTOM_H
|
||||
#include ISR_CUSTOM_H
|
||||
#else
|
||||
|
||||
/**
|
||||
* \def ISR
|
||||
* \brief Define service routine for specified interrupt vector
|
||||
*
|
||||
* Usage:
|
||||
* \code
|
||||
ISR(FOO_vect)
|
||||
{
|
||||
...
|
||||
}
|
||||
\endcode
|
||||
*
|
||||
* \param vect Interrupt vector name as found in the device header files.
|
||||
*/
|
||||
#if defined(__DOXYGEN__)
|
||||
#define ISR(vect)
|
||||
#elif defined(__GNUC__)
|
||||
#include <avr/interrupt.h>
|
||||
#elif defined(__ICCAVR__)
|
||||
#define __ISR(x) _Pragma(#x)
|
||||
#define ISR(vect) __ISR(vector = vect) __interrupt void handler_##vect(void)
|
||||
#endif
|
||||
#endif // ISR_CUSTOM_H
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define cpu_irq_enable() sei()
|
||||
#define cpu_irq_disable() cli()
|
||||
#else
|
||||
#define cpu_irq_enable() __enable_interrupt()
|
||||
#define cpu_irq_disable() __disable_interrupt()
|
||||
#endif
|
||||
|
||||
//! @}
|
||||
|
||||
/**
|
||||
* \weakgroup interrupt_deprecated_group
|
||||
* @{
|
||||
*/
|
||||
// Deprecated definitions.
|
||||
#define Enable_global_interrupt() cpu_irq_enable()
|
||||
#define Disable_global_interrupt() cpu_irq_disable()
|
||||
#define Is_global_interrupt_enabled() cpu_irq_is_enabled()
|
||||
//! @}
|
||||
|
||||
#endif /* UTILS_INTERRUPT_AVR8_H */
|
||||
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_utils AVR Code utility functions
|
||||
*
|
||||
* Compiler abstraction layer and code utilities for AVR.
|
||||
* This module provides various abstraction layers and utilities
|
||||
* to make code compatible between different compilers.
|
||||
*
|
||||
* \{
|
||||
*/
|
||||
|
||||
#ifndef UTILS_H_INCLUDED
|
||||
#define UTILS_H_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Retrieve array size
|
||||
*/
|
||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* UTILS_H_INCLUDED */
|
||||
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
@Company
|
||||
Microchip Technology Inc.
|
||||
|
||||
@Description
|
||||
This Source file provides APIs.
|
||||
Generation Information :
|
||||
Driver Version : 1.0.0
|
||||
*/
|
||||
/*
|
||||
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||||
|
||||
Subject to your compliance with these terms, you may use Microchip software and any
|
||||
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||||
license terms applicable to your use of third party software (including open source software) that
|
||||
may accompany Microchip software.
|
||||
|
||||
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||||
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||||
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE.
|
||||
|
||||
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||||
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||||
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||||
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||||
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||||
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \defgroup doc_driver_utils_assert Functionality for assert.
|
||||
* \ingroup doc_driver_utils
|
||||
*
|
||||
* \{
|
||||
*/
|
||||
|
||||
#ifndef _ASSERT_H_INCLUDED
|
||||
#define _ASSERT_H_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* \brief Assert macro
|
||||
*
|
||||
* This macro is used to throw asserts. It can be mapped to different function
|
||||
* based on debug level.
|
||||
*
|
||||
* \param[in] condition A condition to be checked;
|
||||
* assert is thrown if the given condition is false
|
||||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
#define ASSERT(condition) \
|
||||
if (!(condition)) \
|
||||
while (true) \
|
||||
;
|
||||
#else
|
||||
#define ASSERT(condition) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _ASSERT_H_INCLUDED */
|
||||
@@ -0,0 +1,311 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
# Edit the Makefile in the project folder instead (../Makefile). Each target
|
||||
# has a -pre and a -post target defined where you can add customized code.
|
||||
#
|
||||
# This makefile implements configuration specific macros and targets.
|
||||
|
||||
|
||||
# Include project Makefile
|
||||
ifeq "${IGNORE_LOCAL}" "TRUE"
|
||||
# do not include local makefile. User is passing all local related variables already
|
||||
else
|
||||
include Makefile
|
||||
# Include makefile containing local settings
|
||||
ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
|
||||
include nbproject/Makefile-local-default.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
# Environment
|
||||
MKDIR=gnumkdir -p
|
||||
RM=rm -f
|
||||
MV=mv
|
||||
CP=cp
|
||||
|
||||
# Macros
|
||||
CND_CONF=default
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
IMAGE_TYPE=debug
|
||||
OUTPUT_SUFFIX=elf
|
||||
DEBUGGABLE_SUFFIX=elf
|
||||
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
else
|
||||
IMAGE_TYPE=production
|
||||
OUTPUT_SUFFIX=hex
|
||||
DEBUGGABLE_SUFFIX=elf
|
||||
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
endif
|
||||
|
||||
ifeq ($(COMPARE_BUILD), true)
|
||||
COMPARISON_BUILD=
|
||||
else
|
||||
COMPARISON_BUILD=
|
||||
endif
|
||||
|
||||
ifdef SUB_IMAGE_ADDRESS
|
||||
|
||||
else
|
||||
SUB_IMAGE_ADDRESS_COMMAND=
|
||||
endif
|
||||
|
||||
# Object Directory
|
||||
OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
|
||||
|
||||
# Distribution Directory
|
||||
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
|
||||
# Source Files Quoted if spaced
|
||||
SOURCEFILES_QUOTED_IF_SPACED=mcc_generated_files/src/pin_manager.c mcc_generated_files/src/cpuint.c mcc_generated_files/src/tcb0.c mcc_generated_files/src/protected_io.S mcc_generated_files/src/usart0.c mcc_generated_files/src/nvmctrl.c mcc_generated_files/src/twi0_slave.c mcc_generated_files/mcc.c mcc_generated_files/device_config.c SolenoidDriver.c main.c debug.c
|
||||
|
||||
# Object Files Quoted if spaced
|
||||
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/mcc_generated_files/src/pin_manager.o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o ${OBJECTDIR}/mcc_generated_files/src/tcb0.o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o ${OBJECTDIR}/mcc_generated_files/src/usart0.o ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o ${OBJECTDIR}/mcc_generated_files/mcc.o ${OBJECTDIR}/mcc_generated_files/device_config.o ${OBJECTDIR}/SolenoidDriver.o ${OBJECTDIR}/main.o ${OBJECTDIR}/debug.o
|
||||
POSSIBLE_DEPFILES=${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d ${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d ${OBJECTDIR}/mcc_generated_files/src/usart0.o.d ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d ${OBJECTDIR}/mcc_generated_files/mcc.o.d ${OBJECTDIR}/mcc_generated_files/device_config.o.d ${OBJECTDIR}/SolenoidDriver.o.d ${OBJECTDIR}/main.o.d ${OBJECTDIR}/debug.o.d
|
||||
|
||||
# Object Files
|
||||
OBJECTFILES=${OBJECTDIR}/mcc_generated_files/src/pin_manager.o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o ${OBJECTDIR}/mcc_generated_files/src/tcb0.o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o ${OBJECTDIR}/mcc_generated_files/src/usart0.o ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o ${OBJECTDIR}/mcc_generated_files/mcc.o ${OBJECTDIR}/mcc_generated_files/device_config.o ${OBJECTDIR}/SolenoidDriver.o ${OBJECTDIR}/main.o ${OBJECTDIR}/debug.o
|
||||
|
||||
# Source Files
|
||||
SOURCEFILES=mcc_generated_files/src/pin_manager.c mcc_generated_files/src/cpuint.c mcc_generated_files/src/tcb0.c mcc_generated_files/src/protected_io.S mcc_generated_files/src/usart0.c mcc_generated_files/src/nvmctrl.c mcc_generated_files/src/twi0_slave.c mcc_generated_files/mcc.c mcc_generated_files/device_config.c SolenoidDriver.c main.c debug.c
|
||||
|
||||
# Pack Options
|
||||
PACK_COMPILER_OPTIONS=-I "${DFP_DIR}/include"
|
||||
PACK_COMMON_OPTIONS=-B "${DFP_DIR}/gcc/dev/attiny814"
|
||||
|
||||
|
||||
|
||||
CFLAGS=
|
||||
ASFLAGS=
|
||||
LDLIBSOPTIONS=
|
||||
|
||||
############# Tool locations ##########################################
|
||||
# If you copy a project from one host to another, the path where the #
|
||||
# compiler is installed may be different. #
|
||||
# If you open this project with MPLAB X in the new host, this #
|
||||
# makefile will be regenerated and the paths will be corrected. #
|
||||
#######################################################################
|
||||
# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
|
||||
FIXDEPS=fixDeps
|
||||
|
||||
.build-conf: ${BUILD_SUBPROJECTS}
|
||||
ifneq ($(INFORMATION_MESSAGE), )
|
||||
@echo $(INFORMATION_MESSAGE)
|
||||
endif
|
||||
${MAKE} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
|
||||
MP_PROCESSOR_OPTION=ATtiny814
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: assemble
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
else
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: assembleWithPreprocess
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
${OBJECTDIR}/mcc_generated_files/src/protected_io.o: mcc_generated_files/src/protected_io.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.ok ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.err
|
||||
${MP_CC} $(MP_EXTRA_AS_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -DDEBUG -x assembler-with-cpp -c -D__$(MP_PROCESSOR_OPTION)__ -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/protected_io.o -o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o mcc_generated_files/src/protected_io.S -DXPRJ_default=$(CND_CONF) -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/mcc_generated_files/src/protected_io.o.asm.d",--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--gdwarf-2,--defsym=__DEBUG=1
|
||||
|
||||
else
|
||||
${OBJECTDIR}/mcc_generated_files/src/protected_io.o: mcc_generated_files/src/protected_io.S nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.ok ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.err
|
||||
${MP_CC} $(MP_EXTRA_AS_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x assembler-with-cpp -c -D__$(MP_PROCESSOR_OPTION)__ -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/protected_io.o -o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o mcc_generated_files/src/protected_io.S -DXPRJ_default=$(CND_CONF) -Wa,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_AS_POST),-MD="${OBJECTDIR}/mcc_generated_files/src/protected_io.o.asm.d"
|
||||
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: compile
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
${OBJECTDIR}/mcc_generated_files/src/pin_manager.o: mcc_generated_files/src/pin_manager.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o -o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o mcc_generated_files/src/pin_manager.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/cpuint.o: mcc_generated_files/src/cpuint.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/cpuint.o -o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o mcc_generated_files/src/cpuint.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/tcb0.o: mcc_generated_files/src/tcb0.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/tcb0.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/tcb0.o -o ${OBJECTDIR}/mcc_generated_files/src/tcb0.o mcc_generated_files/src/tcb0.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/usart0.o: mcc_generated_files/src/usart0.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/usart0.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/usart0.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/usart0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/usart0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/usart0.o -o ${OBJECTDIR}/mcc_generated_files/src/usart0.o mcc_generated_files/src/usart0.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o: mcc_generated_files/src/nvmctrl.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o -o ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o mcc_generated_files/src/nvmctrl.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o: mcc_generated_files/src/twi0_slave.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o -o ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o mcc_generated_files/src/twi0_slave.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/mcc.o: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mcc.o -o ${OBJECTDIR}/mcc_generated_files/mcc.o mcc_generated_files/mcc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/device_config.o: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT ${OBJECTDIR}/mcc_generated_files/device_config.o -o ${OBJECTDIR}/mcc_generated_files/device_config.o mcc_generated_files/device_config.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/SolenoidDriver.o: SolenoidDriver.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/SolenoidDriver.o.d
|
||||
@${RM} ${OBJECTDIR}/SolenoidDriver.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/SolenoidDriver.o.d" -MT "${OBJECTDIR}/SolenoidDriver.o.d" -MT ${OBJECTDIR}/SolenoidDriver.o -o ${OBJECTDIR}/SolenoidDriver.o SolenoidDriver.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/main.o.d
|
||||
@${RM} ${OBJECTDIR}/main.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/debug.o: debug.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/debug.o.d
|
||||
@${RM} ${OBJECTDIR}/debug.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/debug.o.d" -MT "${OBJECTDIR}/debug.o.d" -MT ${OBJECTDIR}/debug.o -o ${OBJECTDIR}/debug.o debug.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
else
|
||||
${OBJECTDIR}/mcc_generated_files/src/pin_manager.o: mcc_generated_files/src/pin_manager.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o -o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o mcc_generated_files/src/pin_manager.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/cpuint.o: mcc_generated_files/src/cpuint.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/cpuint.o -o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o mcc_generated_files/src/cpuint.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/tcb0.o: mcc_generated_files/src/tcb0.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/tcb0.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/tcb0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/tcb0.o -o ${OBJECTDIR}/mcc_generated_files/src/tcb0.o mcc_generated_files/src/tcb0.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/usart0.o: mcc_generated_files/src/usart0.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/usart0.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/usart0.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/usart0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/usart0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/usart0.o -o ${OBJECTDIR}/mcc_generated_files/src/usart0.o mcc_generated_files/src/usart0.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o: mcc_generated_files/src/nvmctrl.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o -o ${OBJECTDIR}/mcc_generated_files/src/nvmctrl.o mcc_generated_files/src/nvmctrl.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o: mcc_generated_files/src/twi0_slave.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files/src"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o -o ${OBJECTDIR}/mcc_generated_files/src/twi0_slave.o mcc_generated_files/src/twi0_slave.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/mcc.o: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mcc.o -o ${OBJECTDIR}/mcc_generated_files/mcc.o mcc_generated_files/mcc.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/mcc_generated_files/device_config.o: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o.d
|
||||
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT ${OBJECTDIR}/mcc_generated_files/device_config.o -o ${OBJECTDIR}/mcc_generated_files/device_config.o mcc_generated_files/device_config.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/SolenoidDriver.o: SolenoidDriver.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/SolenoidDriver.o.d
|
||||
@${RM} ${OBJECTDIR}/SolenoidDriver.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/SolenoidDriver.o.d" -MT "${OBJECTDIR}/SolenoidDriver.o.d" -MT ${OBJECTDIR}/SolenoidDriver.o -o ${OBJECTDIR}/SolenoidDriver.o SolenoidDriver.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/main.o.d
|
||||
@${RM} ${OBJECTDIR}/main.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
${OBJECTDIR}/debug.o: debug.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}"
|
||||
@${RM} ${OBJECTDIR}/debug.o.d
|
||||
@${RM} ${OBJECTDIR}/debug.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny814 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/debug.o.d" -MT "${OBJECTDIR}/debug.o.d" -MT ${OBJECTDIR}/debug.o -o ${OBJECTDIR}/debug.o debug.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: compileCPP
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
else
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Rules for buildStep: link
|
||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
||||
dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
${MP_CC} $(MP_EXTRA_LD_PRE) -mmcu=attiny814 ${PACK_COMMON_OPTIONS} -gdwarf-2 -D__$(MP_PROCESSOR_OPTION)__ -Wl,-Map="dist\${CND_CONF}\${IMAGE_TYPE}\ATTiny814.${IMAGE_TYPE}.map" -o dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1 -Wl,--gc-sections -Wl,--start-group -Wl,-lm -Wl,--end-group
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
else
|
||||
dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
${MP_CC} $(MP_EXTRA_LD_PRE) -mmcu=attiny814 ${PACK_COMMON_OPTIONS} -D__$(MP_PROCESSOR_OPTION)__ -Wl,-Map="dist\${CND_CONF}\${IMAGE_TYPE}\ATTiny814.${IMAGE_TYPE}.map" -o dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION) -Wl,--gc-sections -Wl,--start-group -Wl,-lm -Wl,--end-group
|
||||
${MP_CC_DIR}\\avr-objcopy -O ihex "dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}" "dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.hex"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
endif
|
||||
|
||||
|
||||
# Subprojects
|
||||
.build-subprojects:
|
||||
|
||||
|
||||
# Subprojects
|
||||
.clean-subprojects:
|
||||
|
||||
# Clean Targets
|
||||
.clean-conf: ${CLEAN_SUBPROJECTS}
|
||||
${RM} -r build/default
|
||||
${RM} -r dist/default
|
||||
|
||||
# Enable dependency checking
|
||||
.dep.inc: .depcheck-impl
|
||||
|
||||
DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES})
|
||||
ifneq (${DEPFILES},)
|
||||
include ${DEPFILES}
|
||||
endif
|
||||
@@ -0,0 +1,10 @@
|
||||
#
|
||||
#Mon Apr 26 02:03:36 EDT 2021
|
||||
default.Pack.dfplocation=C\:\\Users\\Sasa\\.mchp_packs\\Microchip\\ATtiny_DFP\\2.3.92
|
||||
default.com-microchip-mplab-nbide-toolchainAVR-AVRLanguageToolchain.md5=ad26a821178a2075277e0c5a7d7c3f1c
|
||||
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Atmel\\Studio\\7.0\\toolchain\\avr8\\avr8-gnu-toolchain\\bin
|
||||
configurations-xml=afb9195d3738ba99137a084f9bbd857d
|
||||
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
|
||||
default.languagetoolchain.version=5.4.0
|
||||
host.platform=windows
|
||||
conf.ids=default
|
||||
@@ -0,0 +1,69 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
# Edit the Makefile in the project folder instead (../Makefile). Each target
|
||||
# has a pre- and a post- target defined where you can add customization code.
|
||||
#
|
||||
# This makefile implements macros and targets common to all configurations.
|
||||
#
|
||||
# NOCDDL
|
||||
|
||||
|
||||
# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
|
||||
# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
|
||||
# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
|
||||
# and .clean-reqprojects-conf unless SUB has the value 'no'
|
||||
SUB_no=NO
|
||||
SUBPROJECTS=${SUB_${SUB}}
|
||||
BUILD_SUBPROJECTS_=.build-subprojects
|
||||
BUILD_SUBPROJECTS_NO=
|
||||
BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
|
||||
CLEAN_SUBPROJECTS_=.clean-subprojects
|
||||
CLEAN_SUBPROJECTS_NO=
|
||||
CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
|
||||
|
||||
|
||||
# Project Name
|
||||
PROJECTNAME=ATTiny814
|
||||
|
||||
# Active Configuration
|
||||
DEFAULTCONF=default
|
||||
CONF=${DEFAULTCONF}
|
||||
|
||||
# All Configurations
|
||||
ALLCONFS=default
|
||||
|
||||
|
||||
# build
|
||||
.build-impl: .build-pre
|
||||
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
|
||||
|
||||
|
||||
# clean
|
||||
.clean-impl: .clean-pre
|
||||
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
|
||||
|
||||
# clobber
|
||||
.clobber-impl: .clobber-pre .depcheck-impl
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
|
||||
|
||||
|
||||
|
||||
# all
|
||||
.all-impl: .all-pre .depcheck-impl
|
||||
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
|
||||
|
||||
|
||||
|
||||
# dependency checking support
|
||||
.depcheck-impl:
|
||||
# @echo "# This code depends on make tool being used" >.dep.inc
|
||||
# @if [ -n "${MAKE_VERSION}" ]; then \
|
||||
# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
|
||||
# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
|
||||
# echo "include \$${DEPFILES}" >>.dep.inc; \
|
||||
# echo "endif" >>.dep.inc; \
|
||||
# else \
|
||||
# echo ".KEEP_STATE:" >>.dep.inc; \
|
||||
# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
|
||||
# fi
|
||||
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# Generated Makefile - do not edit!
|
||||
#
|
||||
#
|
||||
# This file contains information about the location of compilers and other tools.
|
||||
# If you commmit this file into your revision control server, you will be able to
|
||||
# to checkout the project and build it from the command line with make. However,
|
||||
# if more than one person works on the same project, then this file might show
|
||||
# conflicts since different users are bound to have compilers in different places.
|
||||
# In that case you might choose to not commit this file and let MPLAB X recreate this file
|
||||
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
|
||||
# least once so the file gets created and the project can be built. Finally, you can also
|
||||
# avoid using this file at all if you are only building from the command line with make.
|
||||
# You can invoke make with the values of the macros:
|
||||
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
|
||||
#
|
||||
SHELL=cmd.exe
|
||||
PATH_TO_IDE_BIN=D:/Program Files/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/
|
||||
# Adding MPLAB X bin directory to path.
|
||||
PATH:=D:/Program Files/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
|
||||
# Path to java used to run MPLAB X when this makefile was created
|
||||
MP_JAVA_PATH="D:\Program Files\Microchip\MPLABX\v5.40\sys\java\zulu8.36.0.1-ca-fx-jdk8.0.202-win_x64\jre/bin/"
|
||||
OS_CURRENT="$(shell uname -s)"
|
||||
MP_CC="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe"
|
||||
MP_CPPC="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe"
|
||||
# MP_BC is not defined
|
||||
MP_AS="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-as.exe"
|
||||
MP_LD="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-ld.exe"
|
||||
MP_AR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-ar.exe"
|
||||
DEP_GEN=${MP_JAVA_PATH}java -jar "D:/Program Files/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
|
||||
MP_CC_DIR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin"
|
||||
MP_CPPC_DIR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin"
|
||||
# MP_BC_DIR is not defined
|
||||
MP_AS_DIR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin"
|
||||
MP_LD_DIR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin"
|
||||
MP_AR_DIR="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin"
|
||||
# MP_BC_DIR is not defined
|
||||
DFP_DIR=C:/Users/Sasa/.mchp_packs/Microchip/ATtiny_DFP/2.3.92
|
||||
@@ -0,0 +1,13 @@
|
||||
#
|
||||
# Generated - do not edit!
|
||||
#
|
||||
# NOCDDL
|
||||
#
|
||||
CND_BASEDIR=`pwd`
|
||||
# default configuration
|
||||
CND_ARTIFACT_DIR_default=dist/default/production
|
||||
CND_ARTIFACT_NAME_default=ATTiny814.production.hex
|
||||
CND_ARTIFACT_PATH_default=dist/default/production/ATTiny814.production.hex
|
||||
CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package
|
||||
CND_PACKAGE_NAME_default=attiny814.tar
|
||||
CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/attiny814.tar
|
||||
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
#
|
||||
# Generated - do not edit!
|
||||
#
|
||||
|
||||
# Macros
|
||||
TOP=`pwd`
|
||||
CND_CONF=default
|
||||
CND_DISTDIR=dist
|
||||
TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
|
||||
TMPDIRNAME=tmp-packaging
|
||||
OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
OUTPUT_BASENAME=ATTiny814.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
|
||||
PACKAGE_TOP_DIR=attiny814/
|
||||
|
||||
# Functions
|
||||
function checkReturnCode
|
||||
{
|
||||
rc=$?
|
||||
if [ $rc != 0 ]
|
||||
then
|
||||
exit $rc
|
||||
fi
|
||||
}
|
||||
function makeDirectory
|
||||
# $1 directory path
|
||||
# $2 permission (optional)
|
||||
{
|
||||
mkdir -p "$1"
|
||||
checkReturnCode
|
||||
if [ "$2" != "" ]
|
||||
then
|
||||
chmod $2 "$1"
|
||||
checkReturnCode
|
||||
fi
|
||||
}
|
||||
function copyFileToTmpDir
|
||||
# $1 from-file path
|
||||
# $2 to-file path
|
||||
# $3 permission
|
||||
{
|
||||
cp "$1" "$2"
|
||||
checkReturnCode
|
||||
if [ "$3" != "" ]
|
||||
then
|
||||
chmod $3 "$2"
|
||||
checkReturnCode
|
||||
fi
|
||||
}
|
||||
|
||||
# Setup
|
||||
cd "${TOP}"
|
||||
mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
|
||||
rm -rf ${TMPDIR}
|
||||
mkdir -p ${TMPDIR}
|
||||
|
||||
# Copy files and create directories and links
|
||||
cd "${TOP}"
|
||||
makeDirectory ${TMPDIR}/attiny814/bin
|
||||
copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
|
||||
|
||||
|
||||
# Generate tar file
|
||||
cd "${TOP}"
|
||||
rm -f ${CND_DISTDIR}/${CND_CONF}/package/attiny814.tar
|
||||
cd ${TMPDIR}
|
||||
tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/attiny814.tar *
|
||||
checkReturnCode
|
||||
|
||||
# Cleanup
|
||||
cd "${TOP}"
|
||||
rm -rf ${TMPDIR}
|
||||
@@ -0,0 +1,281 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configurationDescriptor version="65">
|
||||
<logicalFolder name="root" displayName="root" projectFiles="true">
|
||||
<logicalFolder name="HeaderFiles"
|
||||
displayName="Header Files"
|
||||
projectFiles="true">
|
||||
<logicalFolder name="MCC Generated Files"
|
||||
displayName="MCC Generated Files"
|
||||
projectFiles="true">
|
||||
<logicalFolder name="config" displayName="config" projectFiles="true">
|
||||
<itemPath>mcc_generated_files/config/clock_config.h</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="include" displayName="include" projectFiles="true">
|
||||
<itemPath>mcc_generated_files/include/cpuint.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/port.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/pin_manager.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/ccp.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/rstctrl.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/nvmctrl.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/tcb0.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/usart0.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/protected_io.h</itemPath>
|
||||
<itemPath>mcc_generated_files/include/twi0_slave.h</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="utils" displayName="utils" projectFiles="true">
|
||||
<logicalFolder name="assembler" displayName="assembler" projectFiles="true">
|
||||
<itemPath>mcc_generated_files/utils/assembler/iar.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/assembler/gas.h</itemPath>
|
||||
</logicalFolder>
|
||||
<itemPath>mcc_generated_files/utils/compiler.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/interrupt_avr8.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/utils.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/utils_assert.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/assembler.h</itemPath>
|
||||
<itemPath>mcc_generated_files/utils/atomic.h</itemPath>
|
||||
</logicalFolder>
|
||||
<itemPath>mcc_generated_files/mcc.h</itemPath>
|
||||
</logicalFolder>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="LinkerScript"
|
||||
displayName="Linker Files"
|
||||
projectFiles="true">
|
||||
</logicalFolder>
|
||||
<logicalFolder name="SourceFiles"
|
||||
displayName="Source Files"
|
||||
projectFiles="true">
|
||||
<logicalFolder name="MCC Generated Files"
|
||||
displayName="MCC Generated Files"
|
||||
projectFiles="true">
|
||||
<logicalFolder name="src" displayName="src" projectFiles="true">
|
||||
<itemPath>mcc_generated_files/src/pin_manager.c</itemPath>
|
||||
<itemPath>mcc_generated_files/src/cpuint.c</itemPath>
|
||||
<itemPath>mcc_generated_files/src/tcb0.c</itemPath>
|
||||
<itemPath>mcc_generated_files/src/protected_io.S</itemPath>
|
||||
<itemPath>mcc_generated_files/src/usart0.c</itemPath>
|
||||
<itemPath>mcc_generated_files/src/nvmctrl.c</itemPath>
|
||||
<itemPath>mcc_generated_files/src/twi0_slave.c</itemPath>
|
||||
</logicalFolder>
|
||||
<itemPath>mcc_generated_files/mcc.c</itemPath>
|
||||
<itemPath>mcc_generated_files/device_config.c</itemPath>
|
||||
<itemPath>SolenoidDriver.c</itemPath>
|
||||
<itemPath>SolenoidDriver.h</itemPath>
|
||||
</logicalFolder>
|
||||
<itemPath>main.c</itemPath>
|
||||
<itemPath>debug.c</itemPath>
|
||||
<itemPath>debug.h</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="ExternalFiles"
|
||||
displayName="Important Files"
|
||||
projectFiles="false">
|
||||
<itemPath>Makefile</itemPath>
|
||||
<itemPath>MyConfig.mc3</itemPath>
|
||||
</logicalFolder>
|
||||
</logicalFolder>
|
||||
<sourceRootList>
|
||||
<Elem>../../../Common/Lib/GaugeCommunication</Elem>
|
||||
<Elem>.</Elem>
|
||||
</sourceRootList>
|
||||
<projectmakefile>Makefile</projectmakefile>
|
||||
<confs>
|
||||
<conf name="default" type="2">
|
||||
<toolsSet>
|
||||
<developmentServer>localhost</developmentServer>
|
||||
<targetDevice>ATtiny814</targetDevice>
|
||||
<targetHeader></targetHeader>
|
||||
<targetPluginBoard></targetPluginBoard>
|
||||
<platformTool>pk4hybrid</platformTool>
|
||||
<languageToolchain>AVR</languageToolchain>
|
||||
<languageToolchainVersion>5.4.0</languageToolchainVersion>
|
||||
<platform>3</platform>
|
||||
</toolsSet>
|
||||
<packs>
|
||||
<pack name="ATtiny_DFP" vendor="Microchip" version="2.3.92"/>
|
||||
</packs>
|
||||
<ScriptingSettings>
|
||||
</ScriptingSettings>
|
||||
<compileType>
|
||||
<linkerTool>
|
||||
<linkerLibItems>
|
||||
</linkerLibItems>
|
||||
</linkerTool>
|
||||
<archiverTool>
|
||||
</archiverTool>
|
||||
<loading>
|
||||
<useAlternateLoadableFile>false</useAlternateLoadableFile>
|
||||
<parseOnProdLoad>true</parseOnProdLoad>
|
||||
<alternateLoadableFile></alternateLoadableFile>
|
||||
</loading>
|
||||
<subordinates>
|
||||
</subordinates>
|
||||
</compileType>
|
||||
<makeCustomizationType>
|
||||
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
|
||||
<makeCustomizationPreStep></makeCustomizationPreStep>
|
||||
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
|
||||
<makeCustomizationPostStep></makeCustomizationPostStep>
|
||||
<makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
|
||||
<makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
|
||||
<makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
|
||||
</makeCustomizationType>
|
||||
<AVR-AR>
|
||||
<property key="archiver-flags" value="-r"/>
|
||||
</AVR-AR>
|
||||
<AVR-AS>
|
||||
<property key="announce-version" value="false"/>
|
||||
<property key="include-paths" value=""/>
|
||||
<property key="suppress-warnings" value="false"/>
|
||||
</AVR-AS>
|
||||
<AVR-AS-PRE>
|
||||
<property key="announce-version" value="false"/>
|
||||
<property key="include-paths" value=""/>
|
||||
<property key="preprocessor-macros" value=""/>
|
||||
<property key="preprocessor-macros-undefined" value=""/>
|
||||
<property key="suppress-warnings" value="false"/>
|
||||
</AVR-AS-PRE>
|
||||
<AVR-CPP>
|
||||
<property key="additional-warnings" value="true"/>
|
||||
<property key="call-prologues" value="false"/>
|
||||
<property key="default-bitfield-type" value="true"/>
|
||||
<property key="default-char-type" value="true"/>
|
||||
<property key="extra-include-directories" value=""/>
|
||||
<property key="garbage-collect-data" value="true"/>
|
||||
<property key="garbage-collect-functions" value="true"/>
|
||||
<property key="inhibit-all" value="false"/>
|
||||
<property key="make-warnings-into-errors" value="false"/>
|
||||
<property key="no-interrupts" value="false"/>
|
||||
<property key="no-system-directories" value="false"/>
|
||||
<property key="optimization-level" value="-O1"/>
|
||||
<property key="pack-struct" value="true"/>
|
||||
<property key="preprocess-only" value="false"/>
|
||||
<property key="preprocessor-macros" value=""/>
|
||||
<property key="preprocessor-macros-undefined" value=""/>
|
||||
<property key="save-temps" value="false"/>
|
||||
<property key="short-calls" value="false"/>
|
||||
<property key="short-enums" value="true"/>
|
||||
<property key="strict-ansi" value="false"/>
|
||||
<property key="strict-ansi-errors" value="false"/>
|
||||
<property key="support-ansi" value="false"/>
|
||||
<property key="syntax-only" value="false"/>
|
||||
<property key="undefined-identifier" value="false"/>
|
||||
<property key="verbose" value="false"/>
|
||||
</AVR-CPP>
|
||||
<AVR-GCC>
|
||||
<property key="additional-warnings" value="true"/>
|
||||
<property key="call-prologues" value="false"/>
|
||||
<property key="default-bitfield-type" value="true"/>
|
||||
<property key="default-char-type" value="true"/>
|
||||
<property key="extra-include-directories" value=""/>
|
||||
<property key="extra-warnings" value="false"/>
|
||||
<property key="garbage-collect-data" value="true"/>
|
||||
<property key="garbage-collect-functions" value="true"/>
|
||||
<property key="inhibit-all" value="false"/>
|
||||
<property key="make-warnings-into-errors" value="false"/>
|
||||
<property key="no-interrupts" value="false"/>
|
||||
<property key="no-system-directories" value="false"/>
|
||||
<property key="optimization-level" value="-O1"/>
|
||||
<property key="pack-struct" value="true"/>
|
||||
<property key="preprocessor-macros" value=""/>
|
||||
<property key="preprocessor-macros-undefined" value=""/>
|
||||
<property key="save-temps" value="false"/>
|
||||
<property key="short-calls" value="false"/>
|
||||
<property key="short-enums" value="true"/>
|
||||
<property key="strict-ansi" value="false"/>
|
||||
<property key="strict-ansi-errors" value="false"/>
|
||||
<property key="support-ansi" value="false"/>
|
||||
<property key="syntax-only" value="false"/>
|
||||
<property key="undefined-identifier" value="false"/>
|
||||
<property key="verbose" value="false"/>
|
||||
</AVR-GCC>
|
||||
<AVR-Global>
|
||||
<property key="common-include-directories" value=""/>
|
||||
<property key="eep" value="false"/>
|
||||
<property key="external-ram-check" value="false"/>
|
||||
<property key="hex" value="true"/>
|
||||
<property key="lss" value="false"/>
|
||||
<property key="omit-pack-options" value="false"/>
|
||||
<property key="relax-branches" value="false"/>
|
||||
<property key="srec" value="false"/>
|
||||
<property key="user-pack-device-support" value=""/>
|
||||
<property key="user-pack-include" value=""/>
|
||||
<property key="usersig" value="false"/>
|
||||
</AVR-Global>
|
||||
<AVR-LD>
|
||||
<property key="eeprom-segment" value=""/>
|
||||
<property key="exclude-standard-libraries" value="false"/>
|
||||
<property key="extra-lib-directories" value=""/>
|
||||
<property key="flash-segment" value=""/>
|
||||
<property key="generate-map-file" value="true"/>
|
||||
<property key="initial-stack-address" value=""/>
|
||||
<property key="input-libraries" value="libm"/>
|
||||
<property key="no-default-libs" value="false"/>
|
||||
<property key="no-shared-libraries" value="false"/>
|
||||
<property key="no-startup-files" value="false"/>
|
||||
<property key="omit-symbol-information" value="false"/>
|
||||
<property key="other-options" value=""/>
|
||||
<property key="remove-unused-sections" value="true"/>
|
||||
<property key="rodata-writable" value="false"/>
|
||||
<property key="sram-segment" value=""/>
|
||||
<property key="v-printf" value="false"/>
|
||||
</AVR-LD>
|
||||
<pk4hybrid>
|
||||
<property key="AutoSelectMemRanges" value="auto"/>
|
||||
<property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
|
||||
<property key="ToolFirmwareFilePath"
|
||||
value="Press to browse for a specific firmware version"/>
|
||||
<property key="ToolFirmwareOption.UpdateOptions"
|
||||
value="ToolFirmwareOption.UseLatest"/>
|
||||
<property key="ToolFirmwareToolPack"
|
||||
value="Press to select which tool pack to use"/>
|
||||
<property key="communication.activationmode" value="simplepulse"/>
|
||||
<property key="communication.interface" value="updi"/>
|
||||
<property key="communication.interface.jtag" value="2wire"/>
|
||||
<property key="communication.speed" value="0.500"/>
|
||||
<property key="debugoptions.useswbreakpoints" value="true"/>
|
||||
<property key="memories.aux" value="false"/>
|
||||
<property key="memories.bootflash" value="true"/>
|
||||
<property key="memories.configurationmemory" value="true"/>
|
||||
<property key="memories.configurationmemory2" value="true"/>
|
||||
<property key="memories.dataflash" value="true"/>
|
||||
<property key="memories.eeprom" value="true"/>
|
||||
<property key="memories.exclude.configurationmemory" value="true"/>
|
||||
<property key="memories.flashdata" value="true"/>
|
||||
<property key="memories.id" value="true"/>
|
||||
<property key="memories.instruction.ram.ranges"
|
||||
value="${memories.instruction.ram.ranges}"/>
|
||||
<property key="memories.programmemory" value="true"/>
|
||||
<property key="memories.programmemory.ranges" value="0-fff"/>
|
||||
<property key="poweroptions.powerenable" value="false"/>
|
||||
<property key="programmerToGoImageName" value="default_ptg"/>
|
||||
<property key="programoptions.donoteraseauxmem" value="false"/>
|
||||
<property key="programoptions.eraseb4program" value="true"/>
|
||||
<property key="programoptions.ledbrightness" value="5"/>
|
||||
<property key="programoptions.pgcconfig" value="pull down"/>
|
||||
<property key="programoptions.pgcresistor.value" value="4.7"/>
|
||||
<property key="programoptions.pgdconfig" value="pull down"/>
|
||||
<property key="programoptions.pgdresistor.value" value="4.7"/>
|
||||
<property key="programoptions.pgmentry.voltage" value="low"/>
|
||||
<property key="programoptions.pgmspeed" value="Med"/>
|
||||
<property key="programoptions.preservedataflash" value="false"/>
|
||||
<property key="programoptions.preservedataflash.ranges"
|
||||
value="${memories.dataflash.default}"/>
|
||||
<property key="programoptions.preserveeeprom" value="false"/>
|
||||
<property key="programoptions.preserveeeprom.ranges" value="1400-147f"/>
|
||||
<property key="programoptions.preserveprogram.ranges" value=""/>
|
||||
<property key="programoptions.preserveprogramrange" value="false"/>
|
||||
<property key="programoptions.preserveuserid" value="false"/>
|
||||
<property key="programoptions.programcalmem" value="false"/>
|
||||
<property key="programoptions.programuserotp" value="false"/>
|
||||
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
|
||||
<property key="programoptionsedbg.eraseb4program" value="true"/>
|
||||
<property key="ptgProgramImage" value="true"/>
|
||||
<property key="ptgSendImage" value="true"/>
|
||||
<property key="toolpack.updateoptions"
|
||||
value="toolpack.updateoptions.uselatestoolpack"/>
|
||||
<property key="toolpack.updateoptions.packversion"
|
||||
value="Press to select which tool pack to use"/>
|
||||
<property key="voltagevalue" value="5.0"/>
|
||||
</pk4hybrid>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configurationDescriptor version="65">
|
||||
<projectmakefile>Makefile</projectmakefile>
|
||||
<defaultConf>0</defaultConf>
|
||||
<confs>
|
||||
<conf name="default" type="2">
|
||||
<platformToolSN>:=MPLABComm-USB-Microchip:=<vid>03EB:=<pid>2177:=<rev>0100:=<man>Microchip Technology Incorporated:=<prod>MPLAB PICkit 4 CMSIS-DAP:=<sn>BUR202272489:=<drv>x:=<xpt>h:=end</platformToolSN>
|
||||
<languageToolchainDir>C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin</languageToolchainDir>
|
||||
<mdbdebugger version="1">
|
||||
<placeholder1>place holder 1</placeholder1>
|
||||
<placeholder2>place holder 2</placeholder2>
|
||||
</mdbdebugger>
|
||||
<runprofile version="6">
|
||||
<args></args>
|
||||
<rundir></rundir>
|
||||
<buildfirst>true</buildfirst>
|
||||
<console-type>0</console-type>
|
||||
<terminal-type>0</terminal-type>
|
||||
<remove-instrumentation>0</remove-instrumentation>
|
||||
<environment>
|
||||
</environment>
|
||||
</runprofile>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/SolenoidDriver.h</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/main.c</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/debug.h</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/mcc_generated_files/mcc.c</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/SolenoidDriver.c</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/debug.c</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/PlantSystem.h</file>
|
||||
<file>file:/C:/Users/Sasa/Desktop/git/DIY_PlantSystem_public/Part2_Actuator_board/Firmware/ATTiny814/mcc_generated_files/src/twi0_slave.c</file>
|
||||
</group>
|
||||
</open-files>
|
||||
</project-private>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>com.microchip.mplab.nbide.embedded.makeproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/make-project/1">
|
||||
<name>ATTiny814_ActuatorBoard</name>
|
||||
<creation-uuid>7e6ae34b-9441-4596-bad2-8ccf9b9bef89</creation-uuid>
|
||||
<make-project-type>0</make-project-type>
|
||||
<c-extensions>c</c-extensions>
|
||||
<cpp-extensions/>
|
||||
<header-extensions>h</header-extensions>
|
||||
<asminc-extensions/>
|
||||
<sourceEncoding>ISO-8859-1</sourceEncoding>
|
||||
<make-dep-projects/>
|
||||
<sourceRootList>
|
||||
<sourceRootElem>../../../Common/Lib/GaugeCommunication</sourceRootElem>
|
||||
<sourceRootElem>.</sourceRootElem>
|
||||
</sourceRootList>
|
||||
<confList>
|
||||
<confElem>
|
||||
<name>default</name>
|
||||
<type>2</type>
|
||||
</confElem>
|
||||
</confList>
|
||||
<formatting>
|
||||
<project-formatting-style>false</project-formatting-style>
|
||||
</formatting>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
@@ -0,0 +1,300 @@
|
||||
[OutputJobFile]
|
||||
Version=1.0
|
||||
Caption=
|
||||
Description=
|
||||
VaultGUID=
|
||||
ItemGUID=
|
||||
ItemHRID=
|
||||
RevisionGUID=
|
||||
RevisionId=
|
||||
VaultHRID=
|
||||
AutoItemHRID=
|
||||
NextRevId=
|
||||
FolderGUID=
|
||||
LifeCycleDefinitionGUID=
|
||||
RevisionNamingSchemeGUID=
|
||||
|
||||
[OutputGroup1]
|
||||
Name=MFGOutput.OutJob
|
||||
Description=
|
||||
TargetOutputMedium=Folder Structure
|
||||
VariantName=[No Variations]
|
||||
VariantScope=1
|
||||
CurrentConfigurationName=
|
||||
TargetPrinter=Brother MFC-L2720DW
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=0
|
||||
OutputMedium1=Print Job
|
||||
OutputMedium1_Type=Printer
|
||||
OutputMedium1_Printer=
|
||||
OutputMedium1_PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputMedium2=PDF
|
||||
OutputMedium2_Type=Publish
|
||||
OutputMedium3=Folder Structure
|
||||
OutputMedium3_Type=GeneratedFiles
|
||||
OutputMedium4=Video
|
||||
OutputMedium4_Type=Multimedia
|
||||
OutputType1=Schematic Print
|
||||
OutputName1=Schematic Prints
|
||||
OutputCategory1=Documentation
|
||||
OutputDocumentPath1=[Project Physical Documents]
|
||||
OutputVariantName1=
|
||||
OutputEnabled1=0
|
||||
OutputEnabled1_OutputMedium1=0
|
||||
OutputEnabled1_OutputMedium2=1
|
||||
OutputEnabled1_OutputMedium3=0
|
||||
OutputEnabled1_OutputMedium4=0
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
Configuration1_Name1=OutputConfigurationParameter1
|
||||
Configuration1_Item1=Record=SchPrintView|ShowNoERC=True|ShowParamSet=True|ShowProbe=True|ShowBlanket=True|NoERCSymbolsToShow="Thin Cross","Thick Cross","Small Cross",Checkbox,Triangle|ShowNote=True|ShowNoteCollapsed=True|ShowOpenEnds=True|ExpandDesignator=True|ExpandNetLabel=False|ExpandPort=False|ExpandSheetNum=False|ExpandDocNum=False|PrintArea=0|PrintAreaRect.X1=0|PrintAreaRect.Y1=0|PrintAreaRect.X2=0|PrintAreaRect.Y2=0|DocumentPath=[Project Physical Documents]
|
||||
OutputType2=Pick Place
|
||||
OutputName2=Generates pick and place files
|
||||
OutputCategory2=Assembly
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputEnabled2=1
|
||||
OutputEnabled2_OutputMedium1=0
|
||||
OutputEnabled2_OutputMedium2=0
|
||||
OutputEnabled2_OutputMedium3=1
|
||||
OutputEnabled2_OutputMedium4=0
|
||||
OutputDefault2=0
|
||||
Configuration2_Name1=OutputConfigurationParameter1
|
||||
Configuration2_Item1=Record=PickPlaceView|Units=Imperial|GenerateCSVFormat=False|GenerateTextFormat=True|ShowUnits=True|Separator=.|ExcludeFilterParam=False|IncludeVariations=False|Filter= |FilterActive=False|Column#1=Name:Designator,Fixed:True,Metric:False,Visible:True,Sort:None,Position:0|Column#2=Name:Comment,Fixed:True,Metric:False,Visible:True,Sort:None,Position:1|Column#3=Name:Layer,Fixed:True,Metric:False,Visible:True,Sort:None,Position:2|Column#4=Name:Footprint,Fixed:True,Metric:False,Visible:True,Sort:None,Position:3|Column#5=Name:Footprint Description,Fixed:True,Metric:False,Visible:False,Sort:None,Position:4|Column#6=Name:Center-X,Fixed:True,Metric:True,Visible:True,Sort:None,Position:5|Column#7=Name:Center-Y,Fixed:True,Metric:True,Visible:True,Sort:None,Position:6|Column#8=Name:Rotation,Fixed:True,Metric:False,Visible:True,Sort:None,Position:7|Column#9=Name:Description,Fixed:True,Metric:False,Visible:True,Sort:None,Position:8|Column#10=Name:ComponentKind,Fixed:True,Metric:False,Visible:False,Sort:None,Position:9|Column#11=Name:Height,Fixed:True,Metric:True,Visible:False,Sort:None,Position:10|Column#12=Name:Ref-X,Fixed:True,Metric:True,Visible:False,Sort:None,Position:11|Column#13=Name:Ref-Y,Fixed:True,Metric:True,Visible:False,Sort:None,Position:12|Column#14=Name:Pad-X,Fixed:True,Metric:True,Visible:False,Sort:None,Position:13|Column#15=Name:Pad-Y,Fixed:True,Metric:True,Visible:False,Sort:None,Position:14|Column#16=Name:Variation,Fixed:True,Metric:False,Visible:False,Sort:None,Position:15|Column#17=Name:Published,Fixed:False,Metric:False,Visible:False,Sort:None,Position:24|Column#18=Name:LatestRevisionDate,Fixed:False,Metric:False,Visible:False,Sort:None,Position:18|Column#19=Name:PackageReference,Fixed:False,Metric:False,Visible:False,Sort:None,Position:23|Column#20=Name:Value,Fixed:False,Metric:False,Visible:False,Sort:None,Position:26|Column#21=Name:Publisher,Fixed:False,Metric:False,Visible:False,Sort:None,Position:25|Column#22=Name:Distributor Part Number,Fixed:False,Metric:False,Visible:False,Sort:None,Position:17|Column#23=Name:PackageDescription,Fixed:False,Metric:False,Visible:False,Sort:None,Position:22|Column#24=Name:LatestRevisionNote,Fixed:False,Metric:False,Visible:False,Sort:None,Position:19|Column#25=Name:Distributor,Fixed:False,Metric:False,Visible:False,Sort:None,Position:16|Column#26=Name:Manufacturer,Fixed:False,Metric:False,Visible:False,Sort:None,Position:20|Column#27=Name:Manufacturer Part Number,Fixed:False,Metric:False,Visible:False,Sort:None,Position:21|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType3=Assembly
|
||||
OutputName3=Assembly Drawings
|
||||
OutputCategory3=Assembly
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputEnabled3=0
|
||||
OutputEnabled3_OutputMedium1=0
|
||||
OutputEnabled3_OutputMedium2=0
|
||||
OutputEnabled3_OutputMedium3=0
|
||||
OutputEnabled3_OutputMedium4=0
|
||||
OutputDefault3=0
|
||||
PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9
|
||||
Configuration3_Name1=OutputConfigurationParameter1
|
||||
Configuration3_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView
|
||||
Configuration3_Name2=OutputConfigurationParameter2
|
||||
Configuration3_Item2=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Top LayerAssembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration3_Name3=OutputConfigurationParameter3
|
||||
Configuration3_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Hidden|FFill=Hidden|FPad=Hidden|FRegion=Hidden|FText=Hidden|FTrack=Hidden|FVia=Hidden|Layer=TopLayer|Polygon=Hidden|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name4=OutputConfigurationParameter4
|
||||
Configuration3_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name5=OutputConfigurationParameter5
|
||||
Configuration3_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Hidden|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name6=OutputConfigurationParameter6
|
||||
Configuration3_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name7=OutputConfigurationParameter7
|
||||
Configuration3_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name8=OutputConfigurationParameter8
|
||||
Configuration3_Item8=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name9=OutputConfigurationParameter9
|
||||
Configuration3_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name10=OutputConfigurationParameter10
|
||||
Configuration3_Item10=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name11=OutputConfigurationParameter11
|
||||
Configuration3_Item11=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=1|Mirror=False|Name=Bottom LayerAssembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration3_Name12=OutputConfigurationParameter12
|
||||
Configuration3_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Hidden|FFill=Hidden|FPad=Hidden|FRegion=Hidden|FText=Hidden|FTrack=Hidden|FVia=Hidden|Layer=BottomLayer|Polygon=Hidden|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name13=OutputConfigurationParameter13
|
||||
Configuration3_Item13=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name14=OutputConfigurationParameter14
|
||||
Configuration3_Item14=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomOverlay|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name15=OutputConfigurationParameter15
|
||||
Configuration3_Item15=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name16=OutputConfigurationParameter16
|
||||
Configuration3_Item16=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Hidden|Layer=MultiLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name17=OutputConfigurationParameter17
|
||||
Configuration3_Item17=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name18=OutputConfigurationParameter18
|
||||
Configuration3_Item18=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name19=OutputConfigurationParameter19
|
||||
Configuration3_Item19=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
PcbPrintPreferences3=
|
||||
OutputType4=Gerber
|
||||
OutputName4=Gerber Files
|
||||
OutputCategory4=Fabrication
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputEnabled4=1
|
||||
OutputEnabled4_OutputMedium1=0
|
||||
OutputEnabled4_OutputMedium2=0
|
||||
OutputEnabled4_OutputMedium3=2
|
||||
OutputEnabled4_OutputMedium4=0
|
||||
OutputDefault4=0
|
||||
Configuration4_Name1=OutputConfigurationParameter1
|
||||
Configuration4_Item1=AddToAllLayerClasses.Set= |AddToAllPlots.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|CentrePlots=False|DrillDrawingSymbol=GraphicsSymbol|DrillDrawingSymbolSize=200000|EmbeddedApertures=True|FilmBorderSize=10000000|FilmXSize=200000000|FilmYSize=160000000|FlashAllFills=False|FlashPadShapes=True|G54OnApertureChange=False|GenerateDRCRulesFile=True|GenerateDRCRulesFile=True|GenerateReliefShapes=True|GerberUnit=Imperial|GerberUnit=Imperial|IncludeUnconnectedMidLayerPads=False|LayerClassesMirror.Set= |LayerClassesPlot.Set= |LeadingAndTrailingZeroesMode=SuppressLeadingZeroes|MaxApertureSize=2500000|MinusApertureTolerance=50|MinusApertureTolerance=50|Mirror.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|MirrorDrillDrawingPlots=False|MirrorDrillGuidePlots=False|NoRegularPolygons=False|NumberOfDecimals=5|NumberOfDecimals=5|OptimizeChangeLocationCommands=True|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Panelize=False|Plot.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean,16973830~1,16973832~1,16973834~1,16777217~1,16777218~1,16777219~1,16842751~1,16973835~1,16973833~1,16973831~1,16973837~1|PlotPositivePlaneLayers=False|PlotUsedDrillDrawingLayerPairs=True|PlotUsedDrillGuideLayerPairs=True|PlusApertureTolerance=50|PlusApertureTolerance=50|Record=GerberView|SoftwareArcs=False|Sorted=False|Sorted=False|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType5=NC Drill
|
||||
OutputName5=NC Drill Files
|
||||
OutputCategory5=Fabrication
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=
|
||||
OutputEnabled5=1
|
||||
OutputEnabled5_OutputMedium1=0
|
||||
OutputEnabled5_OutputMedium2=0
|
||||
OutputEnabled5_OutputMedium3=3
|
||||
OutputEnabled5_OutputMedium4=0
|
||||
OutputDefault5=0
|
||||
Configuration5_Name1=OutputConfigurationParameter1
|
||||
Configuration5_Item1=BoardEdgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateEIADrillFile=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=5|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Record=DrillView|Units=Imperial|ZeroesMode=SuppressTrailingZeroes|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType6=Drill
|
||||
OutputName6=Drill Drawing/Guides
|
||||
OutputCategory6=Fabrication
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputEnabled6=0
|
||||
OutputEnabled6_OutputMedium1=0
|
||||
OutputEnabled6_OutputMedium2=0
|
||||
OutputEnabled6_OutputMedium3=0
|
||||
OutputEnabled6_OutputMedium4=0
|
||||
OutputDefault6=0
|
||||
PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9
|
||||
Configuration6_Name1=OutputConfigurationParameter1
|
||||
Configuration6_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView
|
||||
Configuration6_Name2=OutputConfigurationParameter2
|
||||
Configuration6_Item2=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Drill Drawing For (Bottom Layer,Top Layer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration6_Name3=OutputConfigurationParameter3
|
||||
Configuration6_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=BottomLayer|DLayer2=TopLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name4=OutputConfigurationParameter4
|
||||
Configuration6_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name5=OutputConfigurationParameter5
|
||||
Configuration6_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name6=OutputConfigurationParameter6
|
||||
Configuration6_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name7=OutputConfigurationParameter7
|
||||
Configuration6_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name8=OutputConfigurationParameter8
|
||||
Configuration6_Item8=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=1|Mirror=False|Name=Drill Guide For (Bottom Layer,Top Layer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration6_Name9=OutputConfigurationParameter9
|
||||
Configuration6_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=BottomLayer|DLayer2=TopLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillGuide|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name10=OutputConfigurationParameter10
|
||||
Configuration6_Item10=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name11=OutputConfigurationParameter11
|
||||
Configuration6_Item11=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name12=OutputConfigurationParameter12
|
||||
Configuration6_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name13=OutputConfigurationParameter13
|
||||
Configuration6_Item13=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
PcbPrintPreferences6=
|
||||
OutputType7=BOM_PartType
|
||||
OutputName7=Bill of Materials
|
||||
OutputCategory7=Report
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputEnabled7=1
|
||||
OutputEnabled7_OutputMedium1=0
|
||||
OutputEnabled7_OutputMedium2=0
|
||||
OutputEnabled7_OutputMedium3=4
|
||||
OutputEnabled7_OutputMedium4=0
|
||||
OutputDefault7=0
|
||||
PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
Configuration7_Name1=ColumnNameFormat
|
||||
Configuration7_Item1=CaptionAsName
|
||||
Configuration7_Name2=Filter
|
||||
Configuration7_Item2=545046300E5446696C74657257726170706572000D46696C7465722E416374697665090F46696C7465722E43726974657269610A04000000000000000000
|
||||
Configuration7_Name3=General
|
||||
Configuration7_Item3=OpenExported=False|AddToProject=False|ForceFit=False|NotFitted=False|Database=False|DatabasePriority=False|IncludePCBData=False|IncludeVaultData=False|IncludeAlternatives=False|ShowExportOptions=True|TemplateFilename=|BatchMode=5|FormWidth=1732|FormHeight=1296|SupplierProdQty=1|SupplierAutoQty=False|SupplierUseCachedPricing=False|SupplierCurrency=<none>
|
||||
Configuration7_Name4=GroupOrder
|
||||
Configuration7_Item4=Manufacturer Part Number=True
|
||||
Configuration7_Name5=OutputConfigurationParameter1
|
||||
Configuration7_Item5=dgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateEIADrillFile=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=5|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Record=DrillView|Units=Imperial|ZeroesMode=SuppressTrailingZeroes|DocumentPath=[Project]
|
||||
Configuration7_Name6=SortOrder
|
||||
Configuration7_Item6=Designator=Up|Comment=Up|Footprint=Up
|
||||
Configuration7_Name7=VisibleOrder
|
||||
Configuration7_Item7=Designator=175|Description=175|Distributor=175|Distributor Part Number=175|Manufacturer=175|Manufacturer Part Number=175|Quantity=177
|
||||
|
||||
[PublishSettings]
|
||||
OutputFilePath2=Project Outputs for Free Documents\.PDF
|
||||
ReleaseManaged2=1
|
||||
OutputBasePath2=Project Outputs for SolenoidValveDriver_v01
|
||||
OutputPathMedia2=
|
||||
OutputPathMediaValue2=
|
||||
OutputPathOutputer2=[Output Type]
|
||||
OutputPathOutputerPrefix2=
|
||||
OutputPathOutputerValue2=
|
||||
OutputFileName2=MFGOutput.PDF
|
||||
OutputFileNameMulti2=
|
||||
UseOutputNameForMulti2=1
|
||||
OutputFileNameSpecial2=
|
||||
OpenOutput2=1
|
||||
PromptOverwrite2=1
|
||||
PublishMethod2=0
|
||||
ZoomLevel2=50
|
||||
FitSCHPrintSizeToDoc2=1
|
||||
FitPCBPrintSizeToDoc2=1
|
||||
GenerateNetsInfo2=1
|
||||
MarkPins2=1
|
||||
MarkNetLabels2=1
|
||||
MarkPortsId2=1
|
||||
GenerateTOC2=1
|
||||
ShowComponentParameters2=1
|
||||
GlobalBookmarks2=0
|
||||
PDFACompliance2=Disabled
|
||||
PDFVersion2=Default
|
||||
OutputFilePath3=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Actuator_and_Central_board\Actuator_board\Hardware\Project Outputs for SolenoidValveDriver_v01\
|
||||
ReleaseManaged3=1
|
||||
OutputBasePath3=Project Outputs for SolenoidValveDriver_v01
|
||||
OutputPathMedia3=
|
||||
OutputPathMediaValue3=
|
||||
OutputPathOutputer3=[Output Type]
|
||||
OutputPathOutputerPrefix3=
|
||||
OutputPathOutputerValue3=
|
||||
OutputFileName3=
|
||||
OutputFileNameMulti3=
|
||||
UseOutputNameForMulti3=1
|
||||
OutputFileNameSpecial3=
|
||||
OpenOutput3=0
|
||||
OutputFilePath4=
|
||||
ReleaseManaged4=1
|
||||
OutputBasePath4=Project Outputs for SolenoidValveDriver_v01
|
||||
OutputPathMedia4=
|
||||
OutputPathMediaValue4=
|
||||
OutputPathOutputer4=[Output Type]
|
||||
OutputPathOutputerPrefix4=
|
||||
OutputPathOutputerValue4=
|
||||
OutputFileName4=
|
||||
OutputFileNameMulti4=
|
||||
UseOutputNameForMulti4=1
|
||||
OutputFileNameSpecial4=
|
||||
OpenOutput4=1
|
||||
PromptOverwrite4=1
|
||||
PublishMethod4=5
|
||||
ZoomLevel4=50
|
||||
FitSCHPrintSizeToDoc4=1
|
||||
FitPCBPrintSizeToDoc4=1
|
||||
GenerateNetsInfo4=1
|
||||
MarkPins4=1
|
||||
MarkNetLabels4=1
|
||||
MarkPortsId4=1
|
||||
MediaFormat4=Windows Media file (*.wmv,*.wma,*.asf)
|
||||
FixedDimensions4=1
|
||||
Width4=352
|
||||
Height4=288
|
||||
MultiFile4=0
|
||||
FramesPerSecond4=25
|
||||
FramesPerSecondDenom4=1
|
||||
AviPixelFormat4=7
|
||||
AviCompression4=MP42 MS-MPEG4 V2
|
||||
AviQuality4=100
|
||||
FFmpegVideoCodecId4=13
|
||||
FFmpegPixelFormat4=0
|
||||
FFmpegQuality4=80
|
||||
WmvVideoCodecName4=Windows Media Video V7
|
||||
WmvQuality4=80
|
||||
|
||||
[GeneratedFilesSettings]
|
||||
RelativeOutputPath2=Project Outputs for Free Documents\.PDF
|
||||
OpenOutputs2=1
|
||||
RelativeOutputPath3=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Actuator_and_Central_board\Actuator_board\Hardware\Project Outputs for SolenoidValveDriver_v01\
|
||||
OpenOutputs3=0
|
||||
AddToProject3=0
|
||||
TimestampFolder3=0
|
||||
UseOutputName3=0
|
||||
OpenODBOutput3=0
|
||||
OpenGerberOutput3=0
|
||||
OpenNCDrillOutput3=0
|
||||
OpenIPCOutput3=0
|
||||
EnableReload3=0
|
||||
RelativeOutputPath4=
|
||||
OpenOutputs4=1
|
||||
|
||||
BIN
Binary file not shown.
+20
@@ -0,0 +1,20 @@
|
||||
------------------------------------------------------------------------------------------
|
||||
Gerber File Extension Report For: SolenoidValveDriver_v01_PCB.GBR 2021-05-27 22:55:17
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
Layer Extension Layer Description
|
||||
------------------------------------------------------------------------------------------
|
||||
.GTO Top Overlay
|
||||
.GTP Top Paste
|
||||
.GTS Top Solder
|
||||
.GTL Top Layer
|
||||
.GBL Bottom Layer
|
||||
.GBS Bottom Solder
|
||||
.GBP Bottom Paste
|
||||
.GBO Bottom Overlay
|
||||
.GKO Keep-Out Layer
|
||||
.GD1 Drill Drawing
|
||||
.GG1 Drill Guide
|
||||
------------------------------------------------------------------------------------------
|
||||
+735
@@ -0,0 +1,735 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Physical_Order=2*
|
||||
G04 Layer_Color=16711680*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD11C,0.02362*%
|
||||
%ADD37O,0.07874X0.05906*%
|
||||
%ADD38R,0.07874X0.05906*%
|
||||
%ADD39C,0.14567*%
|
||||
%ADD40R,0.05906X0.07874*%
|
||||
%ADD41O,0.05906X0.07874*%
|
||||
%ADD42C,0.03150*%
|
||||
G36*
|
||||
X57087Y-813D02*
|
||||
X58807Y-948D01*
|
||||
X60485Y-1351D01*
|
||||
X62080Y-2012D01*
|
||||
X63551Y-2913D01*
|
||||
X64863Y-4034D01*
|
||||
X65984Y-5347D01*
|
||||
X66886Y-6818D01*
|
||||
X67546Y-8412D01*
|
||||
X67949Y-10091D01*
|
||||
X68085Y-11811D01*
|
||||
X68085D01*
|
||||
Y-98425D01*
|
||||
X68085D01*
|
||||
X67949Y-100146D01*
|
||||
X67546Y-101824D01*
|
||||
X66886Y-103418D01*
|
||||
X65984Y-104890D01*
|
||||
X64863Y-106202D01*
|
||||
X63551Y-107323D01*
|
||||
X62080Y-108224D01*
|
||||
X60485Y-108885D01*
|
||||
X58807Y-109288D01*
|
||||
X57087Y-109423D01*
|
||||
Y-109424D01*
|
||||
X-57087D01*
|
||||
Y-109423D01*
|
||||
X-58807Y-109288D01*
|
||||
X-60485Y-108885D01*
|
||||
X-62080Y-108225D01*
|
||||
X-63551Y-107323D01*
|
||||
X-64863Y-106202D01*
|
||||
X-65984Y-104890D01*
|
||||
X-66886Y-103418D01*
|
||||
X-67546Y-101824D01*
|
||||
X-67949Y-100146D01*
|
||||
X-68085Y-98425D01*
|
||||
X-68085D01*
|
||||
Y-11811D01*
|
||||
X-68085D01*
|
||||
X-67949Y-10091D01*
|
||||
X-67546Y-8412D01*
|
||||
X-66886Y-6818D01*
|
||||
X-65984Y-5347D01*
|
||||
X-64863Y-4034D01*
|
||||
X-63551Y-2913D01*
|
||||
X-62080Y-2012D01*
|
||||
X-60485Y-1351D01*
|
||||
X-58807Y-948D01*
|
||||
X-57087Y-813D01*
|
||||
Y-812D01*
|
||||
X57087D01*
|
||||
Y-813D01*
|
||||
D02*
|
||||
G37*
|
||||
%LPC*%
|
||||
G36*
|
||||
X8553Y-7963D02*
|
||||
X1447D01*
|
||||
Y-17037D01*
|
||||
X8553D01*
|
||||
Y-7963D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-5000Y-7932D02*
|
||||
X-5928Y-8054D01*
|
||||
X-6792Y-8412D01*
|
||||
X-7534Y-8982D01*
|
||||
X-8103Y-9724D01*
|
||||
X-8461Y-10588D01*
|
||||
X-8583Y-11516D01*
|
||||
Y-13484D01*
|
||||
X-8461Y-14412D01*
|
||||
X-8103Y-15276D01*
|
||||
X-7534Y-16018D01*
|
||||
X-6792Y-16588D01*
|
||||
X-5928Y-16946D01*
|
||||
X-5000Y-17068D01*
|
||||
X-4073Y-16946D01*
|
||||
X-3208Y-16588D01*
|
||||
X-2466Y-16018D01*
|
||||
X-1897Y-15276D01*
|
||||
X-1539Y-14412D01*
|
||||
X-1417Y-13484D01*
|
||||
Y-11516D01*
|
||||
X-1539Y-10588D01*
|
||||
X-1897Y-9724D01*
|
||||
X-2466Y-8982D01*
|
||||
X-3208Y-8412D01*
|
||||
X-4073Y-8054D01*
|
||||
X-5000Y-7932D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-51181Y-3889D02*
|
||||
X-52727Y-4042D01*
|
||||
X-54213Y-4492D01*
|
||||
X-55582Y-5224D01*
|
||||
X-56783Y-6210D01*
|
||||
X-57768Y-7410D01*
|
||||
X-58500Y-8780D01*
|
||||
X-58951Y-10266D01*
|
||||
X-59103Y-11811D01*
|
||||
X-58951Y-13356D01*
|
||||
X-58500Y-14842D01*
|
||||
X-57768Y-16212D01*
|
||||
X-56783Y-17412D01*
|
||||
X-55582Y-18398D01*
|
||||
X-54213Y-19130D01*
|
||||
X-52727Y-19580D01*
|
||||
X-51181Y-19733D01*
|
||||
X-49636Y-19580D01*
|
||||
X-48150Y-19130D01*
|
||||
X-46780Y-18398D01*
|
||||
X-45580Y-17412D01*
|
||||
X-44594Y-16212D01*
|
||||
X-43863Y-14842D01*
|
||||
X-43412Y-13356D01*
|
||||
X-43260Y-11811D01*
|
||||
X-43412Y-10266D01*
|
||||
X-43863Y-8780D01*
|
||||
X-44594Y-7410D01*
|
||||
X-45580Y-6210D01*
|
||||
X-46780Y-5224D01*
|
||||
X-48150Y-4492D01*
|
||||
X-49636Y-4042D01*
|
||||
X-51181Y-3889D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X63592Y-26947D02*
|
||||
X54518D01*
|
||||
Y-34053D01*
|
||||
X63592D01*
|
||||
Y-26947D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-54518D02*
|
||||
X-63592D01*
|
||||
Y-34053D01*
|
||||
X-54518D01*
|
||||
Y-26947D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X60039Y-36917D02*
|
||||
X58071D01*
|
||||
X57143Y-37039D01*
|
||||
X56279Y-37397D01*
|
||||
X55537Y-37966D01*
|
||||
X54967Y-38708D01*
|
||||
X54610Y-39573D01*
|
||||
X54488Y-40500D01*
|
||||
X54610Y-41427D01*
|
||||
X54967Y-42292D01*
|
||||
X55537Y-43034D01*
|
||||
X56279Y-43603D01*
|
||||
X57143Y-43961D01*
|
||||
X58071Y-44083D01*
|
||||
X60039D01*
|
||||
X60967Y-43961D01*
|
||||
X61831Y-43603D01*
|
||||
X62573Y-43034D01*
|
||||
X63143Y-42292D01*
|
||||
X63501Y-41427D01*
|
||||
X63623Y-40500D01*
|
||||
X63501Y-39573D01*
|
||||
X63143Y-38708D01*
|
||||
X62573Y-37966D01*
|
||||
X61831Y-37397D01*
|
||||
X60967Y-37039D01*
|
||||
X60039Y-36917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-58071D02*
|
||||
X-60039D01*
|
||||
X-60967Y-37039D01*
|
||||
X-61831Y-37397D01*
|
||||
X-62573Y-37966D01*
|
||||
X-63143Y-38708D01*
|
||||
X-63501Y-39573D01*
|
||||
X-63623Y-40500D01*
|
||||
X-63501Y-41427D01*
|
||||
X-63143Y-42292D01*
|
||||
X-62573Y-43034D01*
|
||||
X-61831Y-43603D01*
|
||||
X-60967Y-43961D01*
|
||||
X-60039Y-44083D01*
|
||||
X-58071D01*
|
||||
X-57143Y-43961D01*
|
||||
X-56279Y-43603D01*
|
||||
X-55537Y-43034D01*
|
||||
X-54967Y-42292D01*
|
||||
X-54610Y-41427D01*
|
||||
X-54488Y-40500D01*
|
||||
X-54610Y-39573D01*
|
||||
X-54967Y-38708D01*
|
||||
X-55537Y-37966D01*
|
||||
X-56279Y-37397D01*
|
||||
X-57143Y-37039D01*
|
||||
X-58071Y-36917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X25500Y-37283D02*
|
||||
X24651Y-37451D01*
|
||||
X23932Y-37932D01*
|
||||
X23451Y-38651D01*
|
||||
X23283Y-39500D01*
|
||||
X23451Y-40349D01*
|
||||
X23684Y-40697D01*
|
||||
Y-46803D01*
|
||||
X23451Y-47151D01*
|
||||
X23283Y-48000D01*
|
||||
X23451Y-48849D01*
|
||||
X23932Y-49568D01*
|
||||
X24651Y-50049D01*
|
||||
X25500Y-50217D01*
|
||||
X26349Y-50049D01*
|
||||
X27068Y-49568D01*
|
||||
X27549Y-48849D01*
|
||||
X27717Y-48000D01*
|
||||
X27549Y-47151D01*
|
||||
X27316Y-46803D01*
|
||||
Y-40697D01*
|
||||
X27549Y-40349D01*
|
||||
X27717Y-39500D01*
|
||||
X27549Y-38651D01*
|
||||
X27068Y-37932D01*
|
||||
X26349Y-37451D01*
|
||||
X25500Y-37283D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X60039Y-46917D02*
|
||||
X58071D01*
|
||||
X57143Y-47039D01*
|
||||
X56279Y-47397D01*
|
||||
X55537Y-47966D01*
|
||||
X54967Y-48708D01*
|
||||
X54610Y-49573D01*
|
||||
X54488Y-50500D01*
|
||||
X54610Y-51427D01*
|
||||
X54967Y-52292D01*
|
||||
X55537Y-53034D01*
|
||||
X56279Y-53603D01*
|
||||
X57143Y-53961D01*
|
||||
X58071Y-54083D01*
|
||||
X60039D01*
|
||||
X60967Y-53961D01*
|
||||
X61831Y-53603D01*
|
||||
X62573Y-53034D01*
|
||||
X63143Y-52292D01*
|
||||
X63501Y-51427D01*
|
||||
X63623Y-50500D01*
|
||||
X63501Y-49573D01*
|
||||
X63143Y-48708D01*
|
||||
X62573Y-47966D01*
|
||||
X61831Y-47397D01*
|
||||
X60967Y-47039D01*
|
||||
X60039Y-46917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-58071D02*
|
||||
X-60039D01*
|
||||
X-60967Y-47039D01*
|
||||
X-61831Y-47397D01*
|
||||
X-62573Y-47966D01*
|
||||
X-63143Y-48708D01*
|
||||
X-63501Y-49573D01*
|
||||
X-63623Y-50500D01*
|
||||
X-63501Y-51427D01*
|
||||
X-63143Y-52292D01*
|
||||
X-62573Y-53034D01*
|
||||
X-61831Y-53603D01*
|
||||
X-60967Y-53961D01*
|
||||
X-60039Y-54083D01*
|
||||
X-58071D01*
|
||||
X-57143Y-53961D01*
|
||||
X-56279Y-53603D01*
|
||||
X-55537Y-53034D01*
|
||||
X-54967Y-52292D01*
|
||||
X-54610Y-51427D01*
|
||||
X-54488Y-50500D01*
|
||||
X-54610Y-49573D01*
|
||||
X-54967Y-48708D01*
|
||||
X-55537Y-47966D01*
|
||||
X-56279Y-47397D01*
|
||||
X-57143Y-47039D01*
|
||||
X-58071Y-46917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-16000Y-40783D02*
|
||||
X-16849Y-40951D01*
|
||||
X-17568Y-41432D01*
|
||||
X-18049Y-42151D01*
|
||||
X-18217Y-43000D01*
|
||||
X-18049Y-43849D01*
|
||||
X-17816Y-44197D01*
|
||||
Y-56303D01*
|
||||
X-18049Y-56651D01*
|
||||
X-18217Y-57500D01*
|
||||
X-18049Y-58349D01*
|
||||
X-17568Y-59068D01*
|
||||
X-16849Y-59549D01*
|
||||
X-16000Y-59717D01*
|
||||
X-15151Y-59549D01*
|
||||
X-14432Y-59068D01*
|
||||
X-13951Y-58349D01*
|
||||
X-13783Y-57500D01*
|
||||
X-13951Y-56651D01*
|
||||
X-14184Y-56303D01*
|
||||
Y-44197D01*
|
||||
X-13951Y-43849D01*
|
||||
X-13783Y-43000D01*
|
||||
X-13951Y-42151D01*
|
||||
X-14432Y-41432D01*
|
||||
X-15151Y-40951D01*
|
||||
X-16000Y-40783D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X60039Y-56917D02*
|
||||
X58071D01*
|
||||
X57143Y-57039D01*
|
||||
X56279Y-57397D01*
|
||||
X55537Y-57966D01*
|
||||
X54967Y-58708D01*
|
||||
X54610Y-59573D01*
|
||||
X54488Y-60500D01*
|
||||
X54610Y-61427D01*
|
||||
X54967Y-62292D01*
|
||||
X55537Y-63034D01*
|
||||
X56279Y-63603D01*
|
||||
X57143Y-63961D01*
|
||||
X58071Y-64083D01*
|
||||
X60039D01*
|
||||
X60967Y-63961D01*
|
||||
X61831Y-63603D01*
|
||||
X62573Y-63034D01*
|
||||
X63143Y-62292D01*
|
||||
X63501Y-61427D01*
|
||||
X63623Y-60500D01*
|
||||
X63501Y-59573D01*
|
||||
X63143Y-58708D01*
|
||||
X62573Y-57966D01*
|
||||
X61831Y-57397D01*
|
||||
X60967Y-57039D01*
|
||||
X60039Y-56917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-58071D02*
|
||||
X-60039D01*
|
||||
X-60967Y-57039D01*
|
||||
X-61831Y-57397D01*
|
||||
X-62573Y-57966D01*
|
||||
X-63143Y-58708D01*
|
||||
X-63501Y-59573D01*
|
||||
X-63623Y-60500D01*
|
||||
X-63501Y-61427D01*
|
||||
X-63143Y-62292D01*
|
||||
X-62573Y-63034D01*
|
||||
X-61831Y-63603D01*
|
||||
X-60967Y-63961D01*
|
||||
X-60039Y-64083D01*
|
||||
X-58071D01*
|
||||
X-57143Y-63961D01*
|
||||
X-56279Y-63603D01*
|
||||
X-55537Y-63034D01*
|
||||
X-54967Y-62292D01*
|
||||
X-54610Y-61427D01*
|
||||
X-54488Y-60500D01*
|
||||
X-54610Y-59573D01*
|
||||
X-54967Y-58708D01*
|
||||
X-55537Y-57966D01*
|
||||
X-56279Y-57397D01*
|
||||
X-57143Y-57039D01*
|
||||
X-58071Y-56917D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X60039Y-66330D02*
|
||||
Y-69516D01*
|
||||
X64079D01*
|
||||
X64067Y-69421D01*
|
||||
X63650Y-68415D01*
|
||||
X62988Y-67552D01*
|
||||
X62124Y-66889D01*
|
||||
X61119Y-66473D01*
|
||||
X60039Y-66330D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-58071D02*
|
||||
Y-69516D01*
|
||||
X-54031D01*
|
||||
X-54043Y-69421D01*
|
||||
X-54460Y-68415D01*
|
||||
X-55123Y-67552D01*
|
||||
X-55986Y-66889D01*
|
||||
X-56992Y-66473D01*
|
||||
X-58071Y-66330D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X58071D02*
|
||||
X58071D01*
|
||||
X56992Y-66473D01*
|
||||
X55986Y-66889D01*
|
||||
X55123Y-67552D01*
|
||||
X54460Y-68415D01*
|
||||
X54043Y-69421D01*
|
||||
X54031Y-69516D01*
|
||||
X58071D01*
|
||||
Y-66330D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-60039D02*
|
||||
X-60039D01*
|
||||
X-61119Y-66473D01*
|
||||
X-62124Y-66889D01*
|
||||
X-62988Y-67552D01*
|
||||
X-63650Y-68415D01*
|
||||
X-64067Y-69421D01*
|
||||
X-64079Y-69516D01*
|
||||
X-60039D01*
|
||||
Y-66330D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X64079Y-71484D02*
|
||||
X60039D01*
|
||||
Y-74669D01*
|
||||
X61119Y-74527D01*
|
||||
X62124Y-74111D01*
|
||||
X62988Y-73448D01*
|
||||
X63650Y-72585D01*
|
||||
X64067Y-71579D01*
|
||||
X64079Y-71484D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-54031D02*
|
||||
X-58071D01*
|
||||
Y-74669D01*
|
||||
X-56992Y-74527D01*
|
||||
X-55986Y-74111D01*
|
||||
X-55123Y-73448D01*
|
||||
X-54460Y-72585D01*
|
||||
X-54043Y-71579D01*
|
||||
X-54031Y-71484D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X58071D02*
|
||||
X54031D01*
|
||||
X54043Y-71579D01*
|
||||
X54460Y-72585D01*
|
||||
X55123Y-73448D01*
|
||||
X55986Y-74111D01*
|
||||
X56992Y-74527D01*
|
||||
X58071Y-74669D01*
|
||||
X58071D01*
|
||||
Y-71484D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-60039D02*
|
||||
X-64079D01*
|
||||
X-64067Y-71579D01*
|
||||
X-63650Y-72585D01*
|
||||
X-62988Y-73448D01*
|
||||
X-62124Y-74111D01*
|
||||
X-61119Y-74527D01*
|
||||
X-60039Y-74669D01*
|
||||
X-60039D01*
|
||||
Y-71484D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X15984Y-96476D02*
|
||||
Y-100516D01*
|
||||
X19170D01*
|
||||
Y-100516D01*
|
||||
X19027Y-99437D01*
|
||||
X18611Y-98431D01*
|
||||
X17948Y-97567D01*
|
||||
X17085Y-96905D01*
|
||||
X16079Y-96488D01*
|
||||
X15984Y-96476D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X14016D02*
|
||||
X13921Y-96488D01*
|
||||
X12915Y-96905D01*
|
||||
X12052Y-97567D01*
|
||||
X11389Y-98431D01*
|
||||
X10972Y-99437D01*
|
||||
X10830Y-100516D01*
|
||||
Y-100516D01*
|
||||
X14016D01*
|
||||
Y-96476D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-11447Y-96963D02*
|
||||
X-18553D01*
|
||||
Y-106037D01*
|
||||
X-11447D01*
|
||||
Y-96963D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X5000Y-96932D02*
|
||||
X4073Y-97054D01*
|
||||
X3208Y-97412D01*
|
||||
X2466Y-97982D01*
|
||||
X1897Y-98724D01*
|
||||
X1539Y-99588D01*
|
||||
X1417Y-100516D01*
|
||||
Y-102484D01*
|
||||
X1539Y-103412D01*
|
||||
X1897Y-104276D01*
|
||||
X2466Y-105018D01*
|
||||
X3208Y-105588D01*
|
||||
X4073Y-105946D01*
|
||||
X5000Y-106068D01*
|
||||
X5928Y-105946D01*
|
||||
X6792Y-105588D01*
|
||||
X7534Y-105018D01*
|
||||
X8103Y-104276D01*
|
||||
X8461Y-103412D01*
|
||||
X8583Y-102484D01*
|
||||
Y-100516D01*
|
||||
X8461Y-99588D01*
|
||||
X8103Y-98724D01*
|
||||
X7534Y-97982D01*
|
||||
X6792Y-97412D01*
|
||||
X5928Y-97054D01*
|
||||
X5000Y-96932D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X-5000D02*
|
||||
X-5928Y-97054D01*
|
||||
X-6792Y-97412D01*
|
||||
X-7534Y-97982D01*
|
||||
X-8103Y-98724D01*
|
||||
X-8461Y-99588D01*
|
||||
X-8583Y-100516D01*
|
||||
Y-102484D01*
|
||||
X-8461Y-103412D01*
|
||||
X-8103Y-104276D01*
|
||||
X-7534Y-105018D01*
|
||||
X-6792Y-105588D01*
|
||||
X-5928Y-105946D01*
|
||||
X-5000Y-106068D01*
|
||||
X-4073Y-105946D01*
|
||||
X-3208Y-105588D01*
|
||||
X-2466Y-105018D01*
|
||||
X-1897Y-104276D01*
|
||||
X-1539Y-103412D01*
|
||||
X-1417Y-102484D01*
|
||||
Y-100516D01*
|
||||
X-1539Y-99588D01*
|
||||
X-1897Y-98724D01*
|
||||
X-2466Y-97982D01*
|
||||
X-3208Y-97412D01*
|
||||
X-4073Y-97054D01*
|
||||
X-5000Y-96932D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X51181Y-90504D02*
|
||||
X49636Y-90656D01*
|
||||
X48150Y-91107D01*
|
||||
X46780Y-91839D01*
|
||||
X45580Y-92824D01*
|
||||
X44594Y-94024D01*
|
||||
X43863Y-95394D01*
|
||||
X43412Y-96880D01*
|
||||
X43260Y-98425D01*
|
||||
X43412Y-99971D01*
|
||||
X43863Y-101457D01*
|
||||
X44594Y-102826D01*
|
||||
X45580Y-104027D01*
|
||||
X46780Y-105012D01*
|
||||
X48150Y-105744D01*
|
||||
X49636Y-106195D01*
|
||||
X51181Y-106347D01*
|
||||
X52727Y-106195D01*
|
||||
X54213Y-105744D01*
|
||||
X55582Y-105012D01*
|
||||
X56783Y-104027D01*
|
||||
X57768Y-102826D01*
|
||||
X58500Y-101457D01*
|
||||
X58951Y-99971D01*
|
||||
X59103Y-98425D01*
|
||||
X58951Y-96880D01*
|
||||
X58500Y-95394D01*
|
||||
X57768Y-94024D01*
|
||||
X56783Y-92824D01*
|
||||
X55582Y-91839D01*
|
||||
X54213Y-91107D01*
|
||||
X52727Y-90656D01*
|
||||
X51181Y-90504D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X19170Y-102484D02*
|
||||
X15984D01*
|
||||
Y-106524D01*
|
||||
X16079Y-106512D01*
|
||||
X17085Y-106095D01*
|
||||
X17948Y-105433D01*
|
||||
X18611Y-104569D01*
|
||||
X19027Y-103563D01*
|
||||
X19170Y-102484D01*
|
||||
Y-102484D01*
|
||||
D02*
|
||||
G37*
|
||||
G36*
|
||||
X14016D02*
|
||||
X10830D01*
|
||||
Y-102484D01*
|
||||
X10972Y-103563D01*
|
||||
X11389Y-104569D01*
|
||||
X12052Y-105433D01*
|
||||
X12915Y-106095D01*
|
||||
X13921Y-106512D01*
|
||||
X14016Y-106524D01*
|
||||
Y-102484D01*
|
||||
D02*
|
||||
G37*
|
||||
%LPD*%
|
||||
D11*
|
||||
X25500Y-48000D02*
|
||||
Y-39500D01*
|
||||
X-16000Y-57500D02*
|
||||
Y-43000D01*
|
||||
D37*
|
||||
X59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X-59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
D38*
|
||||
X59055Y-30500D02*
|
||||
D03*
|
||||
X-59055D02*
|
||||
D03*
|
||||
D39*
|
||||
X51181Y-98425D02*
|
||||
D03*
|
||||
X-51181Y-11811D02*
|
||||
D03*
|
||||
D40*
|
||||
X-15000Y-101500D02*
|
||||
D03*
|
||||
X5000Y-12500D02*
|
||||
D03*
|
||||
D41*
|
||||
X-5000Y-101500D02*
|
||||
D03*
|
||||
X5000D02*
|
||||
D03*
|
||||
X15000D02*
|
||||
D03*
|
||||
X-5000Y-12500D02*
|
||||
D03*
|
||||
D42*
|
||||
X25500Y-39500D02*
|
||||
D03*
|
||||
X9000Y-34413D02*
|
||||
D03*
|
||||
X-16000Y-57500D02*
|
||||
D03*
|
||||
Y-43000D02*
|
||||
D03*
|
||||
X25500Y-48000D02*
|
||||
D03*
|
||||
X15500Y-57500D02*
|
||||
D03*
|
||||
X-27000Y-70000D02*
|
||||
D03*
|
||||
X33492Y-35500D02*
|
||||
D03*
|
||||
X-41787Y-35750D02*
|
||||
D03*
|
||||
X30500Y-12500D02*
|
||||
D03*
|
||||
M02*
|
||||
+11925
File diff suppressed because it is too large
Load Diff
+16
@@ -0,0 +1,16 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=128*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
M02*
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=16711935*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD28O,0.08674X0.06706*%
|
||||
%ADD29R,0.08674X0.06706*%
|
||||
%ADD30C,0.15367*%
|
||||
%ADD31R,0.06706X0.08674*%
|
||||
%ADD32O,0.06706X0.08674*%
|
||||
D28*
|
||||
X59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X-59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
D29*
|
||||
X59055Y-30500D02*
|
||||
D03*
|
||||
X-59055D02*
|
||||
D03*
|
||||
D30*
|
||||
X51181Y-98425D02*
|
||||
D03*
|
||||
X-51181Y-11811D02*
|
||||
D03*
|
||||
D31*
|
||||
X-15000Y-101500D02*
|
||||
D03*
|
||||
X5000Y-12500D02*
|
||||
D03*
|
||||
D32*
|
||||
X-5000Y-101500D02*
|
||||
D03*
|
||||
X5000D02*
|
||||
D03*
|
||||
X15000D02*
|
||||
D03*
|
||||
X-5000Y-12500D02*
|
||||
D03*
|
||||
M02*
|
||||
+3275
File diff suppressed because it is too large
Load Diff
+130
@@ -0,0 +1,130 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=128*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD46C,0.00200*%
|
||||
D46*
|
||||
X57284Y-70500D02*
|
||||
X60827D01*
|
||||
X59055Y-72272D02*
|
||||
Y-68728D01*
|
||||
X57284Y-60500D02*
|
||||
X60827D01*
|
||||
X59055Y-62272D02*
|
||||
Y-58728D01*
|
||||
X57284Y-50500D02*
|
||||
X60827D01*
|
||||
X59055Y-52272D02*
|
||||
Y-48728D01*
|
||||
X57284Y-40500D02*
|
||||
X60827D01*
|
||||
X59055Y-42272D02*
|
||||
Y-38728D01*
|
||||
X57284Y-30500D02*
|
||||
X60827D01*
|
||||
X59055Y-32272D02*
|
||||
Y-28728D01*
|
||||
X44291Y-98425D02*
|
||||
X58071D01*
|
||||
X51181Y-105315D02*
|
||||
Y-91535D01*
|
||||
X-58071Y-11811D02*
|
||||
X-44291D01*
|
||||
X-51181Y-18701D02*
|
||||
Y-4921D01*
|
||||
X-60827Y-70500D02*
|
||||
X-57284D01*
|
||||
X-59055Y-72272D02*
|
||||
Y-68728D01*
|
||||
X-60827Y-60500D02*
|
||||
X-57284D01*
|
||||
X-59055Y-62272D02*
|
||||
Y-58728D01*
|
||||
X-60827Y-50500D02*
|
||||
X-57284D01*
|
||||
X-59055Y-52272D02*
|
||||
Y-48728D01*
|
||||
X-60827Y-40500D02*
|
||||
X-57284D01*
|
||||
X-59055Y-42272D02*
|
||||
Y-38728D01*
|
||||
X-60827Y-30500D02*
|
||||
X-57284D01*
|
||||
X-59055Y-32272D02*
|
||||
Y-28728D01*
|
||||
X-16772Y-101500D02*
|
||||
X-13228D01*
|
||||
X-15000Y-103272D02*
|
||||
Y-99728D01*
|
||||
X-6772Y-101500D02*
|
||||
X-3228D01*
|
||||
X-5000Y-103272D02*
|
||||
Y-99728D01*
|
||||
X3228Y-101500D02*
|
||||
X6772D01*
|
||||
X5000Y-103272D02*
|
||||
Y-99728D01*
|
||||
X13228Y-101500D02*
|
||||
X16772D01*
|
||||
X15000Y-103272D02*
|
||||
Y-99728D01*
|
||||
X-6772Y-12500D02*
|
||||
X-3228D01*
|
||||
X-5000Y-14272D02*
|
||||
Y-10728D01*
|
||||
X3228Y-12500D02*
|
||||
X6772D01*
|
||||
X5000Y-14272D02*
|
||||
Y-10728D01*
|
||||
X24713Y-39500D02*
|
||||
X26287D01*
|
||||
X25500Y-40287D02*
|
||||
Y-38713D01*
|
||||
X8213Y-34413D02*
|
||||
X9787D01*
|
||||
X9000Y-35201D02*
|
||||
Y-33626D01*
|
||||
X-16787Y-57500D02*
|
||||
X-15213D01*
|
||||
X-16000Y-58287D02*
|
||||
Y-56713D01*
|
||||
X-16787Y-43000D02*
|
||||
X-15213D01*
|
||||
X-16000Y-43787D02*
|
||||
Y-42213D01*
|
||||
X24713Y-48000D02*
|
||||
X26287D01*
|
||||
X25500Y-48787D02*
|
||||
Y-47213D01*
|
||||
X14713Y-57500D02*
|
||||
X16287D01*
|
||||
X15500Y-58287D02*
|
||||
Y-56713D01*
|
||||
X-27787Y-70000D02*
|
||||
X-26213D01*
|
||||
X-27000Y-70787D02*
|
||||
Y-69213D01*
|
||||
X32705Y-35500D02*
|
||||
X34280D01*
|
||||
X33492Y-36287D02*
|
||||
Y-34713D01*
|
||||
X-42575Y-35750D02*
|
||||
X-41000D01*
|
||||
X-41787Y-36537D02*
|
||||
Y-34963D01*
|
||||
X29713Y-12500D02*
|
||||
X31287D01*
|
||||
X30500Y-13287D02*
|
||||
Y-11713D01*
|
||||
M02*
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=16711935*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD44C,0.00394*%
|
||||
D44*
|
||||
X-57087Y0D02*
|
||||
G03*
|
||||
X-68898Y-11811I0J-11811D01*
|
||||
G01*
|
||||
Y-98425D02*
|
||||
G03*
|
||||
X-57087Y-110236I11811J0D01*
|
||||
G01*
|
||||
X57087Y-110236D02*
|
||||
G03*
|
||||
X68898Y-98425I0J11811D01*
|
||||
G01*
|
||||
Y-11811D02*
|
||||
G03*
|
||||
X57087Y0I-11811J0D01*
|
||||
G01*
|
||||
X-68898Y-98425D02*
|
||||
Y-11811D01*
|
||||
X-57087Y-110236D02*
|
||||
X57087D01*
|
||||
X-57087Y-0D02*
|
||||
X57087D01*
|
||||
X68898Y-98425D02*
|
||||
Y-11811D01*
|
||||
M02*
|
||||
+441
@@ -0,0 +1,441 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Physical_Order=1*
|
||||
G04 Layer_Color=255*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD11C,0.02362*%
|
||||
%ADD16R,0.02756X0.03543*%
|
||||
%ADD17R,0.05906X0.05906*%
|
||||
%ADD18R,0.03543X0.03150*%
|
||||
%ADD19R,0.06102X0.02362*%
|
||||
%ADD20R,0.03347X0.03740*%
|
||||
%ADD21R,0.03543X0.02756*%
|
||||
%ADD33C,0.01181*%
|
||||
%ADD34C,0.03150*%
|
||||
%ADD35C,0.01968*%
|
||||
%ADD36C,0.01575*%
|
||||
%ADD37O,0.07874X0.05906*%
|
||||
%ADD38R,0.07874X0.05906*%
|
||||
%ADD39C,0.14567*%
|
||||
%ADD40R,0.05906X0.07874*%
|
||||
%ADD41O,0.05906X0.07874*%
|
||||
%ADD42C,0.03150*%
|
||||
D11*
|
||||
X3937Y-34957D02*
|
||||
X8457D01*
|
||||
X9000Y-34413D01*
|
||||
X5000Y-12500D02*
|
||||
Y-6500D01*
|
||||
X3000Y-4500D02*
|
||||
X5000Y-6500D01*
|
||||
X-9500Y-4500D02*
|
||||
X3000D01*
|
||||
X-29000Y-24000D02*
|
||||
X-9500Y-4500D01*
|
||||
X-46000Y-24000D02*
|
||||
X-29000D01*
|
||||
X-48008Y-26008D02*
|
||||
X-46000Y-24000D01*
|
||||
X-48008Y-30500D02*
|
||||
Y-26008D01*
|
||||
X20000Y-19500D02*
|
||||
X34500D01*
|
||||
X9000D02*
|
||||
X20000D01*
|
||||
X19890Y-19390D02*
|
||||
X20000Y-19500D01*
|
||||
X19890Y-19390D02*
|
||||
Y-12500D01*
|
||||
X34500Y-19500D02*
|
||||
X39713Y-24713D01*
|
||||
Y-30500D02*
|
||||
Y-24713D01*
|
||||
X39713Y-50500D02*
|
||||
X59055D01*
|
||||
X33500Y-45500D02*
|
||||
X38500D01*
|
||||
X30000D02*
|
||||
X33500D01*
|
||||
X33492Y-45508D02*
|
||||
X33500Y-45500D01*
|
||||
X33492Y-50500D02*
|
||||
Y-45508D01*
|
||||
X-16000Y-57500D02*
|
||||
X-10630D01*
|
||||
X-20787D02*
|
||||
X-16000D01*
|
||||
Y-43000D02*
|
||||
X-5500D01*
|
||||
X-35500D02*
|
||||
X-16000D01*
|
||||
X39713Y-44287D02*
|
||||
Y-40500D01*
|
||||
X38500Y-45500D02*
|
||||
X39713Y-44287D01*
|
||||
X28000Y-43500D02*
|
||||
X30000Y-45500D01*
|
||||
X16500Y-43500D02*
|
||||
X28000D01*
|
||||
X11500Y-48500D02*
|
||||
X16500Y-43500D01*
|
||||
X19390Y-57500D02*
|
||||
X19500Y-57610D01*
|
||||
X10630Y-57500D02*
|
||||
X19390D01*
|
||||
X0Y-48500D02*
|
||||
X11500D01*
|
||||
X-5500Y-43000D02*
|
||||
X0Y-48500D01*
|
||||
X-39000Y-46500D02*
|
||||
X-35500Y-43000D01*
|
||||
X-47000Y-46500D02*
|
||||
X-39000D01*
|
||||
X-48008Y-45492D02*
|
||||
X-47000Y-46500D01*
|
||||
X-48008Y-45492D02*
|
||||
Y-41000D01*
|
||||
X33492Y-50500D02*
|
||||
X33492Y-50500D01*
|
||||
X33492Y-60500D02*
|
||||
Y-50500D01*
|
||||
X-27000Y-70000D02*
|
||||
Y-57508D01*
|
||||
X-27008Y-57500D02*
|
||||
X-27000Y-57508D01*
|
||||
X33492Y-35500D02*
|
||||
Y-30500D01*
|
||||
Y-40500D02*
|
||||
Y-35500D01*
|
||||
X-41787Y-35750D02*
|
||||
Y-30500D01*
|
||||
Y-41000D02*
|
||||
Y-35750D01*
|
||||
X26110Y-12500D02*
|
||||
X30500D01*
|
||||
X59055Y-30500D02*
|
||||
X59055Y-30500D01*
|
||||
X39713Y-30500D02*
|
||||
X59055D01*
|
||||
X39713Y-30500D02*
|
||||
X39713Y-30500D01*
|
||||
Y-40500D02*
|
||||
X59055D01*
|
||||
X39713Y-40500D02*
|
||||
X39713Y-40500D01*
|
||||
X59055D02*
|
||||
X59055Y-40500D01*
|
||||
X39713Y-60500D02*
|
||||
X59055D01*
|
||||
X-59055Y-30500D02*
|
||||
X-48008D01*
|
||||
Y-41000D02*
|
||||
Y-40947D01*
|
||||
X-58805Y-40750D02*
|
||||
X-48205D01*
|
||||
X-59055Y-40500D02*
|
||||
X-58805Y-40750D01*
|
||||
X-48205D02*
|
||||
X-48008Y-40947D01*
|
||||
X-20787Y-64000D02*
|
||||
Y-57500D01*
|
||||
X-27008Y-64000D02*
|
||||
Y-57500D01*
|
||||
D16*
|
||||
X-48008Y-30500D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X-48008Y-41000D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X46110Y-81500D02*
|
||||
D03*
|
||||
X39890D02*
|
||||
D03*
|
||||
X39713Y-60500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
X39713Y-50500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X33492Y-30500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X26110Y-12500D02*
|
||||
D03*
|
||||
X19890D02*
|
||||
D03*
|
||||
X-27008Y-57500D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
X-27008Y-64000D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
D17*
|
||||
X9000Y-26500D02*
|
||||
D03*
|
||||
X-9000D02*
|
||||
D03*
|
||||
D18*
|
||||
X3937Y-42043D02*
|
||||
D03*
|
||||
Y-34957D02*
|
||||
D03*
|
||||
X-3937Y-38500D02*
|
||||
D03*
|
||||
D19*
|
||||
X-10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
X10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
D20*
|
||||
X33847Y-81500D02*
|
||||
D03*
|
||||
X27154D02*
|
||||
D03*
|
||||
D21*
|
||||
X25500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
X19500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
D33*
|
||||
X11457Y-42043D02*
|
||||
X14000Y-39500D01*
|
||||
X25500D01*
|
||||
X3937Y-42043D02*
|
||||
X11457D01*
|
||||
X19500Y-51390D02*
|
||||
X25500D01*
|
||||
Y-61500D02*
|
||||
Y-57610D01*
|
||||
X24500Y-62500D02*
|
||||
X25500Y-61500D01*
|
||||
X10630Y-62500D02*
|
||||
X24500D01*
|
||||
X59055Y-76945D02*
|
||||
Y-70500D01*
|
||||
X54500Y-81500D02*
|
||||
X59055Y-76945D01*
|
||||
X46110Y-81500D02*
|
||||
X54500D01*
|
||||
X33847D02*
|
||||
X39890D01*
|
||||
X27154Y-84847D02*
|
||||
Y-81500D01*
|
||||
X24500Y-87500D02*
|
||||
X27154Y-84847D01*
|
||||
X10630Y-87500D02*
|
||||
X24500D01*
|
||||
X5000Y-101500D02*
|
||||
Y-94000D01*
|
||||
X2000Y-91000D02*
|
||||
X5000Y-94000D01*
|
||||
X2000Y-91000D02*
|
||||
Y-79500D01*
|
||||
X4000Y-77500D01*
|
||||
X10630D01*
|
||||
X-5000Y-101500D02*
|
||||
Y-88500D01*
|
||||
X-6000Y-87500D02*
|
||||
X-5000Y-88500D01*
|
||||
X-10630Y-87500D02*
|
||||
X-6000D01*
|
||||
X-15000Y-101500D02*
|
||||
Y-94000D01*
|
||||
X-20787Y-88213D02*
|
||||
X-15000Y-94000D01*
|
||||
X-20787Y-88213D02*
|
||||
Y-64000D01*
|
||||
X25500Y-51390D02*
|
||||
Y-48000D01*
|
||||
X39713Y-65287D02*
|
||||
Y-60500D01*
|
||||
X37500Y-67500D02*
|
||||
X39713Y-65287D01*
|
||||
X10630Y-67500D02*
|
||||
X37500D01*
|
||||
D34*
|
||||
X-3937Y-38500D02*
|
||||
Y-34563D01*
|
||||
X-5500Y-33000D02*
|
||||
X-3937Y-34563D01*
|
||||
X-7500Y-33000D02*
|
||||
X-5500D01*
|
||||
X-9000Y-31500D02*
|
||||
X-7500Y-33000D01*
|
||||
X-9000Y-31500D02*
|
||||
Y-26500D01*
|
||||
X9000Y-19500D02*
|
||||
Y-16500D01*
|
||||
Y-26500D02*
|
||||
Y-19500D01*
|
||||
X-9000Y-17246D02*
|
||||
X-5000Y-13246D01*
|
||||
Y-12500D01*
|
||||
X-9000Y-26500D02*
|
||||
Y-17246D01*
|
||||
X5000Y-12500D02*
|
||||
X9000Y-16500D01*
|
||||
D35*
|
||||
X59055Y-50500D02*
|
||||
X61500D01*
|
||||
X65500Y-54500D01*
|
||||
Y-64500D02*
|
||||
Y-54500D01*
|
||||
X64500Y-65500D02*
|
||||
X65500Y-64500D01*
|
||||
X51500Y-65500D02*
|
||||
X64500D01*
|
||||
X44500Y-72500D02*
|
||||
X51500Y-65500D01*
|
||||
X10630Y-72500D02*
|
||||
X44500D01*
|
||||
X-65000Y-55500D02*
|
||||
X-60000Y-50500D01*
|
||||
X-65000Y-63500D02*
|
||||
Y-55500D01*
|
||||
X-63000Y-65500D02*
|
||||
X-46500D01*
|
||||
X-65000Y-63500D02*
|
||||
X-63000Y-65500D01*
|
||||
X2500Y-72500D02*
|
||||
X10630D01*
|
||||
X-2000Y-68000D02*
|
||||
X2500Y-72500D01*
|
||||
X-2000Y-68000D02*
|
||||
Y-57000D01*
|
||||
X-7500Y-51500D02*
|
||||
X-2000Y-57000D01*
|
||||
X-32500Y-51500D02*
|
||||
X-7500D01*
|
||||
X-46500Y-65500D02*
|
||||
X-32500Y-51500D01*
|
||||
X3000Y-65500D02*
|
||||
Y-56500D01*
|
||||
X-5500Y-48000D02*
|
||||
X3000Y-56500D01*
|
||||
X-35000Y-48000D02*
|
||||
X-5500D01*
|
||||
X5000Y-67500D02*
|
||||
X10630D01*
|
||||
X3000Y-65500D02*
|
||||
X5000Y-67500D01*
|
||||
X-47500Y-60500D02*
|
||||
X-35000Y-48000D01*
|
||||
X-59055Y-60500D02*
|
||||
X-47500D01*
|
||||
D36*
|
||||
X-60000Y-50500D02*
|
||||
X-59055D01*
|
||||
D37*
|
||||
X59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X-59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
D38*
|
||||
X59055Y-30500D02*
|
||||
D03*
|
||||
X-59055D02*
|
||||
D03*
|
||||
D39*
|
||||
X51181Y-98425D02*
|
||||
D03*
|
||||
X-51181Y-11811D02*
|
||||
D03*
|
||||
D40*
|
||||
X-15000Y-101500D02*
|
||||
D03*
|
||||
X5000Y-12500D02*
|
||||
D03*
|
||||
D41*
|
||||
X-5000Y-101500D02*
|
||||
D03*
|
||||
X5000D02*
|
||||
D03*
|
||||
X15000D02*
|
||||
D03*
|
||||
X-5000Y-12500D02*
|
||||
D03*
|
||||
D42*
|
||||
X25500Y-39500D02*
|
||||
D03*
|
||||
X9000Y-34413D02*
|
||||
D03*
|
||||
X-16000Y-57500D02*
|
||||
D03*
|
||||
Y-43000D02*
|
||||
D03*
|
||||
X25500Y-48000D02*
|
||||
D03*
|
||||
X15500Y-57500D02*
|
||||
D03*
|
||||
X-27000Y-70000D02*
|
||||
D03*
|
||||
X33492Y-35500D02*
|
||||
D03*
|
||||
X-41787Y-35750D02*
|
||||
D03*
|
||||
X30500Y-12500D02*
|
||||
D03*
|
||||
M02*
|
||||
+2193
File diff suppressed because it is too large
Load Diff
+118
@@ -0,0 +1,118 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=8421504*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD16R,0.02756X0.03543*%
|
||||
%ADD17R,0.05906X0.05906*%
|
||||
%ADD18R,0.03543X0.03150*%
|
||||
%ADD19R,0.06102X0.02362*%
|
||||
%ADD20R,0.03347X0.03740*%
|
||||
%ADD21R,0.03543X0.02756*%
|
||||
D16*
|
||||
X-48008Y-30500D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X-48008Y-41000D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X46110Y-81500D02*
|
||||
D03*
|
||||
X39890D02*
|
||||
D03*
|
||||
X39713Y-60500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
X39713Y-50500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X33492Y-30500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X26110Y-12500D02*
|
||||
D03*
|
||||
X19890D02*
|
||||
D03*
|
||||
X-27008Y-57500D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
X-27008Y-64000D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
D17*
|
||||
X9000Y-26500D02*
|
||||
D03*
|
||||
X-9000D02*
|
||||
D03*
|
||||
D18*
|
||||
X3937Y-42043D02*
|
||||
D03*
|
||||
Y-34957D02*
|
||||
D03*
|
||||
X-3937Y-38500D02*
|
||||
D03*
|
||||
D19*
|
||||
X-10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
X10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
D20*
|
||||
X33847Y-81500D02*
|
||||
D03*
|
||||
X27154D02*
|
||||
D03*
|
||||
D21*
|
||||
X25500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
X19500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
M02*
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
G04*
|
||||
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,21.2.1 (34)*
|
||||
G04*
|
||||
G04 Layer_Color=8388736*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G04*
|
||||
G04 #@! TF.SameCoordinates,9466BED1-F6BD-4CF9-8920-6B0B1F58636F*
|
||||
G04*
|
||||
G04*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
G04*
|
||||
G01*
|
||||
G75*
|
||||
%ADD22R,0.03556X0.04343*%
|
||||
%ADD23R,0.06706X0.06706*%
|
||||
%ADD24R,0.04343X0.03950*%
|
||||
%ADD25R,0.06902X0.03162*%
|
||||
%ADD26R,0.04147X0.04540*%
|
||||
%ADD27R,0.04343X0.03556*%
|
||||
%ADD28O,0.08674X0.06706*%
|
||||
%ADD29R,0.08674X0.06706*%
|
||||
%ADD30C,0.15367*%
|
||||
%ADD31R,0.06706X0.08674*%
|
||||
%ADD32O,0.06706X0.08674*%
|
||||
D22*
|
||||
X-48008Y-30500D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X-48008Y-41000D02*
|
||||
D03*
|
||||
X-41787D02*
|
||||
D03*
|
||||
X46110Y-81500D02*
|
||||
D03*
|
||||
X39890D02*
|
||||
D03*
|
||||
X39713Y-60500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
X39713Y-50500D02*
|
||||
D03*
|
||||
X33492D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X33492Y-30500D02*
|
||||
D03*
|
||||
X39713D02*
|
||||
D03*
|
||||
X26110Y-12500D02*
|
||||
D03*
|
||||
X19890D02*
|
||||
D03*
|
||||
X-27008Y-57500D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
X-27008Y-64000D02*
|
||||
D03*
|
||||
X-20787D02*
|
||||
D03*
|
||||
D23*
|
||||
X9000Y-26500D02*
|
||||
D03*
|
||||
X-9000D02*
|
||||
D03*
|
||||
D24*
|
||||
X3937Y-42043D02*
|
||||
D03*
|
||||
Y-34957D02*
|
||||
D03*
|
||||
X-3937Y-38500D02*
|
||||
D03*
|
||||
D25*
|
||||
X-10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
X10630Y-57500D02*
|
||||
D03*
|
||||
Y-62500D02*
|
||||
D03*
|
||||
Y-67500D02*
|
||||
D03*
|
||||
Y-72500D02*
|
||||
D03*
|
||||
Y-77500D02*
|
||||
D03*
|
||||
Y-82500D02*
|
||||
D03*
|
||||
Y-87500D02*
|
||||
D03*
|
||||
D26*
|
||||
X33847Y-81500D02*
|
||||
D03*
|
||||
X27154D02*
|
||||
D03*
|
||||
D27*
|
||||
X25500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
X19500Y-57610D02*
|
||||
D03*
|
||||
Y-51390D02*
|
||||
D03*
|
||||
D28*
|
||||
X59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
X-59055Y-70500D02*
|
||||
D03*
|
||||
Y-60500D02*
|
||||
D03*
|
||||
Y-50500D02*
|
||||
D03*
|
||||
Y-40500D02*
|
||||
D03*
|
||||
D29*
|
||||
X59055Y-30500D02*
|
||||
D03*
|
||||
X-59055D02*
|
||||
D03*
|
||||
D30*
|
||||
X51181Y-98425D02*
|
||||
D03*
|
||||
X-51181Y-11811D02*
|
||||
D03*
|
||||
D31*
|
||||
X-15000Y-101500D02*
|
||||
D03*
|
||||
X5000Y-12500D02*
|
||||
D03*
|
||||
D32*
|
||||
X-5000Y-101500D02*
|
||||
D03*
|
||||
X5000D02*
|
||||
D03*
|
||||
X15000D02*
|
||||
D03*
|
||||
X-5000Y-12500D02*
|
||||
D03*
|
||||
M02*
|
||||
+199
@@ -0,0 +1,199 @@
|
||||
*************************************************************
|
||||
FileName = SolenoidValveDriver_v01_PCB.GBR
|
||||
AutoAperture = True
|
||||
*************************************************************
|
||||
Generating : Keep-Out Layer
|
||||
File : SolenoidValveDriver_v01_PCB.GKO
|
||||
|
||||
Adding Layer : Keep-Out Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D44
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Overlay
|
||||
File : SolenoidValveDriver_v01_PCB.GBO
|
||||
|
||||
Adding Layer : Bottom Overlay
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D43
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Paste
|
||||
File : SolenoidValveDriver_v01_PCB.GBP
|
||||
|
||||
Adding Layer : Bottom Paste
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Solder
|
||||
File : SolenoidValveDriver_v01_PCB.GBS
|
||||
|
||||
Adding Layer : Bottom Solder
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D28
|
||||
D29
|
||||
D30
|
||||
D31
|
||||
D32
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Solder
|
||||
File : SolenoidValveDriver_v01_PCB.GTS
|
||||
|
||||
Adding Layer : Top Solder
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D22
|
||||
D23
|
||||
D24
|
||||
D25
|
||||
D26
|
||||
D27
|
||||
D28
|
||||
D29
|
||||
D30
|
||||
D31
|
||||
D32
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Paste
|
||||
File : SolenoidValveDriver_v01_PCB.GTP
|
||||
|
||||
Adding Layer : Top Paste
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D16
|
||||
D17
|
||||
D18
|
||||
D19
|
||||
D20
|
||||
D21
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Overlay
|
||||
File : SolenoidValveDriver_v01_PCB.GTO
|
||||
|
||||
Adding Layer : Top Overlay
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D10
|
||||
D11
|
||||
D12
|
||||
D13
|
||||
D14
|
||||
D15
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Layer
|
||||
File : SolenoidValveDriver_v01_PCB.GBL
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D11
|
||||
D37
|
||||
D38
|
||||
D39
|
||||
D40
|
||||
D41
|
||||
D42
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Layer
|
||||
File : SolenoidValveDriver_v01_PCB.GTL
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D11
|
||||
D16
|
||||
D17
|
||||
D18
|
||||
D19
|
||||
D20
|
||||
D21
|
||||
D33
|
||||
D34
|
||||
D35
|
||||
D36
|
||||
D37
|
||||
D38
|
||||
D39
|
||||
D40
|
||||
D41
|
||||
D42
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Drill Drawing
|
||||
File : SolenoidValveDriver_v01_PCB.GD1
|
||||
|
||||
Adding Drill Pair : Top Layer-Bottom Layer
|
||||
|
||||
Adding Layer : Drill Drawing
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D44
|
||||
D45
|
||||
D46
|
||||
D47
|
||||
D48
|
||||
D49
|
||||
D50
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Drill Guide
|
||||
File : SolenoidValveDriver_v01_PCB.GG1
|
||||
|
||||
Adding Drill Pair : Top Layer-Bottom Layer
|
||||
|
||||
Adding Layer : Drill Guide
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D46
|
||||
*************************************************************
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
DRC Rules Export File for PCB: C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Actuator_board\Hardware\SolenoidValveDriver_v01_PCB.PcbDoc
|
||||
RuleKind=ShortCircuit|RuleName=ShortCircuit|Scope=Board|Allowed=0
|
||||
RuleKind=Clearance|RuleName=Clearance|Scope=Board|Minimum=6.00
|
||||
RuleKind=Width|RuleName=Width|Scope=Board|Minimum=6.06
|
||||
RuleKind=SolderMaskExpansion|RuleName=SolderMaskExpansion|Scope=Board|Minimum=4.00
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
D10 ROUNDED 9.842 9.842 0.000 LINE 0.000
|
||||
D11 ROUNDED 23.622 23.622 0.000 LINE 0.000
|
||||
D12 ROUNDED 7.874 7.874 0.000 LINE 0.000
|
||||
D13 ROUNDED 8.000 8.000 0.000 LINE 0.000
|
||||
D14 ROUNDED 7.000 7.000 0.000 LINE 0.000
|
||||
D15 ROUNDED 5.906 5.906 0.000 LINE 0.000
|
||||
D16 RECTANGULAR 27.559 35.433 0.000 FLASH 180.000
|
||||
D17 RECTANGULAR 59.055 59.055 0.000 FLASH 0.000
|
||||
D18 RECTANGULAR 31.496 35.433 0.000 FLASH 270.000
|
||||
D19 RECTANGULAR 23.622 61.024 0.000 FLASH 90.000
|
||||
D20 RECTANGULAR 37.402 33.465 0.000 FLASH 90.000
|
||||
D21 RECTANGULAR 27.559 35.433 0.000 FLASH 90.000
|
||||
D22 RECTANGULAR 35.559 43.433 0.000 FLASH 180.000
|
||||
D23 RECTANGULAR 67.055 67.055 0.000 FLASH 0.000
|
||||
D24 RECTANGULAR 39.496 43.433 0.000 FLASH 270.000
|
||||
D25 RECTANGULAR 31.622 69.024 0.000 FLASH 90.000
|
||||
D26 RECTANGULAR 45.402 41.465 0.000 FLASH 90.000
|
||||
D27 RECTANGULAR 35.559 43.433 0.000 FLASH 90.000
|
||||
D28 ROUNDED 67.055 86.740 0.000 FLASH 270.000
|
||||
D29 RECTANGULAR 67.055 86.740 0.000 FLASH 270.000
|
||||
D30 ROUNDED 153.669 153.669 0.000 FLASH 0.000
|
||||
D31 RECTANGULAR 67.055 86.740 0.000 FLASH 0.000
|
||||
D32 ROUNDED 67.055 86.740 0.000 FLASH 0.000
|
||||
D33 ROUNDED 11.811 11.811 0.000 LINE 0.000
|
||||
D34 ROUNDED 31.496 31.496 0.000 LINE 0.000
|
||||
D35 ROUNDED 19.685 19.685 0.000 LINE 0.000
|
||||
D36 ROUNDED 15.748 15.748 0.000 LINE 0.000
|
||||
D37 ROUNDED 59.055 78.740 0.000 FLASH 270.000
|
||||
D38 RECTANGULAR 59.055 78.740 0.000 FLASH 270.000
|
||||
D39 ROUNDED 145.669 145.669 0.000 FLASH 0.000
|
||||
D40 RECTANGULAR 59.055 78.740 0.000 FLASH 0.000
|
||||
D41 ROUNDED 59.055 78.740 0.000 FLASH 0.000
|
||||
D42 ROUNDED 31.496 31.496 0.000 FLASH 0.000
|
||||
D43 RECTANGULAR 787.402 196.850 0.000 FLASH 0.000
|
||||
D44 ROUNDED 3.937 3.937 0.000 LINE 0.000
|
||||
D45 ROUNDED 10.000 10.000 0.000 LINE 0.000
|
||||
D46 ROUNDED 2.000 2.000 0.000 LINE 0.000
|
||||
D47 ROUNDED 15.000 15.000 0.000 LINE 0.000
|
||||
D48 ROUNDED 1.000 1.000 0.000 LINE 0.000
|
||||
D49 ROUNDED 16.000 16.000 0.000 LINE 0.000
|
||||
D50 ROUNDED 6.000 6.000 0.000 LINE 0.000
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
NCDrill File Report For: SolenoidValveDriver_v01_PCB.PcbDoc 2021-05-27 22:55:18
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Layer Pair : Top Layer to Bottom Layer
|
||||
ASCII RoundHoles File : SolenoidValveDriver_v01_PCB.TXT
|
||||
|
||||
Tool Hole Size Hole Tolerance Hole Type Hole Count Plated Tool Travel
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
T1 16mil (0.4mm) Round 10 PTH 0.00inch (0.00mm)
|
||||
T2 35mil (0.9mm) Round 16 PTH 0.00inch (0.00mm)
|
||||
T3 138mil (3.5mm) Round 2 NPTH 0.00inch (0.00mm)
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
Totals 28
|
||||
|
||||
Total Processing Time (hh:mm:ss) : 00:00:00
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Layer Pairs Export File for PCB: C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Actuator_board\Hardware\SolenoidValveDriver_v01_PCB.PcbDoc
|
||||
LayersSetName=Top_Bot_Thru_Holes|DrillFile=solenoidvalvedriver_v01_pcb.txt|DrillLayers=gtl,gbl
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
M48
|
||||
;Layer_Color=9474304
|
||||
;FILE_FORMAT=2:5
|
||||
INCH,LZ
|
||||
;TYPE=PLATED
|
||||
T1F00S00C0.01575
|
||||
T2F00S00C0.03543
|
||||
;TYPE=NON_PLATED
|
||||
T3F00S00C0.13780
|
||||
%
|
||||
T01
|
||||
X-0027Y-007
|
||||
X-0016Y-00575
|
||||
Y-0043
|
||||
X-0041787Y-003575
|
||||
X0009Y-0034413
|
||||
X00255Y-00395
|
||||
Y-0048
|
||||
X00155Y-00575
|
||||
X0033492Y-00355
|
||||
X00305Y-00125
|
||||
T02
|
||||
X-0015Y-01015
|
||||
X-0005
|
||||
X0005
|
||||
X0015
|
||||
X0059055Y-00705
|
||||
Y-00605
|
||||
Y-00505
|
||||
Y-00405
|
||||
Y-00305
|
||||
X0005Y-00125
|
||||
X-0005
|
||||
X-0059055Y-00305
|
||||
Y-00405
|
||||
Y-00505
|
||||
Y-00605
|
||||
Y-00705
|
||||
T03
|
||||
X-0051181Y-0011811
|
||||
X0051181Y-0098425
|
||||
M30
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
Altium Designer Pick and Place Locations
|
||||
C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Actuator_board\Hardware\Project Outputs for SolenoidValveDriver_v01\Pick Place\Pick Place for SolenoidValveDriver_v01_PCB.txt
|
||||
|
||||
========================================================================================================================
|
||||
File Design Information:
|
||||
|
||||
Date: 27-05-21
|
||||
Time: 22:55
|
||||
Revision: 68dc99a6db214db595c0a2d2ebf8c6593c3e50d0
|
||||
Variant: No variations
|
||||
Units used: mil
|
||||
|
||||
Designator Comment Layer Footprint Center-X(mil) Center-Y(mil) Rotation Description
|
||||
C1 Cap TopLayer 0603_-_CAP 230.000mil -125.000mil 180 Capacitor
|
||||
C2 Cap TopLayer 0603_-_CAP -238.976mil -640.000mil 360 Capacitor
|
||||
C3 Cap TopLayer 0603_-_CAP -238.976mil -575.000mil 360 Capacitor
|
||||
C4 Cap TopLayer 0603_-_CAP -448.976mil -410.000mil 180 "CAP CER 0.1UF 50V X7R 0603"
|
||||
C5 Cap TopLayer 0603_-_CAP 366.024mil -405.000mil 0 "CAP CER 0.1UF 50V X7R 0603"
|
||||
C6 Cap TopLayer 0603_-_CAP -448.976mil -305.000mil 180 "CAP CER 0.1UF 50V X7R 0603"
|
||||
C7 Cap TopLayer 0603_-_CAP 366.024mil -305.000mil 0 "CAP CER 0.1UF 50V X7R 0603"
|
||||
D1 LED TopLayer 0603_Diode 305.000mil -815.000mil 360 "Typical RED GaAs LED"
|
||||
D2 1N4148 TopLayer SOD123 0.000mil -265.000mil 360 "DIODE GEN PURP 100V 300MA SOD123"
|
||||
P1 "Header 5" TopLayer Header_5x1 -590.551mil -505.000mil 270 "Header, 5-Pin"
|
||||
P2 "Header 5" TopLayer Header_5x1 590.551mil -505.000mil 270 "Header, 5-Pin"
|
||||
P3 "Header 4" TopLayer Header_4x1 0.000mil -1015.000mil 360 "Header, 4-Pin"
|
||||
P4 "Solenoid Connector" TopLayer Header_2x1 0.000mil -125.000mil 180 "Header, 2-Pin"
|
||||
Q1 DMN62D0U-13 TopLayer SOT90P240X100-3N 0.000mil -385.000mil 180 "MOSFET N-CH 60V 0.38A"
|
||||
R1 Res TopLayer 0603 255.000mil -545.000mil 90 "RES SMD 0 OHM JUMPER 1/10W 0603"
|
||||
R2 Res TopLayer 0603 366.024mil -605.000mil 180 Resistor
|
||||
R3 Res TopLayer 0603 366.024mil -505.000mil 180 Resistor
|
||||
R4 Res TopLayer 0603 430.000mil -815.000mil 180 Resistor
|
||||
R5 Res TopLayer 0603 195.000mil -545.000mil 90 "RES SMD 1M OHM 5% 1/10W 0603"
|
||||
U1 ATTiny814 TopLayer SOIC127P600X175-14N 0.000mil -725.000mil 0 "IC MCU 8BIT 8KB FLASH 14SOIC"
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
Record=TopLevelDocument|FileName=SolenoidValveDriver_v01_Schematic.SchDoc
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,13 +1,17 @@
|
||||
#include "WiFi.h"
|
||||
#include "ESPAsyncWebServer.h"
|
||||
#include <esp_task_wdt.h>
|
||||
#include "CentralUnit_cfg.h"
|
||||
#include "wifi_credentials.h"
|
||||
#include "PlantSystem.h"
|
||||
#include "Wire.h"
|
||||
|
||||
#define WDT_TIMEOUT 20000
|
||||
|
||||
AsyncWebServer server(80);
|
||||
int WiFi_status = WL_IDLE_STATUS;
|
||||
uint32_t nFlowSensorCount = 0;
|
||||
volatile uint32_t nFlowSensorCount = 0;
|
||||
volatile uint32_t nFlowSensorCount_last = 0;
|
||||
|
||||
void IRAM_ATTR ISR_flowSensor() {
|
||||
nFlowSensorCount++;
|
||||
@@ -16,6 +20,8 @@ void IRAM_ATTR ISR_flowSensor() {
|
||||
|
||||
void setup()
|
||||
{
|
||||
esp_task_wdt_init(30, true);
|
||||
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
|
||||
@@ -23,7 +29,7 @@ void setup()
|
||||
digitalWrite(I2C_EN_PIN, HIGH);
|
||||
|
||||
pinMode(WATER_PUMP_EN_PIN, OUTPUT);
|
||||
digitalWrite(WATER_PUMP_EN_PIN, HIGH);
|
||||
digitalWrite(WATER_PUMP_EN_PIN, LOW);
|
||||
|
||||
pinMode(FLOW_SENSOR_PIN, INPUT_PULLUP);
|
||||
|
||||
@@ -31,6 +37,11 @@ void setup()
|
||||
|
||||
Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
|
||||
|
||||
// Configure WDT
|
||||
Serial.println("Configuring WDT...");
|
||||
esp_task_wdt_init(WDT_TIMEOUT, true); //enable panic so ESP32 restarts
|
||||
esp_task_wdt_add(NULL); //add current thread to WDT watch
|
||||
|
||||
// Connect to WiFi
|
||||
while ( WiFi_status != WL_CONNECTED) {
|
||||
Serial.print("Connecting to SSID: ");
|
||||
@@ -38,6 +49,7 @@ void setup()
|
||||
WiFi_status = WiFi.begin(ssid, password);
|
||||
|
||||
// wait 5 seconds for connection:
|
||||
esp_task_wdt_reset();
|
||||
delay(5000);
|
||||
}
|
||||
|
||||
@@ -49,7 +61,7 @@ void setup()
|
||||
setupWebServer();
|
||||
server.begin();
|
||||
|
||||
attachInterrupt(WATER_PUMP_EN_PIN, ISR_flowSensor, FALLING);
|
||||
attachInterrupt(FLOW_SENSOR_PIN, ISR_flowSensor, FALLING);
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +96,8 @@ void setupWebServer(void)
|
||||
server.on("/sensorData", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
Serial.println("Sensor data");
|
||||
|
||||
char buff[300] = {0};
|
||||
if(PlantSystem_WAPI_SensorData(buff, 300) == true)
|
||||
char buff[500] = {0};
|
||||
if(PlantSystem_WAPI_SensorData(buff, 500) == true)
|
||||
{
|
||||
request->send(200, "text/plain", buff);
|
||||
return;
|
||||
@@ -102,8 +114,8 @@ void setupWebServer(void)
|
||||
server.on("/solenoidData", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
Serial.println("Solenoid data");
|
||||
|
||||
char buff[300] = {0};
|
||||
if(PlantSystem_WAPI_SolenoidList(buff, 300) == true)
|
||||
char buff[500] = {0};
|
||||
if(PlantSystem_WAPI_SolenoidList(buff, 500) == true)
|
||||
{
|
||||
request->send(200, "text/plain", buff);
|
||||
return;
|
||||
@@ -121,8 +133,8 @@ void setupWebServer(void)
|
||||
server.on("/deviceData", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
Serial.println("Device data");
|
||||
|
||||
char buff[300] = {0};
|
||||
if(PlantSystem_WAPI_GetDevices(buff, 300) == true)
|
||||
char buff[500] = {0};
|
||||
if(PlantSystem_WAPI_GetDevices(buff, 500) == true)
|
||||
{
|
||||
request->send(200, "text/plain", buff);
|
||||
return;
|
||||
@@ -141,7 +153,7 @@ void setupWebServer(void)
|
||||
|
||||
char buff[100] = {0};
|
||||
int len;
|
||||
len = snprintf(buff, 100, "{flowSensor:%d}", nFlowSensorCount);
|
||||
len = snprintf(buff, 100, "{flowSensor:%d}", nFlowSensorCount_last);
|
||||
|
||||
if(len>0)
|
||||
{
|
||||
@@ -193,5 +205,57 @@ void setupWebServer(void)
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
// Water plant connected to solenoid with X ml of water
|
||||
server.on("/waterPlant", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
Serial.println("Water plant request");
|
||||
|
||||
if ( request->hasParam("address") && request->hasParam("volume") )
|
||||
{
|
||||
String xAddress;
|
||||
String xVolume;
|
||||
|
||||
uint32_t nAddress = 0;
|
||||
uint32_t nVolume = 0;
|
||||
|
||||
xAddress = request->getParam("address")->value();
|
||||
nAddress = xAddress.toInt();
|
||||
|
||||
xVolume = request->getParam("volume")->value();
|
||||
nVolume = xVolume.toInt();
|
||||
|
||||
if(PlantSystem_WaterPlant(nAddress, nVolume) == true)
|
||||
{
|
||||
char buff[200] = {0};
|
||||
int len;
|
||||
|
||||
len = snprintf(buff, 200, "{ \"result\": OK, \"Address\":%d, \"Volume\":%d }",
|
||||
nAddress, nVolume);
|
||||
request->send(200, "text/plain", buff);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("PlantSystem_WaterPlant() error");
|
||||
request->send(200, "text/plain", "PlantSystem_WaterPlant() FAIL");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
request->send(200, "text/plain", "MISSING ARGUMENTS");
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Prime the system with water
|
||||
server.on("/PrimeSystemWithWater", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
Serial.println("PlantSystem_RequestPrimeSystem()");
|
||||
|
||||
PlantSystem_RequestPrimeSystem();
|
||||
request->send(200, "text/plain", "OK");
|
||||
return;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -35,18 +35,43 @@ uint8_t gnSensorsOnBusCnt = 0;
|
||||
I2C_Solenoid_TypeDef gSolenoidsOnBus[20] = { {.i2cAddress=0, .lastState=0} };
|
||||
uint8_t gnSolenoidsOnBusCnt = 0;
|
||||
|
||||
// Periods
|
||||
#define PERIOD_RESCAN_BUS 24*3600*1000 // Every 24h
|
||||
#define PERIOD_RELOAD_SENSORS 15*1000 // Every 5sec
|
||||
// I2C bus config
|
||||
#define I2C_ADDRESS_LIMIT_LOWER 0x08
|
||||
#define I2C_ADDRESS_LIMIT_UPPER 0x7F
|
||||
|
||||
// Plant watering definitions
|
||||
#define WATERING_VOLUME_MINIMUM 10
|
||||
#define WATERING_VOLUME_MAXIMUM 550
|
||||
#define WATERING_FLOW_EDGES_PER_ML 4
|
||||
|
||||
// PlantSystem_tick periods
|
||||
#define PERIOD_RESCAN_BUS 24*3600*1000 // Every 24h
|
||||
#define PERIOD_RELOAD_SENSORS 15*1000 // Every 5sec
|
||||
#define PERIOD_FLOW_RATE 2*1000 // Every 2sec
|
||||
|
||||
// PlantSystem_tick global variables
|
||||
uint32_t nPeriod_Rescanbus=0;
|
||||
uint32_t nPeriod_ReloadSensors=0;
|
||||
uint32_t nPeriod_FlowRate=0;
|
||||
|
||||
// Watering global variables
|
||||
bool bPrimeSystem_requestPending=false;
|
||||
bool bWatering_requestPending=false;
|
||||
bool bWatering_inProgress=false;
|
||||
bool bCloseValvesOnPowerUp=false;
|
||||
uint32_t nWatering_volume=0;
|
||||
uint8_t nWatering_i2cAddress=0;
|
||||
uint32_t nTimeout = 0;
|
||||
|
||||
|
||||
void PlantSystem_tick(void)
|
||||
{
|
||||
esp_task_wdt_reset();
|
||||
|
||||
// -- Rescan I2C bus
|
||||
if(nPeriod_Rescanbus <= millis())
|
||||
{
|
||||
esp_task_wdt_reset();
|
||||
PlantSystem_ScanBus();
|
||||
#if 1
|
||||
PlantSystem_debugShowDevicesOnBus();
|
||||
@@ -60,14 +85,106 @@ void PlantSystem_tick(void)
|
||||
PlantSystem_UpdateSensors();
|
||||
nPeriod_ReloadSensors = millis() + PERIOD_RELOAD_SENSORS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -- Close all solenoids on boot
|
||||
if(bCloseValvesOnPowerUp == false)
|
||||
{
|
||||
// Turn OFF all solenoids
|
||||
delay(500);
|
||||
esp_task_wdt_reset();
|
||||
Serial.println("De-energizing ALL solenoids");
|
||||
for(uint8_t i=0; i<gnSolenoidsOnBusCnt; i++)
|
||||
{
|
||||
if (PlantSystem_SetSolenoidState(gSolenoidsOnBus[i].i2cAddress, false) == true)
|
||||
{
|
||||
Serial.print("Closed solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.print("Failed to close solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
delay(500);
|
||||
}
|
||||
bCloseValvesOnPowerUp = true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// -- Flow sensor debug
|
||||
if(nPeriod_FlowRate <= millis())
|
||||
{
|
||||
Serial.print("nFlowSensorCount: ");
|
||||
Serial.println(nFlowSensorCount, DEC);
|
||||
nPeriod_FlowRate = millis() + PERIOD_FLOW_RATE;
|
||||
}
|
||||
#endif
|
||||
|
||||
// -- Process watering request
|
||||
if(bWatering_requestPending || bWatering_inProgress)
|
||||
{
|
||||
Serial.println("bWatering_requestPending | bWatering_inProgress");
|
||||
// Transition to in progress
|
||||
bWatering_inProgress = true;
|
||||
bWatering_requestPending = false;
|
||||
|
||||
// Note: Solenoid address and volume must have been validated
|
||||
Serial.println("Turning pump ON");
|
||||
digitalWrite(WATER_PUMP_EN_PIN, HIGH);
|
||||
delay(200);
|
||||
Serial.println("Energizing solenoid");
|
||||
if (PlantSystem_SetSolenoidState(nWatering_i2cAddress, true) != true)
|
||||
{
|
||||
bWatering_requestPending = false;
|
||||
bWatering_inProgress = false;
|
||||
digitalWrite(WATER_PUMP_EN_PIN, LOW);
|
||||
Serial.println("Turning pump OFF");
|
||||
Serial.println("Failed to open solenoid. Aborting...");
|
||||
return;
|
||||
}
|
||||
|
||||
esp_task_wdt_reset();
|
||||
nTimeout = millis() + 10000;
|
||||
while(nFlowSensorCount < (WATERING_FLOW_EDGES_PER_ML*nWatering_volume))
|
||||
{
|
||||
if(millis() > nTimeout)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
esp_task_wdt_reset();
|
||||
|
||||
Serial.println("De-Energizing solenoid");
|
||||
PlantSystem_SetSolenoidState(nWatering_i2cAddress, false);
|
||||
delay(200);
|
||||
digitalWrite(WATER_PUMP_EN_PIN, LOW);
|
||||
Serial.println("Turning pump OFF");
|
||||
|
||||
// Store last flow data and prepare for new request
|
||||
nFlowSensorCount_last = nFlowSensorCount;
|
||||
nFlowSensorCount = 0;
|
||||
|
||||
// Reset request
|
||||
bWatering_inProgress = false;
|
||||
bWatering_requestPending = false;
|
||||
}
|
||||
|
||||
|
||||
// -- Process prime system with water request
|
||||
if(bPrimeSystem_requestPending)
|
||||
{
|
||||
esp_task_wdt_reset();
|
||||
PlantSystem_PrimeSystemWithWater();
|
||||
bPrimeSystem_requestPending = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PlantSystem_ScanBus(void)
|
||||
{
|
||||
Serial.println ("Scanning I2C bus...");
|
||||
for (uint8_t i = 8; i< 127; i++)
|
||||
for (uint8_t i=I2C_ADDRESS_LIMIT_LOWER; i<I2C_ADDRESS_LIMIT_UPPER; i++)
|
||||
{
|
||||
Wire.beginTransmission (i); // Begin I2C transmission Address (i)
|
||||
if (Wire.endTransmission () == 0) // Receive 0 = success (ACK response)
|
||||
@@ -76,6 +193,7 @@ void PlantSystem_ScanBus(void)
|
||||
// gDevicesOnBusCount++;
|
||||
}
|
||||
}
|
||||
esp_task_wdt_reset();
|
||||
Serial.print ("Found ");
|
||||
Serial.print (gDevicesOnBusCount, DEC); // numbers of devices
|
||||
Serial.println (" device(s).");
|
||||
@@ -83,6 +201,8 @@ void PlantSystem_ScanBus(void)
|
||||
for(uint8_t i=0; i<gDevicesOnBusCount; i++)
|
||||
{
|
||||
PlantSystem_getDeviceInfo(i);
|
||||
delay(300);
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,11 +317,11 @@ void PlantSystem_getDeviceInfo(uint8_t devID)
|
||||
// --
|
||||
bool PlantSystem_SetSolenoidState(uint32_t I2CAddress, bool energized)
|
||||
{
|
||||
if(I2CAddress < 0x08 || I2CAddress > 0x7F )
|
||||
if(I2CAddress<I2C_ADDRESS_LIMIT_LOWER || I2CAddress>I2C_ADDRESS_LIMIT_UPPER )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
uint8_t txBuffer[5];
|
||||
uint8_t requestedState = (energized ? 1 : 0);
|
||||
|
||||
@@ -214,7 +334,7 @@ bool PlantSystem_SetSolenoidState(uint32_t I2CAddress, bool energized)
|
||||
I2C_SendBuffer(I2CAddress, txBuffer, 5);
|
||||
|
||||
// Wait 100 ms
|
||||
delay(100);
|
||||
delay(200);
|
||||
|
||||
// Send read back value request
|
||||
txBuffer[0] = CMD_GET_SOLENOID_STATE;
|
||||
@@ -224,18 +344,26 @@ bool PlantSystem_SetSolenoidState(uint32_t I2CAddress, bool energized)
|
||||
I2C_SendBuffer(I2CAddress, txBuffer, 4);
|
||||
|
||||
// Wait 100 ms
|
||||
delay(100);
|
||||
delay(200);
|
||||
|
||||
// Read new solenoid state
|
||||
uint8_t newState = 0;
|
||||
I2C_ReadFrom(I2CAddress, 10, &newState, PLANTSYSTEM_MIN_HEADER_LENGHT+1, 1);
|
||||
uint8_t retData = 0;
|
||||
I2C_ReadFrom(I2CAddress, 10, &retData, PLANTSYSTEM_MIN_HEADER_LENGHT+1, 1);
|
||||
|
||||
if(requestedState == newState)
|
||||
if(requestedState == retData)
|
||||
{
|
||||
Serial.print("New state == Requested state 0x");
|
||||
Serial.print(retData, DEC);
|
||||
Serial.print("==0x");
|
||||
Serial.println(requestedState, DEC);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.print("New state != Requested state 0x");
|
||||
Serial.print(retData, DEC);
|
||||
Serial.print("!=0x");
|
||||
Serial.println(requestedState, DEC);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -366,10 +494,26 @@ bool I2C_ReadFrom(uint8_t address, uint8_t nLen, uint8_t *pData, uint8_t nPos, u
|
||||
return false;
|
||||
}
|
||||
|
||||
// Prepare variables
|
||||
uint8_t rxBuffer[20] = {0};
|
||||
uint32_t timeout = millis() + 2000;
|
||||
bool bReady = false;
|
||||
|
||||
Wire.requestFrom(address, nLen, true);
|
||||
while(Wire.available() == 0);
|
||||
while(millis() <= timeout)
|
||||
{
|
||||
if(Wire.available())
|
||||
{
|
||||
bReady = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(bReady == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for(uint8_t i=0; i<nLen; i++)
|
||||
{
|
||||
rxBuffer[i] = Wire.read();
|
||||
@@ -400,3 +544,122 @@ bool I2C_ReadFrom(uint8_t address, uint8_t nLen, uint8_t *pData, uint8_t nPos, u
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -- Request opening of solenoid at address `solenoidAddress`
|
||||
// and pumping out (approximately) `n_volume_in_mL` mL of fluid
|
||||
bool PlantSystem_WaterPlant(uint8_t solenoidAddress, uint32_t n_volume_in_mL)
|
||||
{
|
||||
// Valid I2C address requested
|
||||
if(solenoidAddress<I2C_ADDRESS_LIMIT_LOWER || solenoidAddress>I2C_ADDRESS_LIMIT_UPPER)
|
||||
{
|
||||
Serial.println("Invalid I2C address!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Valid volume requested
|
||||
if(n_volume_in_mL < WATERING_VOLUME_MINIMUM || n_volume_in_mL > WATERING_VOLUME_MAXIMUM)
|
||||
{
|
||||
Serial.println("Invalid volume requested!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if solenoid with this address is registered on the bus
|
||||
bool bFound = false;
|
||||
for(uint8_t i=0; i<gnSolenoidsOnBusCnt; i++)
|
||||
{
|
||||
if(gSolenoidsOnBus[i].i2cAddress == solenoidAddress)
|
||||
{
|
||||
bFound=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Solenoid not found or invalid request
|
||||
if(bFound == false)
|
||||
{
|
||||
Serial.println("Solenoid not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Valid request, add to next tick
|
||||
|
||||
bWatering_requestPending=true;
|
||||
nWatering_volume=n_volume_in_mL;
|
||||
nWatering_i2cAddress=solenoidAddress;
|
||||
|
||||
|
||||
#if 0
|
||||
Serial.println ("Response");
|
||||
for(uint8_t i=0; i<nLen; i++)
|
||||
{
|
||||
Serial.print ("[");
|
||||
Serial.print (i, DEC);
|
||||
Serial.print ("] = 0x");
|
||||
Serial.println (rxBuffer[i], HEX);
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PlantSystem_RequestPrimeSystem(void)
|
||||
{
|
||||
bPrimeSystem_requestPending = true;
|
||||
}
|
||||
|
||||
|
||||
bool PlantSystem_PrimeSystemWithWater(void)
|
||||
{
|
||||
// Turn ON Pump
|
||||
Serial.println("Turning pump ON");
|
||||
digitalWrite(WATER_PUMP_EN_PIN, HIGH);
|
||||
delay(1000);
|
||||
|
||||
// Turn ON all solenoids
|
||||
Serial.println("Energizing ALL solenoids");
|
||||
for(uint8_t i=0; i<gnSolenoidsOnBusCnt; i++)
|
||||
{
|
||||
if (PlantSystem_SetSolenoidState(gSolenoidsOnBus[i].i2cAddress, true) == true)
|
||||
{
|
||||
Serial.print("Openned solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.print("Failed to open solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
delay(500);
|
||||
}
|
||||
|
||||
// Let the water flow for a while
|
||||
delay(5000);
|
||||
|
||||
// Turn OFF all solenoids
|
||||
Serial.println("De-energizing ALL solenoids");
|
||||
for(uint8_t i=0; i<gnSolenoidsOnBusCnt; i++)
|
||||
{
|
||||
if (PlantSystem_SetSolenoidState(gSolenoidsOnBus[i].i2cAddress, false) == true)
|
||||
{
|
||||
Serial.print("Closed solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.print("Failed to close solenoid 0x");
|
||||
Serial.println(gSolenoidsOnBus[i].i2cAddress, HEX);
|
||||
}
|
||||
delay(500);
|
||||
}
|
||||
|
||||
|
||||
// Turn OFF pump
|
||||
delay(1000);
|
||||
Serial.println("Turning pump OFF");
|
||||
digitalWrite(WATER_PUMP_EN_PIN, LOW);
|
||||
|
||||
nFlowSensorCount = 0;
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ bool PlantSystem_WAPI_GetDevices(char *pBuff, uint32_t nMaxLen)
|
||||
}
|
||||
|
||||
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "{\"address\":\"0x%02X\",\"type\":\"%s\"},",
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "{\"address\":\"%d\",\"type\":\"%s\"},",
|
||||
gDevicesOnBus[i].i2cAddress,
|
||||
pStrDevTyep);
|
||||
if(len>0)
|
||||
@@ -112,7 +112,7 @@ bool PlantSystem_WAPI_SensorData(char *pBuff, uint32_t nMaxLen)
|
||||
|
||||
|
||||
// Start JSON string
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "{\"count\":%d,\"sensors\":[",
|
||||
len = snprintf(&pBuff[currentPos], nMaxLen, "{\"count\":%d,\"sensors\":[",
|
||||
gnSensorsOnBusCnt);
|
||||
if(len<0)
|
||||
{
|
||||
@@ -121,24 +121,32 @@ bool PlantSystem_WAPI_SensorData(char *pBuff, uint32_t nMaxLen)
|
||||
}
|
||||
else
|
||||
{
|
||||
currentPos += len;
|
||||
currentPos += len;
|
||||
nMaxLen -= len;
|
||||
}
|
||||
|
||||
// Construct response based on devices currently registered on the bus
|
||||
for(uint8_t i=0; i<gnSensorsOnBusCnt; i++)
|
||||
{
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "{\"address\":\"0x%02X\",\"T\":%.2f,\"M\":%d,\"A\":%d},",
|
||||
len = snprintf(&pBuff[currentPos], nMaxLen, "{\"address\":\"%d\",\"T\":%.2f,\"M\":%d,\"A\":%d},",
|
||||
gSensorsOnBus[i].i2cAddress,
|
||||
gSensorsOnBus[i].temperature,
|
||||
gSensorsOnBus[i].soilMoisture,
|
||||
gSensorsOnBus[i].ambienLight);
|
||||
if(len>0)
|
||||
{
|
||||
currentPos += len;
|
||||
currentPos += len;
|
||||
nMaxLen -= len;
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Len issue");
|
||||
Serial.print("snprintf ret: ");
|
||||
Serial.println(len, DEC);
|
||||
|
||||
Serial.print("nMaxLen: ");
|
||||
Serial.println(len, DEC);
|
||||
|
||||
Serial.print("currentPos :");
|
||||
Serial.println(len, DEC);
|
||||
return false;
|
||||
}
|
||||
@@ -146,14 +154,22 @@ bool PlantSystem_WAPI_SensorData(char *pBuff, uint32_t nMaxLen)
|
||||
|
||||
|
||||
// Close JSON string
|
||||
len = snprintf(&pBuff[currentPos-1], (nMaxLen-currentPos), "]}");
|
||||
len = snprintf(&pBuff[currentPos-1], nMaxLen, "]}");
|
||||
if(len<0)
|
||||
{
|
||||
Serial.println("Buffer too short");
|
||||
Serial.print("snprintf ret: ");
|
||||
Serial.println(len, DEC);
|
||||
|
||||
Serial.print("nMaxLen: ");
|
||||
Serial.println(len, DEC);
|
||||
|
||||
Serial.print("currentPos :");
|
||||
Serial.println(len, DEC);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(len>0 && currentPos <nMaxLen)
|
||||
if(len>0)
|
||||
{
|
||||
#if 0
|
||||
Serial.println("Printing pBuff");
|
||||
@@ -202,7 +218,7 @@ bool PlantSystem_WAPI_SolenoidList(char *pBuff, uint32_t nMaxLen)
|
||||
// Construct response based on devices currently registered on the bus
|
||||
for(uint8_t i=0; i<gnSolenoidsOnBusCnt; i++)
|
||||
{
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "\"0x%02X\",",
|
||||
len = snprintf(&pBuff[currentPos], (nMaxLen-currentPos), "\"%d\",",
|
||||
gSolenoidsOnBus[i].i2cAddress);
|
||||
|
||||
if(len>0)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
Record=TopLevelDocument|FileName=CentralUnit_Schematic.SchDoc
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,300 @@
|
||||
[OutputJobFile]
|
||||
Version=1.0
|
||||
Caption=
|
||||
Description=
|
||||
VaultGUID=
|
||||
ItemGUID=
|
||||
ItemHRID=
|
||||
RevisionGUID=
|
||||
RevisionId=
|
||||
VaultHRID=
|
||||
AutoItemHRID=
|
||||
NextRevId=
|
||||
FolderGUID=
|
||||
LifeCycleDefinitionGUID=
|
||||
RevisionNamingSchemeGUID=
|
||||
|
||||
[OutputGroup1]
|
||||
Name=MFGOutput.OutJob
|
||||
Description=
|
||||
TargetOutputMedium=Folder Structure
|
||||
VariantName=[No Variations]
|
||||
VariantScope=1
|
||||
CurrentConfigurationName=
|
||||
TargetPrinter=Brother MFC-L2720DW
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=0
|
||||
OutputMedium1=Print Job
|
||||
OutputMedium1_Type=Printer
|
||||
OutputMedium1_Printer=
|
||||
OutputMedium1_PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputMedium2=PDF
|
||||
OutputMedium2_Type=Publish
|
||||
OutputMedium3=Folder Structure
|
||||
OutputMedium3_Type=GeneratedFiles
|
||||
OutputMedium4=Video
|
||||
OutputMedium4_Type=Multimedia
|
||||
OutputType1=Schematic Print
|
||||
OutputName1=Schematic Prints
|
||||
OutputCategory1=Documentation
|
||||
OutputDocumentPath1=[Project Physical Documents]
|
||||
OutputVariantName1=
|
||||
OutputEnabled1=0
|
||||
OutputEnabled1_OutputMedium1=0
|
||||
OutputEnabled1_OutputMedium2=1
|
||||
OutputEnabled1_OutputMedium3=0
|
||||
OutputEnabled1_OutputMedium4=0
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
Configuration1_Name1=OutputConfigurationParameter1
|
||||
Configuration1_Item1=Record=SchPrintView|ShowNoERC=True|ShowParamSet=True|ShowProbe=True|ShowBlanket=True|NoERCSymbolsToShow="Thin Cross","Thick Cross","Small Cross",Checkbox,Triangle|ShowNote=True|ShowNoteCollapsed=True|ShowOpenEnds=True|ExpandDesignator=True|ExpandNetLabel=False|ExpandPort=False|ExpandSheetNum=False|ExpandDocNum=False|PrintArea=0|PrintAreaRect.X1=0|PrintAreaRect.Y1=0|PrintAreaRect.X2=0|PrintAreaRect.Y2=0|DocumentPath=[Project Physical Documents]
|
||||
OutputType2=Pick Place
|
||||
OutputName2=Generates pick and place files
|
||||
OutputCategory2=Assembly
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputEnabled2=1
|
||||
OutputEnabled2_OutputMedium1=0
|
||||
OutputEnabled2_OutputMedium2=0
|
||||
OutputEnabled2_OutputMedium3=1
|
||||
OutputEnabled2_OutputMedium4=0
|
||||
OutputDefault2=0
|
||||
Configuration2_Name1=OutputConfigurationParameter1
|
||||
Configuration2_Item1=Record=PickPlaceView|Units=Imperial|GenerateCSVFormat=False|GenerateTextFormat=True|ShowUnits=True|Separator=.|ExcludeFilterParam=False|IncludeVariations=False|Filter= |FilterActive=False|Column#1=Name:Designator,Fixed:True,Metric:False,Visible:True,Sort:None,Position:0|Column#2=Name:Comment,Fixed:True,Metric:False,Visible:True,Sort:None,Position:1|Column#3=Name:Layer,Fixed:True,Metric:False,Visible:True,Sort:None,Position:2|Column#4=Name:Footprint,Fixed:True,Metric:False,Visible:True,Sort:None,Position:3|Column#5=Name:Footprint Description,Fixed:True,Metric:False,Visible:False,Sort:None,Position:4|Column#6=Name:Center-X,Fixed:True,Metric:True,Visible:True,Sort:None,Position:5|Column#7=Name:Center-Y,Fixed:True,Metric:True,Visible:True,Sort:None,Position:6|Column#8=Name:Rotation,Fixed:True,Metric:False,Visible:True,Sort:None,Position:7|Column#9=Name:Description,Fixed:True,Metric:False,Visible:True,Sort:None,Position:8|Column#10=Name:ComponentKind,Fixed:True,Metric:False,Visible:False,Sort:None,Position:9|Column#11=Name:Height,Fixed:True,Metric:True,Visible:False,Sort:None,Position:10|Column#12=Name:Ref-X,Fixed:True,Metric:True,Visible:False,Sort:None,Position:11|Column#13=Name:Ref-Y,Fixed:True,Metric:True,Visible:False,Sort:None,Position:12|Column#14=Name:Pad-X,Fixed:True,Metric:True,Visible:False,Sort:None,Position:13|Column#15=Name:Pad-Y,Fixed:True,Metric:True,Visible:False,Sort:None,Position:14|Column#16=Name:Variation,Fixed:True,Metric:False,Visible:False,Sort:None,Position:15|Column#17=Name:Published,Fixed:False,Metric:False,Visible:False,Sort:None,Position:24|Column#18=Name:LatestRevisionDate,Fixed:False,Metric:False,Visible:False,Sort:None,Position:18|Column#19=Name:PackageReference,Fixed:False,Metric:False,Visible:False,Sort:None,Position:23|Column#20=Name:Value,Fixed:False,Metric:False,Visible:False,Sort:None,Position:26|Column#21=Name:Publisher,Fixed:False,Metric:False,Visible:False,Sort:None,Position:25|Column#22=Name:Distributor Part Number,Fixed:False,Metric:False,Visible:False,Sort:None,Position:17|Column#23=Name:PackageDescription,Fixed:False,Metric:False,Visible:False,Sort:None,Position:22|Column#24=Name:LatestRevisionNote,Fixed:False,Metric:False,Visible:False,Sort:None,Position:19|Column#25=Name:Distributor,Fixed:False,Metric:False,Visible:False,Sort:None,Position:16|Column#26=Name:Manufacturer,Fixed:False,Metric:False,Visible:False,Sort:None,Position:20|Column#27=Name:Manufacturer Part Number,Fixed:False,Metric:False,Visible:False,Sort:None,Position:21|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType3=Assembly
|
||||
OutputName3=Assembly Drawings
|
||||
OutputCategory3=Assembly
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputEnabled3=0
|
||||
OutputEnabled3_OutputMedium1=0
|
||||
OutputEnabled3_OutputMedium2=0
|
||||
OutputEnabled3_OutputMedium3=0
|
||||
OutputEnabled3_OutputMedium4=0
|
||||
OutputDefault3=0
|
||||
PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9
|
||||
Configuration3_Name1=OutputConfigurationParameter1
|
||||
Configuration3_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView
|
||||
Configuration3_Name2=OutputConfigurationParameter2
|
||||
Configuration3_Item2=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Top LayerAssembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration3_Name3=OutputConfigurationParameter3
|
||||
Configuration3_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Hidden|FFill=Hidden|FPad=Hidden|FRegion=Hidden|FText=Hidden|FTrack=Hidden|FVia=Hidden|Layer=TopLayer|Polygon=Hidden|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name4=OutputConfigurationParameter4
|
||||
Configuration3_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name5=OutputConfigurationParameter5
|
||||
Configuration3_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Hidden|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name6=OutputConfigurationParameter6
|
||||
Configuration3_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name7=OutputConfigurationParameter7
|
||||
Configuration3_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name8=OutputConfigurationParameter8
|
||||
Configuration3_Item8=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name9=OutputConfigurationParameter9
|
||||
Configuration3_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name10=OutputConfigurationParameter10
|
||||
Configuration3_Item10=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration3_Name11=OutputConfigurationParameter11
|
||||
Configuration3_Item11=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=1|Mirror=False|Name=Bottom LayerAssembly Drawing|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration3_Name12=OutputConfigurationParameter12
|
||||
Configuration3_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Hidden|FFill=Hidden|FPad=Hidden|FRegion=Hidden|FText=Hidden|FTrack=Hidden|FVia=Hidden|Layer=BottomLayer|Polygon=Hidden|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name13=OutputConfigurationParameter13
|
||||
Configuration3_Item13=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name14=OutputConfigurationParameter14
|
||||
Configuration3_Item14=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomOverlay|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name15=OutputConfigurationParameter15
|
||||
Configuration3_Item15=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name16=OutputConfigurationParameter16
|
||||
Configuration3_Item16=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Hidden|Layer=MultiLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name17=OutputConfigurationParameter17
|
||||
Configuration3_Item17=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name18=OutputConfigurationParameter18
|
||||
Configuration3_Item18=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration3_Name19=OutputConfigurationParameter19
|
||||
Configuration3_Item19=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
PcbPrintPreferences3=
|
||||
OutputType4=Gerber
|
||||
OutputName4=Gerber Files
|
||||
OutputCategory4=Fabrication
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputEnabled4=1
|
||||
OutputEnabled4_OutputMedium1=0
|
||||
OutputEnabled4_OutputMedium2=0
|
||||
OutputEnabled4_OutputMedium3=2
|
||||
OutputEnabled4_OutputMedium4=0
|
||||
OutputDefault4=0
|
||||
Configuration4_Name1=OutputConfigurationParameter1
|
||||
Configuration4_Item1=AddToAllLayerClasses.Set= |AddToAllPlots.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|CentrePlots=False|DrillDrawingSymbol=GraphicsSymbol|DrillDrawingSymbolSize=200000|EmbeddedApertures=True|FilmBorderSize=10000000|FilmXSize=200000000|FilmYSize=160000000|FlashAllFills=False|FlashPadShapes=True|G54OnApertureChange=False|GenerateDRCRulesFile=True|GenerateDRCRulesFile=True|GenerateReliefShapes=True|GerberUnit=Imperial|GerberUnit=Imperial|IncludeUnconnectedMidLayerPads=False|LayerClassesMirror.Set= |LayerClassesPlot.Set= |LeadingAndTrailingZeroesMode=SuppressLeadingZeroes|MaxApertureSize=2500000|MinusApertureTolerance=50|MinusApertureTolerance=50|Mirror.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|MirrorDrillDrawingPlots=False|MirrorDrillGuidePlots=False|NoRegularPolygons=False|NumberOfDecimals=5|NumberOfDecimals=5|OptimizeChangeLocationCommands=True|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Panelize=False|Plot.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean,16973830~1,16973832~1,16973834~1,16777217~1,16777218~1,16777219~1,16842751~1,16973835~1,16973833~1,16973831~1,16973837~1|PlotPositivePlaneLayers=False|PlotUsedDrillDrawingLayerPairs=True|PlotUsedDrillGuideLayerPairs=True|PlusApertureTolerance=50|PlusApertureTolerance=50|Record=GerberView|SoftwareArcs=False|Sorted=False|Sorted=False|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType5=NC Drill
|
||||
OutputName5=NC Drill Files
|
||||
OutputCategory5=Fabrication
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=
|
||||
OutputEnabled5=1
|
||||
OutputEnabled5_OutputMedium1=0
|
||||
OutputEnabled5_OutputMedium2=0
|
||||
OutputEnabled5_OutputMedium3=3
|
||||
OutputEnabled5_OutputMedium4=0
|
||||
OutputDefault5=0
|
||||
Configuration5_Name1=OutputConfigurationParameter1
|
||||
Configuration5_Item1=BoardEdgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateEIADrillFile=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=5|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Record=DrillView|Units=Imperial|ZeroesMode=SuppressTrailingZeroes|DocumentPath=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part1_Sensor_board\Hardware\PlantSensor_V02_PCB.PcbDoc
|
||||
OutputType6=Drill
|
||||
OutputName6=Drill Drawing/Guides
|
||||
OutputCategory6=Fabrication
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputEnabled6=0
|
||||
OutputEnabled6_OutputMedium1=0
|
||||
OutputEnabled6_OutputMedium2=0
|
||||
OutputEnabled6_OutputMedium3=0
|
||||
OutputEnabled6_OutputMedium4=0
|
||||
OutputDefault6=0
|
||||
PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=A4|PaperIndex=9
|
||||
Configuration6_Name1=OutputConfigurationParameter1
|
||||
Configuration6_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView
|
||||
Configuration6_Name2=OutputConfigurationParameter2
|
||||
Configuration6_Item2=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Drill Drawing For (Bottom Layer,Top Layer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration6_Name3=OutputConfigurationParameter3
|
||||
Configuration6_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=BottomLayer|DLayer2=TopLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name4=OutputConfigurationParameter4
|
||||
Configuration6_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name5=OutputConfigurationParameter5
|
||||
Configuration6_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name6=OutputConfigurationParameter6
|
||||
Configuration6_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name7=OutputConfigurationParameter7
|
||||
Configuration6_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
|
||||
Configuration6_Name8=OutputConfigurationParameter8
|
||||
Configuration6_Item8=IncludeBoardCutouts=False|IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=1|Mirror=False|Name=Drill Guide For (Bottom Layer,Top Layer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
|
||||
Configuration6_Name9=OutputConfigurationParameter9
|
||||
Configuration6_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=BottomLayer|DLayer2=TopLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillGuide|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name10=OutputConfigurationParameter10
|
||||
Configuration6_Item10=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name11=OutputConfigurationParameter11
|
||||
Configuration6_Item11=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name12=OutputConfigurationParameter12
|
||||
Configuration6_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
Configuration6_Name13=OutputConfigurationParameter13
|
||||
Configuration6_Item13=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|DrillType=Regular|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
|
||||
PcbPrintPreferences6=
|
||||
OutputType7=BOM_PartType
|
||||
OutputName7=Bill of Materials
|
||||
OutputCategory7=Report
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputEnabled7=1
|
||||
OutputEnabled7_OutputMedium1=0
|
||||
OutputEnabled7_OutputMedium2=0
|
||||
OutputEnabled7_OutputMedium3=4
|
||||
OutputEnabled7_OutputMedium4=0
|
||||
OutputDefault7=0
|
||||
PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
Configuration7_Name1=ColumnNameFormat
|
||||
Configuration7_Item1=CaptionAsName
|
||||
Configuration7_Name2=Filter
|
||||
Configuration7_Item2=545046300E5446696C74657257726170706572000D46696C7465722E416374697665090F46696C7465722E43726974657269610A04000000000000000000
|
||||
Configuration7_Name3=General
|
||||
Configuration7_Item3=OpenExported=False|AddToProject=False|ForceFit=False|NotFitted=False|Database=False|DatabasePriority=False|IncludePCBData=False|IncludeVaultData=False|IncludeAlternatives=False|ShowExportOptions=True|TemplateFilename=|BatchMode=5|FormWidth=1732|FormHeight=1296|SupplierProdQty=1|SupplierAutoQty=False|SupplierUseCachedPricing=False|SupplierCurrency=<none>
|
||||
Configuration7_Name4=GroupOrder
|
||||
Configuration7_Item4=Manufacturer Part Number=True
|
||||
Configuration7_Name5=OutputConfigurationParameter1
|
||||
Configuration7_Item5=dgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateEIADrillFile=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=5|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Record=DrillView|Units=Imperial|ZeroesMode=SuppressTrailingZeroes|DocumentPath=[Project]
|
||||
Configuration7_Name6=SortOrder
|
||||
Configuration7_Item6=Designator=Up|Comment=Up|Footprint=Up
|
||||
Configuration7_Name7=VisibleOrder
|
||||
Configuration7_Item7=Designator=175|Description=175|Distributor=175|Distributor Part Number=175|Manufacturer=175|Manufacturer Part Number=175|Quantity=177
|
||||
|
||||
[PublishSettings]
|
||||
OutputFilePath2=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Central_board\Hardware\Project Outputs for CentralUnit\MFGOutput.PDF
|
||||
ReleaseManaged2=1
|
||||
OutputBasePath2=Project Outputs for CentralUnit
|
||||
OutputPathMedia2=
|
||||
OutputPathMediaValue2=
|
||||
OutputPathOutputer2=[Output Type]
|
||||
OutputPathOutputerPrefix2=
|
||||
OutputPathOutputerValue2=
|
||||
OutputFileName2=MFGOutput.PDF
|
||||
OutputFileNameMulti2=
|
||||
UseOutputNameForMulti2=1
|
||||
OutputFileNameSpecial2=
|
||||
OpenOutput2=1
|
||||
PromptOverwrite2=1
|
||||
PublishMethod2=0
|
||||
ZoomLevel2=50
|
||||
FitSCHPrintSizeToDoc2=1
|
||||
FitPCBPrintSizeToDoc2=1
|
||||
GenerateNetsInfo2=1
|
||||
MarkPins2=1
|
||||
MarkNetLabels2=1
|
||||
MarkPortsId2=1
|
||||
GenerateTOC2=1
|
||||
ShowComponentParameters2=1
|
||||
GlobalBookmarks2=0
|
||||
PDFACompliance2=Disabled
|
||||
PDFVersion2=Default
|
||||
OutputFilePath3=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Central_board\Hardware\Project Outputs for CentralUnit\
|
||||
ReleaseManaged3=1
|
||||
OutputBasePath3=Project Outputs for CentralUnit
|
||||
OutputPathMedia3=
|
||||
OutputPathMediaValue3=
|
||||
OutputPathOutputer3=[Output Type]
|
||||
OutputPathOutputerPrefix3=
|
||||
OutputPathOutputerValue3=
|
||||
OutputFileName3=
|
||||
OutputFileNameMulti3=
|
||||
UseOutputNameForMulti3=1
|
||||
OutputFileNameSpecial3=
|
||||
OpenOutput3=0
|
||||
OutputFilePath4=
|
||||
ReleaseManaged4=1
|
||||
OutputBasePath4=Project Outputs for CentralUnit
|
||||
OutputPathMedia4=
|
||||
OutputPathMediaValue4=
|
||||
OutputPathOutputer4=[Output Type]
|
||||
OutputPathOutputerPrefix4=
|
||||
OutputPathOutputerValue4=
|
||||
OutputFileName4=
|
||||
OutputFileNameMulti4=
|
||||
UseOutputNameForMulti4=1
|
||||
OutputFileNameSpecial4=
|
||||
OpenOutput4=1
|
||||
PromptOverwrite4=1
|
||||
PublishMethod4=5
|
||||
ZoomLevel4=50
|
||||
FitSCHPrintSizeToDoc4=1
|
||||
FitPCBPrintSizeToDoc4=1
|
||||
GenerateNetsInfo4=1
|
||||
MarkPins4=1
|
||||
MarkNetLabels4=1
|
||||
MarkPortsId4=1
|
||||
MediaFormat4=Windows Media file (*.wmv,*.wma,*.asf)
|
||||
FixedDimensions4=1
|
||||
Width4=352
|
||||
Height4=288
|
||||
MultiFile4=0
|
||||
FramesPerSecond4=25
|
||||
FramesPerSecondDenom4=1
|
||||
AviPixelFormat4=7
|
||||
AviCompression4=MP42 MS-MPEG4 V2
|
||||
AviQuality4=100
|
||||
FFmpegVideoCodecId4=13
|
||||
FFmpegPixelFormat4=0
|
||||
FFmpegQuality4=80
|
||||
WmvVideoCodecName4=Windows Media Video V7
|
||||
WmvQuality4=80
|
||||
|
||||
[GeneratedFilesSettings]
|
||||
RelativeOutputPath2=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Central_board\Hardware\Project Outputs for CentralUnit\MFGOutput.PDF
|
||||
OpenOutputs2=1
|
||||
RelativeOutputPath3=C:\Users\Sasa\Desktop\git\DIY_PlantSystem_public\Part2_Central_board\Hardware\Project Outputs for CentralUnit\
|
||||
OpenOutputs3=0
|
||||
AddToProject3=0
|
||||
TimestampFolder3=0
|
||||
UseOutputName3=0
|
||||
OpenODBOutput3=0
|
||||
OpenGerberOutput3=0
|
||||
OpenNCDrillOutput3=0
|
||||
OpenIPCOutput3=0
|
||||
EnableReload3=0
|
||||
RelativeOutputPath4=
|
||||
OpenOutputs4=1
|
||||
|
||||
BIN
Binary file not shown.
+20
@@ -0,0 +1,20 @@
|
||||
------------------------------------------------------------------------------------------
|
||||
Gerber File Extension Report For: CentralUnit_PCB.GBR 2021-05-27 23:14:40
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
Layer Extension Layer Description
|
||||
------------------------------------------------------------------------------------------
|
||||
.GTL Top Layer
|
||||
.GBL Bottom Layer
|
||||
.GTO Top Overlay
|
||||
.GTP Top Paste
|
||||
.GTS Top Solder
|
||||
.GBS Bottom Solder
|
||||
.GBP Bottom Paste
|
||||
.GBO Bottom Overlay
|
||||
.GKO Keep-Out Layer
|
||||
.GD1 Drill Drawing
|
||||
.GG1 Drill Guide
|
||||
------------------------------------------------------------------------------------------
|
||||
+2135
File diff suppressed because it is too large
Load Diff
+35800
File diff suppressed because it is too large
Load Diff
+7
@@ -0,0 +1,7 @@
|
||||
G04 Layer_Color=128*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
M02*
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
G04 Layer_Color=16711935*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD52C,0.12611*%
|
||||
%ADD53C,0.06800*%
|
||||
%ADD54C,0.05524*%
|
||||
%ADD55R,0.05524X0.05524*%
|
||||
%ADD56C,0.20485*%
|
||||
%ADD57R,0.06706X0.06706*%
|
||||
%ADD58C,0.06706*%
|
||||
%ADD59O,0.06706X0.08674*%
|
||||
%ADD60R,0.06706X0.08674*%
|
||||
D52*
|
||||
X232142Y-8224D02*
|
||||
D03*
|
||||
X245921D02*
|
||||
D03*
|
||||
X95973Y-8228D02*
|
||||
D03*
|
||||
X82193D02*
|
||||
D03*
|
||||
X68413D02*
|
||||
D03*
|
||||
X24374D02*
|
||||
D03*
|
||||
X38154D02*
|
||||
D03*
|
||||
X154421Y-8224D02*
|
||||
D03*
|
||||
X168201D02*
|
||||
D03*
|
||||
X181980D02*
|
||||
D03*
|
||||
X140642D02*
|
||||
D03*
|
||||
X126862D02*
|
||||
D03*
|
||||
D53*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D54*
|
||||
X165921Y-41728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-73224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D55*
|
||||
X165921Y-51728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-83224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D56*
|
||||
X289500Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
X0Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
D57*
|
||||
X22000Y-190500D02*
|
||||
D03*
|
||||
Y-60000D02*
|
||||
D03*
|
||||
D58*
|
||||
X32000Y-190500D02*
|
||||
D03*
|
||||
X12000Y-60000D02*
|
||||
D03*
|
||||
D59*
|
||||
X162039Y-174499D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X22039D02*
|
||||
D03*
|
||||
Y-74499D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
D60*
|
||||
X162039D02*
|
||||
D03*
|
||||
M02*
|
||||
+4936
File diff suppressed because it is too large
Load Diff
+309
@@ -0,0 +1,309 @@
|
||||
G04 Layer_Color=128*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD61C,0.00200*%
|
||||
D61*
|
||||
X228992Y-8224D02*
|
||||
X235291D01*
|
||||
X232142Y-11374D02*
|
||||
Y-5075D01*
|
||||
X242772Y-8224D02*
|
||||
X249071D01*
|
||||
X245921Y-11374D02*
|
||||
Y-5075D01*
|
||||
X92823Y-8228D02*
|
||||
X99122D01*
|
||||
X95973Y-11378D02*
|
||||
Y-5079D01*
|
||||
X79043Y-8228D02*
|
||||
X85343D01*
|
||||
X82193Y-11378D02*
|
||||
Y-5079D01*
|
||||
X65264Y-8228D02*
|
||||
X71563D01*
|
||||
X68413Y-11378D02*
|
||||
Y-5079D01*
|
||||
X21224Y-8228D02*
|
||||
X27524D01*
|
||||
X24374Y-11378D02*
|
||||
Y-5079D01*
|
||||
X35004Y-8228D02*
|
||||
X41303D01*
|
||||
X38154Y-11378D02*
|
||||
Y-5079D01*
|
||||
X151272Y-8224D02*
|
||||
X157571D01*
|
||||
X154421Y-11374D02*
|
||||
Y-5075D01*
|
||||
X165051Y-8224D02*
|
||||
X171350D01*
|
||||
X168201Y-11374D02*
|
||||
Y-5075D01*
|
||||
X178831Y-8224D02*
|
||||
X185130D01*
|
||||
X181980Y-11374D02*
|
||||
Y-5075D01*
|
||||
X137492Y-8224D02*
|
||||
X143791D01*
|
||||
X140642Y-11374D02*
|
||||
Y-5075D01*
|
||||
X123713Y-8224D02*
|
||||
X130012D01*
|
||||
X126862Y-11374D02*
|
||||
Y-5075D01*
|
||||
X229421Y-40224D02*
|
||||
X232421D01*
|
||||
X230921Y-41724D02*
|
||||
Y-38724D01*
|
||||
X249421Y-40224D02*
|
||||
X252421D01*
|
||||
X250921Y-41724D02*
|
||||
Y-38724D01*
|
||||
X164347Y-41728D02*
|
||||
X167496D01*
|
||||
X165921Y-43303D02*
|
||||
Y-40154D01*
|
||||
X164347Y-51728D02*
|
||||
X167496D01*
|
||||
X165921Y-53303D02*
|
||||
Y-50154D01*
|
||||
X187847Y-41728D02*
|
||||
X190996D01*
|
||||
X189421Y-43303D02*
|
||||
Y-40154D01*
|
||||
X187847Y-51728D02*
|
||||
X190996D01*
|
||||
X189421Y-53303D02*
|
||||
Y-50154D01*
|
||||
X278346Y-73224D02*
|
||||
X281496D01*
|
||||
X279921Y-74799D02*
|
||||
Y-71650D01*
|
||||
X278346Y-83224D02*
|
||||
X281496D01*
|
||||
X279921Y-84799D02*
|
||||
Y-81650D01*
|
||||
X205847Y-73224D02*
|
||||
X208996D01*
|
||||
X207421Y-74799D02*
|
||||
Y-71650D01*
|
||||
X205847Y-83224D02*
|
||||
X208996D01*
|
||||
X207421Y-84799D02*
|
||||
Y-81650D01*
|
||||
X282610Y0D02*
|
||||
X296390D01*
|
||||
X289500Y-6890D02*
|
||||
Y6890D01*
|
||||
X282610Y-197000D02*
|
||||
X296390D01*
|
||||
X289500Y-203890D02*
|
||||
Y-190110D01*
|
||||
X-6890Y0D02*
|
||||
X6890D01*
|
||||
X0Y-6890D02*
|
||||
Y6890D01*
|
||||
X-6890Y-197000D02*
|
||||
X6890D01*
|
||||
X0Y-203890D02*
|
||||
Y-190110D01*
|
||||
X20228Y-190500D02*
|
||||
X23772D01*
|
||||
X22000Y-192272D02*
|
||||
Y-188728D01*
|
||||
X30228Y-190500D02*
|
||||
X33772D01*
|
||||
X32000Y-192272D02*
|
||||
Y-188728D01*
|
||||
X160465Y-174499D02*
|
||||
X163614D01*
|
||||
X162039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X150465Y-174499D02*
|
||||
X153614D01*
|
||||
X152039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X140465Y-174499D02*
|
||||
X143614D01*
|
||||
X142039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X130465Y-174499D02*
|
||||
X133614D01*
|
||||
X132039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X120465Y-174499D02*
|
||||
X123614D01*
|
||||
X122039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X110465Y-174499D02*
|
||||
X113614D01*
|
||||
X112039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X100465Y-174499D02*
|
||||
X103614D01*
|
||||
X102039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X90465Y-174499D02*
|
||||
X93614D01*
|
||||
X92039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X80465Y-174499D02*
|
||||
X83614D01*
|
||||
X82039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X70465Y-174499D02*
|
||||
X73614D01*
|
||||
X72039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X60465Y-174499D02*
|
||||
X63614D01*
|
||||
X62039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X50465Y-174499D02*
|
||||
X53614D01*
|
||||
X52039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X40465Y-174499D02*
|
||||
X43614D01*
|
||||
X42039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X30465Y-174499D02*
|
||||
X33614D01*
|
||||
X32039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X20465Y-174499D02*
|
||||
X23614D01*
|
||||
X22039Y-176074D02*
|
||||
Y-172924D01*
|
||||
X20465Y-74499D02*
|
||||
X23614D01*
|
||||
X22039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X30465Y-74499D02*
|
||||
X33614D01*
|
||||
X32039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X40465Y-74499D02*
|
||||
X43614D01*
|
||||
X42039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X50465Y-74499D02*
|
||||
X53614D01*
|
||||
X52039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X60465Y-74499D02*
|
||||
X63614D01*
|
||||
X62039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X70465Y-74499D02*
|
||||
X73614D01*
|
||||
X72039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X80465Y-74499D02*
|
||||
X83614D01*
|
||||
X82039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X90465Y-74499D02*
|
||||
X93614D01*
|
||||
X92039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X100465Y-74499D02*
|
||||
X103614D01*
|
||||
X102039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X110465Y-74499D02*
|
||||
X113614D01*
|
||||
X112039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X120465Y-74499D02*
|
||||
X123614D01*
|
||||
X122039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X130465Y-74499D02*
|
||||
X133614D01*
|
||||
X132039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X140465Y-74499D02*
|
||||
X143614D01*
|
||||
X142039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X150465Y-74499D02*
|
||||
X153614D01*
|
||||
X152039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X160465Y-74499D02*
|
||||
X163614D01*
|
||||
X162039Y-76074D02*
|
||||
Y-72924D01*
|
||||
X20228Y-60000D02*
|
||||
X23772D01*
|
||||
X22000Y-61772D02*
|
||||
Y-58228D01*
|
||||
X10228Y-60000D02*
|
||||
X13772D01*
|
||||
X12000Y-61772D02*
|
||||
Y-58228D01*
|
||||
X200634Y-21228D02*
|
||||
X202209D01*
|
||||
X201421Y-22016D02*
|
||||
Y-20441D01*
|
||||
X230847Y-80575D02*
|
||||
X232421D01*
|
||||
X231634Y-81362D02*
|
||||
Y-79787D01*
|
||||
X244232Y-80575D02*
|
||||
X245807D01*
|
||||
X245020Y-81362D02*
|
||||
Y-79787D01*
|
||||
X244134Y-118024D02*
|
||||
X245709D01*
|
||||
X244921Y-118811D02*
|
||||
Y-117236D01*
|
||||
X239134Y-118224D02*
|
||||
X240709D01*
|
||||
X239921Y-119012D02*
|
||||
Y-117437D01*
|
||||
X249134Y-118224D02*
|
||||
X250709D01*
|
||||
X249921Y-119012D02*
|
||||
Y-117437D01*
|
||||
X244134Y-113224D02*
|
||||
X245709D01*
|
||||
X244921Y-114012D02*
|
||||
Y-112437D01*
|
||||
X244134Y-123224D02*
|
||||
X245709D01*
|
||||
X244921Y-124012D02*
|
||||
Y-122437D01*
|
||||
X220984Y-118524D02*
|
||||
X222559D01*
|
||||
X221772Y-119311D02*
|
||||
Y-117736D01*
|
||||
X153134Y-27228D02*
|
||||
X154709D01*
|
||||
X153921Y-28016D02*
|
||||
Y-26441D01*
|
||||
X59213Y-23000D02*
|
||||
X60787D01*
|
||||
X60000Y-23787D02*
|
||||
Y-22213D01*
|
||||
X271213Y-59000D02*
|
||||
X272787D01*
|
||||
X272000Y-59787D02*
|
||||
Y-58213D01*
|
||||
X116634Y-46228D02*
|
||||
X118209D01*
|
||||
X117421Y-47016D02*
|
||||
Y-45441D01*
|
||||
X151823Y-53390D02*
|
||||
X153398D01*
|
||||
X152610Y-54177D02*
|
||||
Y-52602D01*
|
||||
X43197Y-38728D02*
|
||||
X44772D01*
|
||||
X43984Y-39516D02*
|
||||
Y-37941D01*
|
||||
M02*
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
G04 Layer_Color=16711935*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD41C,0.00394*%
|
||||
D41*
|
||||
X1606Y23622D02*
|
||||
G03*
|
||||
X-18079Y3937I0J-19685D01*
|
||||
G01*
|
||||
X308685D02*
|
||||
G03*
|
||||
X289000Y23622I-19685J0D01*
|
||||
G01*
|
||||
X-18079Y-196000D02*
|
||||
G03*
|
||||
X1606Y-215685I19685J0D01*
|
||||
G01*
|
||||
X289000D02*
|
||||
G03*
|
||||
X308685Y-196000I0J19685D01*
|
||||
G01*
|
||||
X-18079D02*
|
||||
X-18079Y3937D01*
|
||||
X1606Y23622D02*
|
||||
X289000D01*
|
||||
X308685Y-196000D02*
|
||||
X308685Y3937D01*
|
||||
X1606Y-215685D02*
|
||||
X289000D01*
|
||||
M02*
|
||||
+713
@@ -0,0 +1,713 @@
|
||||
G04 Layer_Physical_Order=1*
|
||||
G04 Layer_Color=255*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD10R,0.05905X0.05905*%
|
||||
%ADD11R,0.39370X0.39370*%
|
||||
%ADD12R,0.03543X0.07874*%
|
||||
%ADD13R,0.11811X0.23622*%
|
||||
%ADD14R,0.03543X0.03799*%
|
||||
%ADD15O,0.01772X0.05709*%
|
||||
%ADD16R,0.03799X0.03543*%
|
||||
%ADD17R,0.03543X0.03150*%
|
||||
%ADD18R,0.05276X0.07087*%
|
||||
%ADD19C,0.02362*%
|
||||
%ADD20C,0.01772*%
|
||||
%ADD21C,0.03150*%
|
||||
%ADD22C,0.01181*%
|
||||
%ADD23C,0.05905*%
|
||||
%ADD24C,0.03937*%
|
||||
%ADD25C,0.11811*%
|
||||
%ADD26C,0.06000*%
|
||||
%ADD27C,0.04724*%
|
||||
%ADD28R,0.04724X0.04724*%
|
||||
%ADD29C,0.19685*%
|
||||
%ADD30R,0.05905X0.05905*%
|
||||
%ADD31C,0.05905*%
|
||||
%ADD32O,0.05905X0.07874*%
|
||||
%ADD33R,0.05905X0.07874*%
|
||||
%ADD34C,0.03150*%
|
||||
D10*
|
||||
X268921Y-40335D02*
|
||||
D03*
|
||||
Y-54114D02*
|
||||
D03*
|
||||
D11*
|
||||
X244921Y-114173D02*
|
||||
D03*
|
||||
D12*
|
||||
X258307Y-73181D02*
|
||||
D03*
|
||||
X251713Y-72984D02*
|
||||
D03*
|
||||
X245020D02*
|
||||
D03*
|
||||
X238327D02*
|
||||
D03*
|
||||
X231634D02*
|
||||
D03*
|
||||
D13*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D14*
|
||||
X117421Y-40878D02*
|
||||
D03*
|
||||
Y-34579D02*
|
||||
D03*
|
||||
X123421D02*
|
||||
D03*
|
||||
Y-40878D02*
|
||||
D03*
|
||||
X129421Y-34429D02*
|
||||
D03*
|
||||
Y-40728D02*
|
||||
D03*
|
||||
X81921Y-31378D02*
|
||||
D03*
|
||||
Y-25079D02*
|
||||
D03*
|
||||
X216421Y-106024D02*
|
||||
D03*
|
||||
Y-99724D02*
|
||||
D03*
|
||||
Y-118524D02*
|
||||
D03*
|
||||
Y-112224D02*
|
||||
D03*
|
||||
X152000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X122000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X49421Y-46079D02*
|
||||
D03*
|
||||
Y-52378D02*
|
||||
D03*
|
||||
D15*
|
||||
X139583Y-53390D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
X139583Y-36067D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
D16*
|
||||
X159272Y-27228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X159272Y-21228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X196071Y-27228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X196071Y-21228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X72071Y-25228D02*
|
||||
D03*
|
||||
X65772D02*
|
||||
D03*
|
||||
X98571D02*
|
||||
D03*
|
||||
X92272D02*
|
||||
D03*
|
||||
X272071Y-63724D02*
|
||||
D03*
|
||||
X265772D02*
|
||||
D03*
|
||||
X40071Y-55728D02*
|
||||
D03*
|
||||
X33772D02*
|
||||
D03*
|
||||
X54571Y-22728D02*
|
||||
D03*
|
||||
X48272D02*
|
||||
D03*
|
||||
D17*
|
||||
X32063Y-42500D02*
|
||||
D03*
|
||||
X39937Y-38957D02*
|
||||
D03*
|
||||
Y-46043D02*
|
||||
D03*
|
||||
D18*
|
||||
X25791Y-22728D02*
|
||||
D03*
|
||||
X37051D02*
|
||||
D03*
|
||||
D19*
|
||||
X72071Y-25228D02*
|
||||
X92272D01*
|
||||
X129347Y-34504D02*
|
||||
X129421Y-34429D01*
|
||||
X235921Y-89224D02*
|
||||
X238421Y-86724D01*
|
||||
Y-73079D01*
|
||||
X238327Y-72984D02*
|
||||
X238421Y-73079D01*
|
||||
X59787Y-23000D02*
|
||||
X60000D01*
|
||||
X54571Y-22728D02*
|
||||
X59515D01*
|
||||
X59787Y-23000D01*
|
||||
X60213D02*
|
||||
X61851Y-24638D01*
|
||||
X65181D02*
|
||||
X65772Y-25228D01*
|
||||
X60000Y-23000D02*
|
||||
X60213D01*
|
||||
X61851Y-24638D02*
|
||||
X65181D01*
|
||||
X82057Y-8364D02*
|
||||
X82193Y-8228D01*
|
||||
X81921Y-25079D02*
|
||||
X82057Y-24943D01*
|
||||
Y-8364D01*
|
||||
X181980Y-21352D02*
|
||||
X182104Y-21228D01*
|
||||
X189772D01*
|
||||
X181980Y-27916D02*
|
||||
X182668Y-27228D01*
|
||||
X189772D01*
|
||||
X265500Y-73203D02*
|
||||
X265772Y-72931D01*
|
||||
Y-63724D01*
|
||||
X37051Y-22728D02*
|
||||
X37602Y-22177D01*
|
||||
Y-8779D02*
|
||||
X38154Y-8228D01*
|
||||
X37602Y-22177D02*
|
||||
Y-8779D01*
|
||||
X117496Y-34504D02*
|
||||
X129347D01*
|
||||
X221500Y-90608D02*
|
||||
X222884Y-89224D01*
|
||||
X220116Y-105761D02*
|
||||
X221500Y-104377D01*
|
||||
X216421Y-106024D02*
|
||||
X216684Y-105761D01*
|
||||
X221500Y-104377D02*
|
||||
Y-90608D01*
|
||||
X216684Y-105761D02*
|
||||
X220116D01*
|
||||
X222884Y-89224D02*
|
||||
X235921D01*
|
||||
X40051Y-38842D02*
|
||||
X43870D01*
|
||||
D20*
|
||||
X140921Y-41728D02*
|
||||
X142142Y-40508D01*
|
||||
Y-36067D01*
|
||||
X129421Y-40843D02*
|
||||
Y-40728D01*
|
||||
X130307Y-41728D02*
|
||||
X140921D01*
|
||||
X129421Y-40843D02*
|
||||
X130307Y-41728D01*
|
||||
X142921Y-45728D02*
|
||||
X144701Y-43949D01*
|
||||
Y-36067D01*
|
||||
X123421Y-44690D02*
|
||||
X124459Y-45728D01*
|
||||
X123421Y-44690D02*
|
||||
Y-40878D01*
|
||||
X124459Y-45728D02*
|
||||
X142921D01*
|
||||
X129421Y-34429D02*
|
||||
X133122D01*
|
||||
X134921Y-36228D01*
|
||||
X139583D02*
|
||||
Y-36067D01*
|
||||
X134921Y-36228D02*
|
||||
X139583D01*
|
||||
X144701Y-36067D02*
|
||||
Y-23449D01*
|
||||
X147921Y-20228D01*
|
||||
X150921D02*
|
||||
X154421Y-16728D01*
|
||||
X147921Y-20228D02*
|
||||
X150921D01*
|
||||
X154421Y-16728D02*
|
||||
Y-8224D01*
|
||||
X140642D02*
|
||||
X142142Y-9724D01*
|
||||
Y-36067D02*
|
||||
Y-9724D01*
|
||||
X107421Y-49228D02*
|
||||
X111583Y-53390D01*
|
||||
X107421Y-49228D02*
|
||||
Y-35728D01*
|
||||
X108646Y-34504D01*
|
||||
X111583Y-53390D02*
|
||||
X139583D01*
|
||||
X207421Y-73224D02*
|
||||
X213224D01*
|
||||
X146739Y-62500D02*
|
||||
X165500D01*
|
||||
X179000Y-76000D01*
|
||||
Y-174000D02*
|
||||
Y-76000D01*
|
||||
X144701Y-60462D02*
|
||||
X146739Y-62500D01*
|
||||
X144701Y-60462D02*
|
||||
Y-53390D01*
|
||||
X142142Y-63642D02*
|
||||
Y-53390D01*
|
||||
Y-63642D02*
|
||||
X145000Y-66500D01*
|
||||
X163500D01*
|
||||
X171500Y-74500D01*
|
||||
Y-158500D02*
|
||||
Y-74500D01*
|
||||
X108646Y-34504D02*
|
||||
X117421D01*
|
||||
X117496D01*
|
||||
X147260Y-40760D02*
|
||||
Y-36067D01*
|
||||
Y-40760D02*
|
||||
X151000Y-44500D01*
|
||||
X156000D01*
|
||||
X158000Y-46500D01*
|
||||
Y-56000D02*
|
||||
Y-46500D01*
|
||||
Y-56000D02*
|
||||
X160500Y-58500D01*
|
||||
X169000D01*
|
||||
X186500Y-76000D01*
|
||||
X166350Y-163650D02*
|
||||
X171500Y-158500D01*
|
||||
X152000Y-163650D02*
|
||||
X166350D01*
|
||||
X122000D02*
|
||||
X122020Y-163669D01*
|
||||
Y-174479D02*
|
||||
X122039Y-174499D01*
|
||||
X122020Y-174479D02*
|
||||
Y-163669D01*
|
||||
X122039Y-181539D02*
|
||||
Y-174499D01*
|
||||
Y-181539D02*
|
||||
X124000Y-183500D01*
|
||||
X169500D01*
|
||||
X179000Y-174000D01*
|
||||
X112039Y-185539D02*
|
||||
Y-174499D01*
|
||||
Y-185539D02*
|
||||
X115500Y-189000D01*
|
||||
X173500D01*
|
||||
X186500Y-176000D02*
|
||||
Y-76000D01*
|
||||
X173500Y-189000D02*
|
||||
X186500Y-176000D01*
|
||||
X213224Y-73224D02*
|
||||
X216500Y-76500D01*
|
||||
X216421Y-99724D02*
|
||||
X216500Y-99646D01*
|
||||
Y-76500D01*
|
||||
X216421Y-112224D02*
|
||||
Y-106024D01*
|
||||
D21*
|
||||
X196071Y-21228D02*
|
||||
X201421D01*
|
||||
X153921Y-27228D02*
|
||||
X159272D01*
|
||||
X196071D02*
|
||||
Y-21228D01*
|
||||
X159272Y-27228D02*
|
||||
Y-21228D01*
|
||||
X165571D02*
|
||||
X171772D01*
|
||||
X172000Y-21000D01*
|
||||
X171728Y-27228D02*
|
||||
X172000Y-27500D01*
|
||||
X165571Y-27228D02*
|
||||
X171728D01*
|
||||
X102150Y-195650D02*
|
||||
X176850D01*
|
||||
X272071Y-63724D02*
|
||||
Y-57264D01*
|
||||
X268921Y-54114D02*
|
||||
X272071Y-57264D01*
|
||||
X25791Y-40291D02*
|
||||
Y-22728D01*
|
||||
X49224Y-46315D02*
|
||||
X49421Y-46118D01*
|
||||
Y-46079D01*
|
||||
X12000Y-60000D02*
|
||||
Y-7500D01*
|
||||
X28000Y8500D01*
|
||||
X43500D01*
|
||||
X25083Y-22020D02*
|
||||
X25791Y-22728D01*
|
||||
X24374Y-8228D02*
|
||||
X25083Y-8937D01*
|
||||
Y-22020D02*
|
||||
Y-8937D01*
|
||||
X37051Y-22728D02*
|
||||
X48272D01*
|
||||
X52039Y-74499D02*
|
||||
Y-65539D01*
|
||||
X49421Y-62921D02*
|
||||
X52039Y-65539D01*
|
||||
X49421Y-62921D02*
|
||||
Y-52378D01*
|
||||
X81980Y-74440D02*
|
||||
X82039Y-74499D01*
|
||||
X81921Y-31378D02*
|
||||
X81980Y-31437D01*
|
||||
Y-74440D02*
|
||||
Y-31437D01*
|
||||
X32000Y-190500D02*
|
||||
X97000D01*
|
||||
X102150Y-195650D01*
|
||||
X22000Y-190500D02*
|
||||
X22020Y-190480D01*
|
||||
Y-174519D01*
|
||||
X22039Y-174499D01*
|
||||
X117421Y-34504D02*
|
||||
Y1421D01*
|
||||
X117500Y1500D01*
|
||||
X117421Y-34579D02*
|
||||
Y-34504D01*
|
||||
X22000Y-60000D02*
|
||||
X22020Y-60020D01*
|
||||
Y-74479D02*
|
||||
X22039Y-74499D01*
|
||||
X22020Y-74479D02*
|
||||
Y-60020D01*
|
||||
X176850Y-195650D02*
|
||||
X195000Y-177500D01*
|
||||
Y-73224D01*
|
||||
X152000Y-163650D02*
|
||||
X152020Y-163669D01*
|
||||
Y-174479D02*
|
||||
Y-163669D01*
|
||||
Y-174479D02*
|
||||
X152039Y-174499D01*
|
||||
X152020Y-174519D02*
|
||||
X152039Y-174499D01*
|
||||
X14000Y-165500D02*
|
||||
X22150Y-157350D01*
|
||||
X14000Y-195500D02*
|
||||
Y-165500D01*
|
||||
Y-195500D02*
|
||||
X17500Y-199000D01*
|
||||
X29500D01*
|
||||
X31473Y-197027D01*
|
||||
Y-191027D02*
|
||||
X32000Y-190500D01*
|
||||
X31473Y-197027D02*
|
||||
Y-191027D01*
|
||||
X22150Y-157350D02*
|
||||
X122000D01*
|
||||
X152000D01*
|
||||
X40004Y-55661D02*
|
||||
X40071Y-55728D01*
|
||||
X40004Y-55661D02*
|
||||
Y-46043D01*
|
||||
X40134D02*
|
||||
X40169Y-46079D01*
|
||||
X49421D01*
|
||||
X39937Y-46043D02*
|
||||
X40004D01*
|
||||
X40134D01*
|
||||
X28000Y-42500D02*
|
||||
X32063D01*
|
||||
X25791Y-40291D02*
|
||||
X28000Y-42500D01*
|
||||
D22*
|
||||
X231634Y-80575D02*
|
||||
Y-72984D01*
|
||||
X245020Y-80575D02*
|
||||
Y-72984D01*
|
||||
X216421Y-118524D02*
|
||||
X221772D01*
|
||||
X98571Y-25228D02*
|
||||
Y-21071D01*
|
||||
X95973Y-18473D02*
|
||||
X98571Y-21071D01*
|
||||
X95973Y-18473D02*
|
||||
Y-8228D01*
|
||||
X117421Y-46228D02*
|
||||
Y-40878D01*
|
||||
X147260Y-53390D02*
|
||||
X152610D01*
|
||||
D23*
|
||||
X271921Y-8224D02*
|
||||
X279921Y-16224D01*
|
||||
X245921Y-8224D02*
|
||||
X271921D01*
|
||||
X279921Y-73224D02*
|
||||
Y-16224D01*
|
||||
X244791Y-7095D02*
|
||||
Y2709D01*
|
||||
Y-7095D02*
|
||||
X245921Y-8224D01*
|
||||
X239000Y8500D02*
|
||||
X244791Y2709D01*
|
||||
X38154Y-8228D02*
|
||||
X39283Y-7098D01*
|
||||
X181980Y8480D02*
|
||||
X182000Y8500D01*
|
||||
X181980Y-8224D02*
|
||||
Y8480D01*
|
||||
X182000Y8500D02*
|
||||
X239000D01*
|
||||
X39283Y4284D02*
|
||||
X43500Y8500D01*
|
||||
X39283Y-7098D02*
|
||||
Y4284D01*
|
||||
X189228Y-41728D02*
|
||||
X189421D01*
|
||||
X181980Y-34480D02*
|
||||
X189228Y-41728D01*
|
||||
X181980Y-21352D02*
|
||||
Y-8224D01*
|
||||
Y-34480D02*
|
||||
Y-27916D01*
|
||||
Y-21352D01*
|
||||
X43500Y8500D02*
|
||||
X182000D01*
|
||||
D24*
|
||||
X258307Y-73181D02*
|
||||
X258329Y-73203D01*
|
||||
X279900D02*
|
||||
X279921Y-73224D01*
|
||||
X268866Y-40280D02*
|
||||
X268921Y-40335D01*
|
||||
X250921Y-40224D02*
|
||||
X250976Y-40280D01*
|
||||
X268866D01*
|
||||
X250921Y-40783D02*
|
||||
X251713Y-41574D01*
|
||||
Y-72984D02*
|
||||
Y-41574D01*
|
||||
X250921Y-40783D02*
|
||||
Y-40224D01*
|
||||
X168201Y-10355D02*
|
||||
X172000Y-14154D01*
|
||||
X168201Y-10355D02*
|
||||
Y-8224D01*
|
||||
X172000Y-21000D02*
|
||||
Y-14154D01*
|
||||
Y-41000D02*
|
||||
Y-27500D01*
|
||||
Y-21000D01*
|
||||
Y-41000D02*
|
||||
X177500Y-46500D01*
|
||||
X207421Y-73224D02*
|
||||
Y-50579D01*
|
||||
X217776Y-40224D01*
|
||||
X230921D01*
|
||||
X166072Y-41578D02*
|
||||
X171422D01*
|
||||
X165921Y-41728D02*
|
||||
X166072Y-41578D01*
|
||||
X171422D02*
|
||||
X172000Y-41000D01*
|
||||
X258329Y-73203D02*
|
||||
X265500D01*
|
||||
X279900D01*
|
||||
X166694Y-6718D02*
|
||||
X168201Y-8224D01*
|
||||
X166694Y-6718D02*
|
||||
Y-806D01*
|
||||
X164388Y1500D02*
|
||||
X166694Y-806D01*
|
||||
X97479Y-6722D02*
|
||||
Y-2521D01*
|
||||
X101500Y1500D01*
|
||||
X95973Y-8228D02*
|
||||
X97479Y-6722D01*
|
||||
X101500Y1500D02*
|
||||
X117500D01*
|
||||
X164388D01*
|
||||
X195000Y-73224D02*
|
||||
X207421D01*
|
||||
X177500Y-55724D02*
|
||||
X195000Y-73224D01*
|
||||
X177500Y-55724D02*
|
||||
Y-46500D01*
|
||||
D25*
|
||||
X232142Y-8224D02*
|
||||
D03*
|
||||
X245921D02*
|
||||
D03*
|
||||
X95973Y-8228D02*
|
||||
D03*
|
||||
X82193D02*
|
||||
D03*
|
||||
X68413D02*
|
||||
D03*
|
||||
X24374D02*
|
||||
D03*
|
||||
X38154D02*
|
||||
D03*
|
||||
X154421Y-8224D02*
|
||||
D03*
|
||||
X168201D02*
|
||||
D03*
|
||||
X181980D02*
|
||||
D03*
|
||||
X140642D02*
|
||||
D03*
|
||||
X126862D02*
|
||||
D03*
|
||||
D26*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D27*
|
||||
X165921Y-41728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-73224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D28*
|
||||
X165921Y-51728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-83224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D29*
|
||||
X289500Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
X0Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
D30*
|
||||
X22000Y-190500D02*
|
||||
D03*
|
||||
Y-60000D02*
|
||||
D03*
|
||||
D31*
|
||||
X32000Y-190500D02*
|
||||
D03*
|
||||
X12000Y-60000D02*
|
||||
D03*
|
||||
D32*
|
||||
X162039Y-174499D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X22039D02*
|
||||
D03*
|
||||
Y-74499D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
D33*
|
||||
X162039D02*
|
||||
D03*
|
||||
D34*
|
||||
X201421Y-21228D02*
|
||||
D03*
|
||||
X231634Y-80575D02*
|
||||
D03*
|
||||
X245020D02*
|
||||
D03*
|
||||
X244921Y-118024D02*
|
||||
D03*
|
||||
X239921Y-118224D02*
|
||||
D03*
|
||||
X249921D02*
|
||||
D03*
|
||||
X244921Y-113224D02*
|
||||
D03*
|
||||
Y-123224D02*
|
||||
D03*
|
||||
X221772Y-118524D02*
|
||||
D03*
|
||||
X153921Y-27228D02*
|
||||
D03*
|
||||
X60000Y-23000D02*
|
||||
D03*
|
||||
X272000Y-59000D02*
|
||||
D03*
|
||||
X117421Y-46228D02*
|
||||
D03*
|
||||
X152610Y-53390D02*
|
||||
D03*
|
||||
X43984Y-38728D02*
|
||||
D03*
|
||||
M02*
|
||||
+1690
File diff suppressed because it is too large
Load Diff
+143
@@ -0,0 +1,143 @@
|
||||
G04 Layer_Color=8421504*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD10R,0.05905X0.05905*%
|
||||
%ADD11R,0.39370X0.39370*%
|
||||
%ADD12R,0.03543X0.07874*%
|
||||
%ADD13R,0.11811X0.23622*%
|
||||
%ADD14R,0.03543X0.03799*%
|
||||
%ADD15O,0.01772X0.05709*%
|
||||
%ADD16R,0.03799X0.03543*%
|
||||
%ADD17R,0.03543X0.03150*%
|
||||
%ADD18R,0.05276X0.07087*%
|
||||
D10*
|
||||
X268921Y-40335D02*
|
||||
D03*
|
||||
Y-54114D02*
|
||||
D03*
|
||||
D11*
|
||||
X244921Y-114173D02*
|
||||
D03*
|
||||
D12*
|
||||
X258307Y-73181D02*
|
||||
D03*
|
||||
X251713Y-72984D02*
|
||||
D03*
|
||||
X245020D02*
|
||||
D03*
|
||||
X238327D02*
|
||||
D03*
|
||||
X231634D02*
|
||||
D03*
|
||||
D13*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D14*
|
||||
X117421Y-40878D02*
|
||||
D03*
|
||||
Y-34579D02*
|
||||
D03*
|
||||
X123421D02*
|
||||
D03*
|
||||
Y-40878D02*
|
||||
D03*
|
||||
X129421Y-34429D02*
|
||||
D03*
|
||||
Y-40728D02*
|
||||
D03*
|
||||
X81921Y-31378D02*
|
||||
D03*
|
||||
Y-25079D02*
|
||||
D03*
|
||||
X216421Y-106024D02*
|
||||
D03*
|
||||
Y-99724D02*
|
||||
D03*
|
||||
Y-118524D02*
|
||||
D03*
|
||||
Y-112224D02*
|
||||
D03*
|
||||
X152000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X122000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X49421Y-46079D02*
|
||||
D03*
|
||||
Y-52378D02*
|
||||
D03*
|
||||
D15*
|
||||
X139583Y-53390D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
X139583Y-36067D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
D16*
|
||||
X159272Y-27228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X159272Y-21228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X196071Y-27228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X196071Y-21228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X72071Y-25228D02*
|
||||
D03*
|
||||
X65772D02*
|
||||
D03*
|
||||
X98571D02*
|
||||
D03*
|
||||
X92272D02*
|
||||
D03*
|
||||
X272071Y-63724D02*
|
||||
D03*
|
||||
X265772D02*
|
||||
D03*
|
||||
X40071Y-55728D02*
|
||||
D03*
|
||||
X33772D02*
|
||||
D03*
|
||||
X54571Y-22728D02*
|
||||
D03*
|
||||
X48272D02*
|
||||
D03*
|
||||
D17*
|
||||
X32063Y-42500D02*
|
||||
D03*
|
||||
X39937Y-38957D02*
|
||||
D03*
|
||||
Y-46043D02*
|
||||
D03*
|
||||
D18*
|
||||
X25791Y-22728D02*
|
||||
D03*
|
||||
X37051D02*
|
||||
D03*
|
||||
M02*
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
G04 Layer_Color=8388736*
|
||||
%FSLAX25Y25*%
|
||||
%MOIN*%
|
||||
G70*
|
||||
G01*
|
||||
G75*
|
||||
%ADD43R,0.06706X0.06706*%
|
||||
%ADD44R,0.40170X0.40170*%
|
||||
%ADD45R,0.04343X0.08674*%
|
||||
%ADD46R,0.12611X0.24422*%
|
||||
%ADD47R,0.04343X0.04599*%
|
||||
%ADD48O,0.02572X0.06509*%
|
||||
%ADD49R,0.04599X0.04343*%
|
||||
%ADD50R,0.04343X0.03950*%
|
||||
%ADD51R,0.06076X0.07887*%
|
||||
%ADD52C,0.12611*%
|
||||
%ADD53C,0.06800*%
|
||||
%ADD54C,0.05524*%
|
||||
%ADD55R,0.05524X0.05524*%
|
||||
%ADD56C,0.20485*%
|
||||
%ADD57R,0.06706X0.06706*%
|
||||
%ADD58C,0.06706*%
|
||||
%ADD59O,0.06706X0.08674*%
|
||||
%ADD60R,0.06706X0.08674*%
|
||||
D43*
|
||||
X268921Y-40335D02*
|
||||
D03*
|
||||
Y-54114D02*
|
||||
D03*
|
||||
D44*
|
||||
X244921Y-114173D02*
|
||||
D03*
|
||||
D45*
|
||||
X258307Y-73181D02*
|
||||
D03*
|
||||
X251713Y-72984D02*
|
||||
D03*
|
||||
X245020D02*
|
||||
D03*
|
||||
X238327D02*
|
||||
D03*
|
||||
X231634D02*
|
||||
D03*
|
||||
D46*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D47*
|
||||
X117421Y-40878D02*
|
||||
D03*
|
||||
Y-34579D02*
|
||||
D03*
|
||||
X123421D02*
|
||||
D03*
|
||||
Y-40878D02*
|
||||
D03*
|
||||
X129421Y-34429D02*
|
||||
D03*
|
||||
Y-40728D02*
|
||||
D03*
|
||||
X81921Y-31378D02*
|
||||
D03*
|
||||
Y-25079D02*
|
||||
D03*
|
||||
X216421Y-106024D02*
|
||||
D03*
|
||||
Y-99724D02*
|
||||
D03*
|
||||
Y-118524D02*
|
||||
D03*
|
||||
Y-112224D02*
|
||||
D03*
|
||||
X152000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X122000Y-157350D02*
|
||||
D03*
|
||||
Y-163650D02*
|
||||
D03*
|
||||
X49421Y-46079D02*
|
||||
D03*
|
||||
Y-52378D02*
|
||||
D03*
|
||||
D48*
|
||||
X139583Y-53390D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
X139583Y-36067D02*
|
||||
D03*
|
||||
X142142D02*
|
||||
D03*
|
||||
X144701D02*
|
||||
D03*
|
||||
X147260D02*
|
||||
D03*
|
||||
D49*
|
||||
X159272Y-27228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X159272Y-21228D02*
|
||||
D03*
|
||||
X165571D02*
|
||||
D03*
|
||||
X196071Y-27228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X196071Y-21228D02*
|
||||
D03*
|
||||
X189772D02*
|
||||
D03*
|
||||
X72071Y-25228D02*
|
||||
D03*
|
||||
X65772D02*
|
||||
D03*
|
||||
X98571D02*
|
||||
D03*
|
||||
X92272D02*
|
||||
D03*
|
||||
X272071Y-63724D02*
|
||||
D03*
|
||||
X265772D02*
|
||||
D03*
|
||||
X40071Y-55728D02*
|
||||
D03*
|
||||
X33772D02*
|
||||
D03*
|
||||
X54571Y-22728D02*
|
||||
D03*
|
||||
X48272D02*
|
||||
D03*
|
||||
D50*
|
||||
X32063Y-42500D02*
|
||||
D03*
|
||||
X39937Y-38957D02*
|
||||
D03*
|
||||
Y-46043D02*
|
||||
D03*
|
||||
D51*
|
||||
X25791Y-22728D02*
|
||||
D03*
|
||||
X37051D02*
|
||||
D03*
|
||||
D52*
|
||||
X232142Y-8224D02*
|
||||
D03*
|
||||
X245921D02*
|
||||
D03*
|
||||
X95973Y-8228D02*
|
||||
D03*
|
||||
X82193D02*
|
||||
D03*
|
||||
X68413D02*
|
||||
D03*
|
||||
X24374D02*
|
||||
D03*
|
||||
X38154D02*
|
||||
D03*
|
||||
X154421Y-8224D02*
|
||||
D03*
|
||||
X168201D02*
|
||||
D03*
|
||||
X181980D02*
|
||||
D03*
|
||||
X140642D02*
|
||||
D03*
|
||||
X126862D02*
|
||||
D03*
|
||||
D53*
|
||||
X230921Y-40224D02*
|
||||
D03*
|
||||
X250921D02*
|
||||
D03*
|
||||
D54*
|
||||
X165921Y-41728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-73224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D55*
|
||||
X165921Y-51728D02*
|
||||
D03*
|
||||
X189421D02*
|
||||
D03*
|
||||
X279921Y-83224D02*
|
||||
D03*
|
||||
X207421D02*
|
||||
D03*
|
||||
D56*
|
||||
X289500Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
X0Y0D02*
|
||||
D03*
|
||||
Y-197000D02*
|
||||
D03*
|
||||
D57*
|
||||
X22000Y-190500D02*
|
||||
D03*
|
||||
Y-60000D02*
|
||||
D03*
|
||||
D58*
|
||||
X32000Y-190500D02*
|
||||
D03*
|
||||
X12000Y-60000D02*
|
||||
D03*
|
||||
D59*
|
||||
X162039Y-174499D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X22039D02*
|
||||
D03*
|
||||
Y-74499D02*
|
||||
D03*
|
||||
X32039D02*
|
||||
D03*
|
||||
X42039D02*
|
||||
D03*
|
||||
X52039D02*
|
||||
D03*
|
||||
X62039D02*
|
||||
D03*
|
||||
X72039D02*
|
||||
D03*
|
||||
X82039D02*
|
||||
D03*
|
||||
X92039D02*
|
||||
D03*
|
||||
X102039D02*
|
||||
D03*
|
||||
X112039D02*
|
||||
D03*
|
||||
X122039D02*
|
||||
D03*
|
||||
X132039D02*
|
||||
D03*
|
||||
X142039D02*
|
||||
D03*
|
||||
X152039D02*
|
||||
D03*
|
||||
D60*
|
||||
X162039D02*
|
||||
D03*
|
||||
M02*
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
*************************************************************
|
||||
FileName = CentralUnit_PCB.GBR
|
||||
AutoAperture = True
|
||||
*************************************************************
|
||||
Generating : Top Layer
|
||||
File : CentralUnit_PCB.GTL
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D10
|
||||
D11
|
||||
D12
|
||||
D13
|
||||
D14
|
||||
D15
|
||||
D16
|
||||
D17
|
||||
D18
|
||||
D19
|
||||
D20
|
||||
D21
|
||||
D22
|
||||
D23
|
||||
D24
|
||||
D25
|
||||
D26
|
||||
D27
|
||||
D28
|
||||
D29
|
||||
D30
|
||||
D31
|
||||
D32
|
||||
D33
|
||||
D34
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Layer
|
||||
File : CentralUnit_PCB.GBL
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D25
|
||||
D26
|
||||
D27
|
||||
D28
|
||||
D29
|
||||
D30
|
||||
D31
|
||||
D32
|
||||
D33
|
||||
D34
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Overlay
|
||||
File : CentralUnit_PCB.GTO
|
||||
|
||||
Adding Layer : Top Overlay
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D35
|
||||
D36
|
||||
D37
|
||||
D38
|
||||
D39
|
||||
D40
|
||||
D41
|
||||
D42
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Paste
|
||||
File : CentralUnit_PCB.GTP
|
||||
|
||||
Adding Layer : Top Paste
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D10
|
||||
D11
|
||||
D12
|
||||
D13
|
||||
D14
|
||||
D15
|
||||
D16
|
||||
D17
|
||||
D18
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Top Solder
|
||||
File : CentralUnit_PCB.GTS
|
||||
|
||||
Adding Layer : Top Solder
|
||||
|
||||
Adding Layer : Top Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D43
|
||||
D44
|
||||
D45
|
||||
D46
|
||||
D47
|
||||
D48
|
||||
D49
|
||||
D50
|
||||
D51
|
||||
D52
|
||||
D53
|
||||
D54
|
||||
D55
|
||||
D56
|
||||
D57
|
||||
D58
|
||||
D59
|
||||
D60
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Solder
|
||||
File : CentralUnit_PCB.GBS
|
||||
|
||||
Adding Layer : Bottom Solder
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D52
|
||||
D53
|
||||
D54
|
||||
D55
|
||||
D56
|
||||
D57
|
||||
D58
|
||||
D59
|
||||
D60
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Paste
|
||||
File : CentralUnit_PCB.GBP
|
||||
|
||||
Adding Layer : Bottom Paste
|
||||
|
||||
Adding Layer : Bottom Layer
|
||||
|
||||
Adding Layer : Multi-Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Bottom Overlay
|
||||
File : CentralUnit_PCB.GBO
|
||||
|
||||
Adding Layer : Bottom Overlay
|
||||
|
||||
|
||||
Used DCodes :
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Keep-Out Layer
|
||||
File : CentralUnit_PCB.GKO
|
||||
|
||||
Adding Layer : Keep-Out Layer
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D41
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Drill Drawing
|
||||
File : CentralUnit_PCB.GD1
|
||||
|
||||
Adding Drill Pair : Top Layer-Bottom Layer
|
||||
|
||||
Adding Layer : Drill Drawing
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D37
|
||||
D39
|
||||
D41
|
||||
D61
|
||||
D62
|
||||
D63
|
||||
D64
|
||||
*************************************************************
|
||||
|
||||
*************************************************************
|
||||
Generating : Drill Guide
|
||||
File : CentralUnit_PCB.GG1
|
||||
|
||||
Adding Drill Pair : Top Layer-Bottom Layer
|
||||
|
||||
Adding Layer : Drill Guide
|
||||
|
||||
|
||||
Used DCodes :
|
||||
D61
|
||||
*************************************************************
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user