Skip to content

Commit dfcdc32

Browse files
authored
Merge pull request #3 from harp-tech/as-core-update-1.13
Update core to 1.13
2 parents ae5b97c + 7665e7a commit dfcdc32

12 files changed

+194
-24
lines changed

Firmware/.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Visual studio files
2+
.vs
3+
.suo
4+
.nuget
5+
bin
6+
obj
7+
Debug
8+
packages
9+
*.componentinfo.xml

Firmware/CameraController/CameraController.cppproj

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup>
44
<SchemaVersion>2.0</SchemaVersion>
5-
<ProjectVersion>6.2</ProjectVersion>
5+
<ProjectVersion>7.0</ProjectVersion>
66
<ToolchainName>com.Atmel.AVRGCC8.CPP</ToolchainName>
77
<ProjectGuid>{4699b3b7-8e6c-4ba9-9926-134793d51fda}</ProjectGuid>
88
<avrdevice>ATxmega64A4U</avrdevice>
@@ -27,16 +27,16 @@
2727
<BootSegment>2</BootSegment>
2828
<eraseonlaunchrule>0</eraseonlaunchrule>
2929
<AsfFrameworkConfig>
30-
<framework-data xmlns="">
31-
<options />
32-
<configurations />
33-
<files />
34-
<documentation help="" />
35-
<offline-documentation help="" />
36-
<dependencies>
37-
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.21.0" />
38-
</dependencies>
39-
</framework-data>
30+
<framework-data>
31+
<options />
32+
<configurations />
33+
<files />
34+
<documentation help="" />
35+
<offline-documentation help="" />
36+
<dependencies>
37+
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.42.0" />
38+
</dependencies>
39+
</framework-data>
4040
</AsfFrameworkConfig>
4141
<avrtool>com.atmel.avrdbg.tool.atmelice</avrtool>
4242
<avrtoolinterface>PDI</avrtoolinterface>
@@ -51,10 +51,13 @@
5151
<ToolNumber>J41800031896</ToolNumber>
5252
<ToolName>Atmel-ICE</ToolName>
5353
</com_atmel_avrdbg_tool_atmelice>
54+
<ResetRule>0</ResetRule>
55+
<EraseKey />
5456
</PropertyGroup>
5557
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
5658
<ToolchainSettings>
5759
<AvrGccCpp>
60+
<avrgcc.common.Device>-mmcu=atxmega64a4u -B "%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\gcc\dev\atxmega64a4u"</avrgcc.common.Device>
5861
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
5962
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
6063
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
@@ -67,6 +70,11 @@
6770
<Value>NDEBUG</Value>
6871
</ListValues>
6972
</avrgcc.compiler.symbols.DefSymbols>
73+
<avrgcc.compiler.directories.IncludePaths>
74+
<ListValues>
75+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
76+
</ListValues>
77+
</avrgcc.compiler.directories.IncludePaths>
7078
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
7179
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
7280
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
@@ -78,6 +86,11 @@
7886
<Value>NDEBUG</Value>
7987
</ListValues>
8088
</avrgcccpp.compiler.symbols.DefSymbols>
89+
<avrgcccpp.compiler.directories.IncludePaths>
90+
<ListValues>
91+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
92+
</ListValues>
93+
</avrgcccpp.compiler.directories.IncludePaths>
8194
<avrgcccpp.compiler.optimization.level>Optimize for size (-Os)</avrgcccpp.compiler.optimization.level>
8295
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
8396
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
@@ -86,19 +99,27 @@
8699
<ListValues>
87100
<Value>libm</Value>
88101
<Value>libATxmega64A4U-1.4.a</Value>
102+
<Value>libATxmega64A4U-1.13.a</Value>
89103
</ListValues>
90104
</avrgcccpp.linker.libraries.Libraries>
91105
<avrgcccpp.linker.libraries.LibrarySearchPaths>
92106
<ListValues>
93107
<Value>C:\Users\Filipe Carvalho\Documents\BitBucket\Device.CameraController\Firmware\CameraController</Value>
108+
<Value>C:\Users\Artur\Documents\GitHub\device.cameracontroller\Firmware\CameraController</Value>
94109
</ListValues>
95110
</avrgcccpp.linker.libraries.LibrarySearchPaths>
111+
<avrgcccpp.assembler.general.IncludePaths>
112+
<ListValues>
113+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
114+
</ListValues>
115+
</avrgcccpp.assembler.general.IncludePaths>
96116
</AvrGccCpp>
97117
</ToolchainSettings>
98118
</PropertyGroup>
99119
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
100120
<ToolchainSettings>
101121
<AvrGccCpp>
122+
<avrgcc.common.Device>-mmcu=atxmega64a4u -B "%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\gcc\dev\atxmega64a4u"</avrgcc.common.Device>
102123
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
103124
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
104125
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
@@ -111,6 +132,11 @@
111132
<Value>DEBUG</Value>
112133
</ListValues>
113134
</avrgcc.compiler.symbols.DefSymbols>
135+
<avrgcc.compiler.directories.IncludePaths>
136+
<ListValues>
137+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
138+
</ListValues>
139+
</avrgcc.compiler.directories.IncludePaths>
114140
<avrgcc.compiler.optimization.level>Optimize most (-O3)</avrgcc.compiler.optimization.level>
115141
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
116142
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
@@ -123,6 +149,11 @@
123149
<Value>DEBUG</Value>
124150
</ListValues>
125151
</avrgcccpp.compiler.symbols.DefSymbols>
152+
<avrgcccpp.compiler.directories.IncludePaths>
153+
<ListValues>
154+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
155+
</ListValues>
156+
</avrgcccpp.compiler.directories.IncludePaths>
126157
<avrgcccpp.compiler.optimization.level>Optimize most (-O3)</avrgcccpp.compiler.optimization.level>
127158
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
128159
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
@@ -131,14 +162,19 @@
131162
<avrgcccpp.linker.libraries.Libraries>
132163
<ListValues>
133164
<Value>libm</Value>
134-
<Value>libATxmega64A4U-1.4.a</Value>
165+
<Value>libATxmega64A4U-1.13.a</Value>
135166
</ListValues>
136167
</avrgcccpp.linker.libraries.Libraries>
137168
<avrgcccpp.linker.libraries.LibrarySearchPaths>
138169
<ListValues>
139-
<Value>C:\Users\Filipe Carvalho\Documents\BitBucket\Device.CameraController\Firmware\CameraController</Value>
170+
<Value>..</Value>
140171
</ListValues>
141172
</avrgcccpp.linker.libraries.LibrarySearchPaths>
173+
<avrgcccpp.assembler.general.IncludePaths>
174+
<ListValues>
175+
<Value>%24(PackRepoDir)\atmel\XMEGAA_DFP\1.2.141\include\</Value>
176+
</ListValues>
177+
</avrgcccpp.assembler.general.IncludePaths>
142178
<avrgcccpp.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcccpp.assembler.debugging.DebugLevel>
143179
</AvrGccCpp>
144180
</ToolchainSettings>

