Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more
OneWire_Masters/GPIO/owlink.s
- Committer:
- IanBenzMaxim
- Date:
- 2016-04-06
- Revision:
- 46:afe466c96069
- Parent:
- 40:590791ecac1c
- Child:
- 52:4cba20c21941
File content as of revision 46:afe466c96069:
#define PROC_CLOCK_MHZ (__SYSTEM_HFX / 1000000) // Processor clock in MHz #define OVERHEAD_TUNING 21 // Fraction where OverheadTime(us) = OVERHEAD_TUNING / PROC_CLOCK_MHZ // Make PROC_CLOCK_MHZ and OVERHEAD_TUNING divisible by PROC_CYCLES_PER_LOOP for best results #define PIPELINE_REFILL_PROC_CYCLES 1 // ARM specifies 1-3 cycles for pipeline refill following a branch #define PROC_CYCLES_PER_LOOP (2 + PIPELINE_REFILL_PROC_CYCLES) #define LOOPS_PER_US (PROC_CLOCK_MHZ / PROC_CYCLES_PER_LOOP) // Number of loop passes for a 1 us delay #define LOOPS_REMOVED_TUNING (OVERHEAD_TUNING / PROC_CYCLES_PER_LOOP) // LABEL macro #ifdef TOOLCHAIN_GCC_ARM #define LABEL(x) x: #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD #define LABEL(x) x #endif // EXPORT_LABEL macro #ifdef TOOLCHAIN_GCC_ARM #define EXPORT_LABEL(x) .global x #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD #define EXPORT_LABEL(x) EXPORT x #endif // THUMB_FUNC macro #ifdef TOOLCHAIN_GCC_ARM #define THUMB_FUNC .thumb_func #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD #define THUMB_FUNC #endif #if defined TOOLCHAIN_IAR SECTION owlink : CODE #elif defined TOOLCHAIN_ARM_STD AREA owlink, CODE #else // TOOLCHAIN_GCC_ARM .syntax unified .section .text #endif // void ow_usdelay(unsigned int time_us) THUMB_FUNC EXPORT_LABEL(ow_usdelay) LABEL(ow_usdelay) cmp R0, #0 // Return if time_us equals zero beq return mov R1, #LOOPS_PER_US mul R0, R0, R1 sub R0, R0, #LOOPS_REMOVED_TUNING LABEL(loop) subs R0, R0, #1 bne loop LABEL(return) bx R14 #ifdef TOOLCHAIN_GCC_ARM .end #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD END #endif