打印

RPM sensor转速传感器程序终于弄出来 和大家分享一下

[复制链接]
2123|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thinkingpadcui|  楼主 | 2011-3-17 23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RPM sensor转速传感器程序终于弄出来,电路图加上程序弄了我一个月的时间,下面把代码个大家看看。测速范围为1-1000转permin。
#include "stm8s103f.h"
#include "math.h"
#define N 256
int *pdata;
int cunt=0;  
int AD_buf[N];
double sum;
int flag;

void output(int data)
{/*数据处理和输出*/
volatile int average;
volatile int mid1;
volatile int mid2;

average=sum/256;
mid1=average+5;
mid2=average-5;
if(*pdata>mid1)
PA_ODR=0x08;
else if(*pdata<mid2)
PA_ODR=0x00;

sum=sum+data-*pdata;
pdata++;
if(pdata==(AD_buf+N))
pdata=AD_buf;
}


void filter(int data)
{/*第一次采满256个样*/

AD_buf[cunt++]=data;
sum+=data;
if(cunt==N)
{
pdata=AD_buf;
flag=1;
}
}

@far @interrupt void TIM1_UPD_OVF_IRQHandler (void)
{
volatile unsigned char j;
volatile  int AD_Value;
TIM1_SR1 = 0x00;  
ADC_CR1 |= 0x01; /*开启AD*/
                                   
    j = 6;                                            
  while(j--) /*AD要等待7us重启*/

    ADC_CR1 |= 0x01;                                    
  while(!(ADC_CSR & 0x80));     /*等待一次采样完成*/
                     
AD_Value = ((((unsigned int)ADC_DRH)<<2)+ADC_DRL);
if(flag==1)
output(AD_Value);
else filter(AD_Value);
}
            
void CLK_Init(void)
{ /*时钟初始化*/

CLK_CKDIVR = 0x08;         
}

void GPIO_Init(void)
{/*设置PA3口为数据输出口*/
  PA_DDR = 0x08;
  PA_CR1 = 0x08;              
  PA_CR2 = 0x00;
}

void ADC_Init(void)
{/*AD初始化*/

  CLK_PCKENR2 |=0X8;
    ADC_CR2  |= 0x00;
    ADC_CR1  = 0x00;
    ADC_CSR  = 0x04;
    ADC_TDRL = 0x20;
}

void TIM1_init(void)
{ /*定时器控制采样时间,一次采样时间为125us*/
  TIM1_PSCRH = 0x00;  
  TIM1_PSCRL = 0xF9;   
  TIM1_ARRH = 0x00;   
  TIM1_ARRL = 0x01;  
  TIM1_CR1 = 0x01;  
TIM1_IER = 0x01;   
}

void main(void)
{ /*硬件初始化*/
_asm("sim");   
CLK_Init();
GPIO_Init();
ADC_Init();
TIM1_init();
_asm("rim");                 
while(1)
{

}
}
这是本人第一次用STM8做的一个测转速的代码,大家互相学习一下。
沙发
hsbjb| | 2011-3-18 11:13 | 只看该作者
分享楼主的成功,楼主继续努力

使用特权

评论回复
板凳
秋天落叶| | 2011-3-18 16:20 | 只看该作者
楼主弄了一个月的时间,估计走了不少弯路

使用特权

评论回复
地板
thinkingpadcui|  楼主 | 2011-3-23 13:43 | 只看该作者
3# 秋天落叶 是的,没有用过STM8  刚用STM8 就做了这个

使用特权

评论回复
5
thinkingpadcui|  楼主 | 2011-3-23 13:44 | 只看该作者
2# hsbjb 互相学习

使用特权

评论回复
6
baidudz| | 2011-3-23 18:06 | 只看该作者
不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

42

帖子

1

粉丝