Firmware/CameraController/app.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ void hwbp_app_initialize(void)
4141
(uint8_t*)(&app_regs),
4242
APP_NBYTES_OF_REG_BANK,
4343
APP_REGS_ADD_MAX - APP_REGS_ADD_MIN + 1,
44-
default_device_name
44+
default_device_name,
45+
false, // The device is _not_ able to repeat the harp timestamp clock
46+
false, // The device is _not_ able to generate the harp timestamp clock
47+
0 // Default timestamp offset
4548
);
4649

4750
}
@@ -243,7 +246,9 @@ void disable_motor1(void)
243246
/************************************************************************/
244247
/* Initialization Callbacks */
245248
/************************************************************************/
246-
void core_callback_1st_config_hw_after_boot(void)
249+
void core_callback_define_clock_default(void) {}
250+
251+
void core_callback_initialize_hardware(void)
247252
{
248253
/* Initialize IOs */
249254
/* Don't delete this function!!! */
@@ -365,6 +370,14 @@ void core_callback_t_new_second(void) { _2000ms_counter = 0; }
365370
void core_callback_t_500us(void) {}
366371
void core_callback_t_1ms(void) {}
367372

373+
/************************************************************************/
374+
/* Callbacks: clock control */
375+
/************************************************************************/
376+
void core_callback_clock_to_repeater(void) {}
377+
void core_callback_clock_to_generator(void) {}
378+
void core_callback_clock_to_unlock(void) {}
379+
void core_callback_clock_to_lock(void) {}
380+
368381
/************************************************************************/
369382
/* Callbacks: uart control */
370383
/************************************************************************/

Firmware/CameraController/cpu.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ void timer_type1_wait(TC1_t* timer, uint8_t prescaler, uint16_t target_count);
142142
/************************************************************************/
143143
/* EEPROM */
144144
/************************************************************************/
145+
bool eeprom_is_busy(void);
146+
145147
uint8_t eeprom_rd_byte(uint16_t addr);
146148
void eeprom_wr_byte(uint16_t addr, uint8_t byte);
147149

@@ -171,6 +173,10 @@ int32_t eeprom_rd_i32(uint16_t addr);
171173
#define PRESCALER_ADC_DIV256 ADC_PRESCALER_DIV256_gc
172174
#define PRESCALER_ADC_DIV512 ADC_PRESCALER_DIV512_gc
173175

176+
void adc_A_initialize_single_ended(uint8_t analog_reference);
177+
int16_t adc_A_read_channel(uint8_t index);
178+
void adc_A_calibrate_offset(uint8_t index);
179+
174180
uint16_t adcA_unsigned_single_ended(ADC_t* adc, uint8_t res, uint8_t ref , uint8_t prescaler, uint8_t adc_pin, TC0_t* timer);
175181

176182
#endif /* _CPU_1V1_H_ */

Firmware/CameraController/hwbp_core.h

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ typedef struct {
1818
uint16_t usecond;
1919
} timestamp_t;
2020

21+
// Used to define the clock direction default of the device.
22+
void core_callback_define_clock_default(void);
23+
2124
// It's the first callback used, right after booting the core.
2225
// The pins, ports and external hardware should be initialized.
23-
void core_callback_1st_config_hw_after_boot(void);
26+
void core_callback_initialize_hardware(void);
2427

2528
// Used to initialize the registers.
2629
// All registers should be written to their default state.
@@ -43,7 +46,6 @@ void core_callback_device_to_active(void);
4346
void core_callback_device_to_speed(void);
4447

4548

46-
4749
// Called before execute the timer interrupts
4850
void core_callback_t_before_exec(void);
4951
// Called after execute the timer interrupts
@@ -57,7 +59,6 @@ void core_callback_t_500us(void);
5759
void core_callback_t_new_second(void);
5860

5961

60-
6162
// Read from an application register.
6263
bool core_read_app_register(uint8_t add, uint8_t type);
6364
// Write to an application register.
@@ -68,6 +69,48 @@ bool hwbp_read_common_reg(uint8_t add, uint8_t type);
6869
bool hwbp_write_common_reg(uint8_t add, uint8_t type, uint8_t * content, uint16_t n_elements);
6970

7071

72+
/************************************************************************/
73+
/* Register RESET_APP */
74+
/************************************************************************/
75+
// Write to common register RESET_APP.
76+
bool hwbp_write_common_reg_RESET_APP(void *a);
77+
78+
// Used to save all registers to non-volatile memory
79+
bool core_save_all_registers_to_eeprom(void);
80+
81+
82+
/************************************************************************/
83+
/* Register CONFIG */
84+
/************************************************************************/
85+
// Write to common register CONFIG.
86+
bool hwbp_write_common_reg_CONFIG(void *a);
87+
// Read from common register CONFIG.
88+
void hwbp_read_common_reg_CONFIG(void);
89+
90+
// Called when the application should configure the hardware to repeat the harp timestamp clock input.
91+
void core_callback_clock_to_repeater(void);
92+
// Called when the application should configure the hardware to generate the harp timestamp clock.
93+
void core_callback_clock_to_generator(void);
94+
// Called when the timestamp lock is changed to unlocked.
95+
void core_callback_clock_to_unlock(void);
96+
// Called when the timestamp lock is changed to locked.
97+
void core_callback_clock_to_lock(void);
98+
99+
// Used to know if the device is repeating the harp timestamp clock
100+
bool core_bool_device_is_repeater(void);
101+
// Used to know if the device is generating the harp timestamp clock
102+
bool core_bool_device_is_generator(void);
103+
// Used to check if the timestamp register is locked
104+
bool core_bool_clock_is_locked(void);
105+
106+
// Used to set the device as a repeater
107+
bool core_device_to_clock_repeater(void);
108+
// Used to set the device as a generator
109+
bool core_device_to_clock_generator(void);
110+
// Used to lock the timestamp register
111+
bool core_clock_to_lock(void);
112+
// Used to unlock the timestamp register
113+
bool core_clock_to_unlock(void);
71114

72115

73116
// It is mandatory that this function is the first of the application code.
@@ -81,7 +124,11 @@ void core_func_start_core (
81124
uint8_t *pointer_to_app_regs,
82125
const uint16_t app_mem_size_to_save,
83126
const uint8_t num_of_app_registers,
84-
const uint8_t *device_name);
127+
const uint8_t *device_name,
128+
const bool device_is_able_to_repeat_clock,
129+
const bool device_is_able_to_generate_clock,
130+
const uint8_t default_timestamp_offset
131+
);
85132

