avr16 颜色传感器-颜色传感器白平衡调试问题

问题描述

颜色传感器白平衡调试问题

程序功能:AVR外部信号采集处理,使用PB0引脚口。选通不同颜色,用T2来计算PB0口256个上升沿的时间。
#ifndef COLOR_H
#define COLOR_H
#endif

#define S0 0
#define S1 1
#define S2 2
#define S3 3
#define LED 4
#define OUT 0

static volatile unsigned int timer=0;
static volatile unsigned int GC=0,BC=0,RC=0;//
static volatile char i=0;
unsigned char j=0;

volatile unsigned int rx=0,gx=0,bx=0;

//PA0 PA1 PA2 PA3 PA4 PB0
//S0 S1 S2 S3 LED OUT

//S3 S2

//0 0 红(R)
//1 1 绿(G)
//1 0 蓝(B)
//0 1 无
void Color_Mode(unsigned char color)
{
if(color=='R')//将滤波选择为红色,即S3:S2=0:0
{
PORTA &=~((1<<S3)|(1<<S2));
}
else if(color=='G')//将滤波选择为绿色,即S3:S2=1:1
{
PORTA |=(1<<S3)|(1<<S2);
}
else if(color=='B')//将滤波选择为蓝色,即S3:S2=1:0
{
PORTA |=(1<<S3);
PORTA &=~(1<<S2);
}
else if(color=='W')//将滤波选择为无色,即S3:S2=0:1
{
PORTA &=~(1<<S3);
PORTA |=(1<<S2);
}
}
void Color_IoInit()//将传感器的S0,S1,S2,S3和LED引脚设置成输出高电平形式
{ //OUT设置成带上拉电阻的输入模式
DDRA |=(1<<LED)|(1<<S3)|(1<<S2)|(1<<S1)|(1<<S0);
PORTA |=(1<<S2)|(1<<S1)|(1<<S0);//将S1和S0口设置成高电平输出
//选择输出比例因子为100%,
PORTA &=~(1<<LED);//将LED口设置成低电平输出,即点亮LED灯。
PORTA &=~(1<<S3);//S3:S2=0:1,设置成滤波类型:无

DDRB    &=~(1<<OUT);//
PORTB   |=(1<<OUT);//设置成带上拉电阻的输入

}
void Color_Timer02Init(void)
{
//将定时器0设置成外部脉冲输入模式PB0为外部脉冲输入引脚
TIMSK|=(1<<TOIE0);//T0中断使能
TCCR0|=(1<<CS02)|(1<<CS01)|(1<<CS00);//将TCCR0的第三位全部设置成1,上升沿有效
TCNT0=0;//将计数器初始化为0

//开启定时器2
//不分频,定时器自加1,需要时间:1/7.3728=0.13563368
//一个周期256*1/7.3728=34.7222222us=0.0347222ms
TCCR2|=(0<<CS22)|(0<<CS21)|(1<<CS20);
TIMSK|=(1<<TOIE2);//T2中断使能

TCNT2=0X00;//八位定时器
sei();

}

//定时器2溢出中断
ISR(TIMER2_OVF_vect)
{
timer++;

}
//计数器0计数溢出中断
ISR(TIMER0_OVF_vect)
{
if((PORTA&0X0C)==0X00)//选择滤红色
{
RC=timer*34.7222;
Color_Mode('G');//选择滤绿色波
i=0;
}
else if((PORTA&0X0C)==0X0C)//选择滤绿色
{
GC=timer*34.7222;
Color_Mode('B');//选择滤蓝色波
i=0;
}

else if((PORTA&0X0C)==0X08)//选择滤蓝色
{
BC=timer*34.7222;
Color_Mode('R');//选择滤红色波
i=1;//已经全部记录下所有256个周期长度时间
//转换完后,关闭溢出中断使能
TIMSK&=~(1<<TOIE0);
TIMSK&=~(1<<TOIE2);
TCCR0&=~(1<<CS02)|(1<<CS01)|(1<<CS00);
TCCR2&=~((1<<CS22)|(1<<CS21)|(1<<CS20));
}
else if((PORTA&0X0C)==0X04)//没有滤波,将选择滤绿色
{
Color_Mode('R');//选择滤红色波
i=0;
}
timer=0;
TCNT2=0;
TCNT0=0;
}
void Color_CatchValue()
{
if(i==1)
{
i=0;
rx=RC;
gx=GC;
bx=BC;

    printf("rx=%dn",rx);
    printf("gx=%dn",gx);
    printf("bx=%dn",bx);

    TIMSK|=(1<<TOIE0);//T0中断使能
    TIMSK|=(1<<TOIE2);//T2中断使能
    TCCR0|=(1<<CS02)|(1<<CS01)|(1<<CS00);
    TCCR2|=(0<<CS22)|(0<<CS21)|(1<<CS20);
}

}

#include
#include
#include"uart.h"
#include
#include"util/delay.h"
#include"color.h"

int main(void)
{
UartInit();
Color_IoInit();
Color_Timer02Init();
printf("it is running");
while(1)
{
Color_CatchValue();
}
return 0;
}
结果显示:
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833
bx=659
rx=0
gx=833

结果分析:
当T0中断产生,第一个if语句中的timer总是为0,即使改变if顺序也是如此。求解释。

解决方案

