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-05
- Revision:
- 40:590791ecac1c
- Parent:
- 31:7c684e49fa8f
- Child:
- 46:afe466c96069
File content as of revision 40:590791ecac1c:
#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) #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) #ifdef TOOLCHAIN_GCC_ARM .thumb_func .global ow_usdelay ow_usdelay: #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD EXPORT ow_usdelay ow_usdelay #endif 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 #ifdef TOOLCHAIN_GCC_ARM loop: #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD loop #endif subs R0, R0, #1 bne loop #ifdef TOOLCHAIN_GCC_ARM return: #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD return #endif bx R14 #ifdef TOOLCHAIN_GCC_ARM .end #else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD END #endif