86133
// Call this function in case of error
87134
// A power up or reset must be performed to remove the device from this state
@@ -113,6 +160,7 @@ uint16_t core_func_read_R_TIMESTAMP_MICRO(void);
113160

114161

115162

163+
116164
// Return "true" if the LEDs can be ON.
117165
bool core_bool_is_visual_enabled(void);
118166
// Return "true" if the device is in Speed Mode.

Firmware/CameraController/hwbp_core_regs.h

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,21 @@
1010
#define ADD_R_HW_VERSION_H 0x01 // U8
1111
#define ADD_R_HW_VERSION_L 0x02 // U8
1212
#define ADD_R_ASSEMBLY_VERSION 0x03 // U8
13-
#define ADD_R_HARP_VERSION_H 0x04 // U8
14-
#define ADD_R_HARP_VERSION_L 0x05 // U8
13+
#define ADD_R_CORE_VERSION_H 0x04 // U8
14+
#define ADD_R_CORE_VERSION_L 0x05 // U8
1515
#define ADD_R_FW_VERSION_H 0x06 // U8
1616
#define ADD_R_FW_VERSION_L 0x07 // U8
1717
#define ADD_R_TIMESTAMP_SECOND 0x08 // U32
1818
#define ADD_R_TIMESTAMP_MICRO 0x09 // U16
1919
#define ADD_R_OPERATION_CTRL 0x0A // U8
2020
#define ADD_R_RESET_DEV 0x0B // U8
2121
#define ADD_R_DEVICE_NAME 0x0C // U8
22+
#define ADD_R_SERIAL_NUMBER 0x0D // U16
23+
#define ADD_R_CONFIG 0x0E // U8
24+
#define ADD_R_TIMESTAMP_OFFSET 0x0F // U8
2225

