view delay.c @ 16:db6011aa94d6

Use new delay routine on pin 2 so it doesn't interfere with 1 wire.
author Daniel O'Connor <darius@dons.net.au>
date Wed, 14 Nov 2012 12:30:05 +1030
parents 891841f5f785
children a38003b97de6
line wrap: on
line source

#include <stdint.h>
#include "stm32f10x.h"
#include "delay.h"

/* Sleep for nCount usec
 * TDS1012 on 2.5usec/div shows...
 *   30usec = 29.60usec 
 *   60usec = 59.20usec 
 *
 * XXX: not sure disable IRQ stuff is working as I see occasional (small) extra delays
 */
void
delay(uint32_t nCount) {
    __disable_irq();
    for(; nCount != 0; nCount--) {
#ifdef SYSCLK_FREQ_72MHz
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");

	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
	__asm__("nop");
#else
#error Unknown clock frequency
#endif
    }
    __enable_irq();
}