Maxim Integrated / OneWire

Dependents:   MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more

Committer:
IanBenzMaxim
Date:
Tue Mar 29 16:36:12 2016 -0500
Revision:
31:7c684e49fa8f
Parent:
30:fdd7a0f82f2f
Child:
40:590791ecac1c
Make compatible with GCC and armclang assemblers.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 31:7c684e49fa8f 1 #define PROC_CLOCK_MHZ 24 // Processor clock in MHz
IanBenzMaxim 31:7c684e49fa8f 2 #define OVERHEAD_TUNING 21 // Fraction where OverheadTime(us) = OVERHEAD_TUNING / PROC_CLOCK_MHZ
IanBenzMaxim 31:7c684e49fa8f 3 // Make PROC_CLOCK_MHZ and OVERHEAD_TUNING divisible by PROC_CYCLES_PER_LOOP for best results
IanBenzMaxim 28:057bb14d3cee 4
IanBenzMaxim 31:7c684e49fa8f 5 #define PIPELINE_REFILL_PROC_CYCLES 1 // ARM specifies 1-3 cycles for pipeline refill following a branch
IanBenzMaxim 31:7c684e49fa8f 6 #define PROC_CYCLES_PER_LOOP (2 + PIPELINE_REFILL_PROC_CYCLES)
IanBenzMaxim 31:7c684e49fa8f 7 #define LOOPS_PER_US (PROC_CLOCK_MHZ / PROC_CYCLES_PER_LOOP) // Number of loop passes for a 1 us delay
IanBenzMaxim 31:7c684e49fa8f 8 #define LOOPS_REMOVED_TUNING (OVERHEAD_TUNING / PROC_CYCLES_PER_LOOP)
IanBenzMaxim 30:fdd7a0f82f2f 9
IanBenzMaxim 31:7c684e49fa8f 10 #if defined TOOLCHAIN_IAR
IanBenzMaxim 30:fdd7a0f82f2f 11 SECTION owlink : CODE
IanBenzMaxim 31:7c684e49fa8f 12 #elif defined TOOLCHAIN_ARM_STD
IanBenzMaxim 29:5c51a17cfbf5 13 AREA owlink, CODE
IanBenzMaxim 31:7c684e49fa8f 14 #else // TOOLCHAIN_GCC_ARM
IanBenzMaxim 31:7c684e49fa8f 15 .syntax unified
IanBenzMaxim 31:7c684e49fa8f 16 .section .text
IanBenzMaxim 30:fdd7a0f82f2f 17 #endif
IanBenzMaxim 28:057bb14d3cee 18
IanBenzMaxim 31:7c684e49fa8f 19 // void ow_usdelay(unsigned int time_us)
IanBenzMaxim 31:7c684e49fa8f 20 #ifdef TOOLCHAIN_GCC_ARM
IanBenzMaxim 31:7c684e49fa8f 21 .thumb_func
IanBenzMaxim 31:7c684e49fa8f 22 .global ow_usdelay
IanBenzMaxim 31:7c684e49fa8f 23 ow_usdelay:
IanBenzMaxim 31:7c684e49fa8f 24 #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD
IanBenzMaxim 29:5c51a17cfbf5 25 EXPORT ow_usdelay
IanBenzMaxim 29:5c51a17cfbf5 26 ow_usdelay
IanBenzMaxim 31:7c684e49fa8f 27 #endif
IanBenzMaxim 28:057bb14d3cee 28 mov R1, #LOOPS_PER_US
IanBenzMaxim 28:057bb14d3cee 29 mul R0, R0, R1
IanBenzMaxim 28:057bb14d3cee 30 sub R0, R0, #LOOPS_REMOVED_TUNING
IanBenzMaxim 31:7c684e49fa8f 31 #ifdef TOOLCHAIN_GCC_ARM
IanBenzMaxim 31:7c684e49fa8f 32 loop:
IanBenzMaxim 31:7c684e49fa8f 33 #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD
IanBenzMaxim 29:5c51a17cfbf5 34 loop
IanBenzMaxim 31:7c684e49fa8f 35 #endif
IanBenzMaxim 28:057bb14d3cee 36 subs R0, R0, #1
IanBenzMaxim 28:057bb14d3cee 37 bne loop
IanBenzMaxim 28:057bb14d3cee 38 bx R14
IanBenzMaxim 28:057bb14d3cee 39
IanBenzMaxim 31:7c684e49fa8f 40 #ifdef TOOLCHAIN_GCC_ARM
IanBenzMaxim 31:7c684e49fa8f 41 .end
IanBenzMaxim 31:7c684e49fa8f 42 #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD
IanBenzMaxim 31:7c684e49fa8f 43 END
IanBenzMaxim 31:7c684e49fa8f 44 #endif