2326
/* Memory limits */
24-
#define COMMON_BANK_ADD_MAX 0x0C
27+
#define COMMON_BANK_ADD_MAX 0x0F
2528
#define COMMON_BANK_ABSOLUTE_ADD_MAX 0x1C
2629

2730
/* R_OPERATION_CTRL */
@@ -43,8 +46,19 @@
4346

4447
#define B_SAVE (1<<2)
4548

49+
#define B_NAME_TO_DEFAULT (1<<3)
50+
4651
#define B_BOOT_DEF (1<<6)
4752
#define B_BOOT_EE (1<<7)
4853

54+
/* ADD_R_CONFIG */
55+
#define B_CLK_REP (1<<0)
56+
#define B_CLK_GEN (1<<1)
57+
#define B_CLK_SAVE (1<<2)
58+
#define B_REP_ABLE (1<<3)
59+
#define B_GEN_ABLE (1<<4)
60+
#define B_CLK_UNLOCK (1<<6)
61+
#define B_CLK_LOCK (1<<7)
62+
4963

5064
#endif /* _HWBP_CORE_REGS_H_ */

Firmware/CameraController/hwbp_core_types.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
#define MSK_TIMESTAMP_AT_PAYLOAD 0x10
2727

2828
/************************************************************************/
29-
/* Maximum size of an entire packet (header to chksum) */
29+
/* Maximum size of a received packet */
3030
/************************************************************************/
31-
#define MAX_PACKET_SIZE 256
31+
#define MAX_PACKET_SIZE 255
3232

3333

3434
#endif /* _HWBP_CORE_TYPES_H_ */

0 commit comments

Comments
 (0)