一起讨论,一起学习。

解决方案二:

一起讨论,一起学习。

解决方案三:

一起讨论,一起学习。

解决方案四:

问题已解决
ISR(TIMER0_OVF_vect)
{
......
TCCR0&=~((1<<CS02)|(1<<CS01)|(1<<CS00));
......
}
少加了一个括号

时间: 2024-10-22 17:25:05

avr16 颜色传感器-颜色传感器白平衡调试问题的相关文章

Android 传感器--光照传感器详解及使用_Android

Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化.当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛. 起着这样作用,Android是通过一款光照传感器来获取你周围环境亮度的变化.光照传感器一般在手机的顶部的位置. 要在程序中使用这款传感器 (1)首先要获取SensorManager传感器管理器服务:SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERV

佳能1200D传感器及传感器尺寸解析分享

给各位摄影爱好者们来详细的解析分享一下佳能1200D的传感器以及传感器的尺寸. 解析分享: 传感器 佳能1200D采用了约1800万像素APS-C画幅影像传感器.   传感器尺寸 佳能1200D传感器尺寸是22.3×14.9mm. 好了,以上的信息就是小编给各位摄影爱好者们带来的详细的佳能1200D的传感器以及传感器的尺寸解析分享的全部内容了,各位看到这里的玩家们,小编相信大家现在那是非常的清楚传感器的问题了吧,希望小编解析的内容能够给各位摄影爱好者们打去有用的帮助.

计算机中的颜色XIII——颜色转换的快速计算公式

本文的公式的基础都是在前文的基础上的.详情请参看前文: 计算机中的颜色I--颜色概述 计算机中的颜色II--VB2005中的Color结构 计算机中的颜色III--HSV表示方法 计算机中的颜色IV--纯色.色相色 计算机中的颜色V--快速计算颜色的色相值 计算机中的颜色VI--从色相值到纯色的快速计算 计算机中的颜色VII--快速计算纯色的偏转 计算机中的颜色VIII--快速计算颜色的偏转 计算机中的颜色IX--总述:RGB和HSV快速转换 计算机中的颜色X--两颜色的偏转值 计算机中的颜色X

一文让你读懂全球第三的传感器——霍尔传感器的特性和用途

霍尔传感器是全球排名第三的传感器产品,它被广泛应用到工业.汽车业.电脑.手机以及新兴消费电子领域. 未来几年,随着越来越多的汽车电子和工业设计企业转移到中国,霍尔传感器在中国市场的年销售额将保持20%到30%的高速增长. 与此同时,霍尔传感器的相关技术仍在不断完善中,可编程霍尔传感器.智能化霍尔传感器以及微型霍尔传感器将有更好的市场前景. 什么是霍尔效应? 霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855-1938)于1879年在研究金属的导电机构时发现的. 后来发现半导体.

苹果iPhone7有几种颜色,iPhone7颜色有多少种

苹果iPhone7有几种颜色 相比iPhone6s,新一代iPhone7新增黑色.亮黑色,取消了太空灰色,这样的话我们就知道iPhone7拥有黑色,银色,金色,玫瑰金,亮黑色五种颜色,每个颜色版本都十分漂亮 如果不知道iPhone7颜色哪个好看

计算机中的颜色I——颜色概述

无论是设计网页还是编写程序,一个美观的界面是必不可少的.仔细分析界面的构成,无外乎两个因素:一是颜色.一个是形状.这个又被称为UI设计.美术功底好的人,是能设计出让人赏心悦目的界面来,欠缺美术功底的人,有时费尽心思也没辙. 这个系列的文章,专注于计算机的颜色表示.通过了解计算机的颜色表示,能有助于提高那些欠缺美术功底的人设计界面的能力. 计算机中的颜色是采用RGB颜色系统,也就是每种颜色采用红.绿.蓝三种分量.每个颜色分量的取值从0到255,一共有256种可能.则计算机中所能表示的颜色为256×

传感器翘楚弄潮物联网 艾迈斯将持续发力深耕中国市场

感知是物联网的先行技术,没有感知,就无法得到人或物的特征数据,也就没有了物联网的信息基础.而在物联网的感知技术中,传感器技术最为关键,它是构建"物联"概念的硬件"细胞".传感器作为物联网采集信息的终端工具,就如同是物联网的"触手",将迎来巨大的发展空间. 行业数据显示,中国物联网产业年复合增长率已经超过25%,从2009年的1700亿元跃升至2015年超过了7500亿元,其中传感器和无线射频识别市场规模分别接近1000亿元和373亿元,机器到机器

多传感器:帮助企业在IoT时代实现差异化

今年年初,Gartner预测2016年,物联网(IoT) 将成为这么多行业的主流应用."实际上,从2016年开始,物联网计划和流程就成为企业市场的竞争性武器," Gartner副总裁兼杰出分析师Jim Tully表示. 事实上,现在我们也的确看到了,经过一年的发展,IoT已经吸引的越来越多的企业的关注.同时,由于半导体制造商已经准备好迎接 IoT产品发布,和客户参与的冲击,这将预示着2017年物联网(IoT)很有可能迎来爆炸式的增长. 传感器IoT的神经系统 物联网这一概念最初叫传感网

【ANDROID游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SURFACEVIEW中用重力传感器控制圆球的各方向移动)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/344.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读: