搜索
bottom↓
回复: 3

调试,mega88,三个触摸键,逻辑出错

[复制链接]

出0入0汤圆

发表于 2010-2-6 18:34:01 | 显示全部楼层 |阅读模式
问题如下:三个触摸键,下载了该程序,三个键,触摸有效,但很快就乱了,我是用一个IO脚PC2连接LED灯看效果,一段时间后LED快速闪个不停,那时候
触摸又失效了
源程序如下:
#ifndef _QTOUCH_

#define _QTOUCH_

#define QT_NUM_CHANNELS 8
#define QT_MAX_NUM_ROTORS_SLIDERS 2
#define _ROTOR_SLIDER_
#define SNSK B    //B
#define SNS  D    //D
#define QT_DELAY_CYCLES 1 //10

//_QTOUCH_
#endif

#include<avr\io.h>
#include<avr\interrupt.h>
#include<touch_api.h>
#include"_QTOUCH_.h"



//unsigned char key_test_flag1=0;
//unsigned char key_test_flag2=0;


unsigned int hw_time_ms;
volatile unsigned char qt_measure_flag;//检测标志,全局变量  
volatile qt_touch_status_t qt_touch_status;

//unsigned char test_time;

void delay(unsigned char m)
{
static unsigned char i,j,k;
for(i=0;i<m;i++)
   {
    for(j=0;j<200;j++)
   {
       for(k=0;k<200;k++);
       }
   }
}
SIGNAL(SIG_OVERFLOW1)
{
TCNT1H=0xFF;
TCNT1L=0xaa;//0x83
hw_time_ms++;
qt_measure_flag=1;
// test_time++;

}


void port_init(void)
{

MCUCR|=(1<<PUD);

DDRC=0xFF;
PORTC=0xFF;
// PORTC&=~(1<<PC0);
// PORTC&=~(1<<PC1);
// PORTC&=~(1<<PC5);
PORTC&=~(1<<PC2);
}

void timer1_init(void)
{
TCNT1H=0xFF;
TCNT1L=0xaa;//0x83
TCCR1B|=(1<<CS11)|(1<<CS10);
}

void int_ctrl(void)
{
sei();
TIMSK1|=(1<<TOIE1);
}

void sys_init(void)
{
port_init();
timer1_init();
int_ctrl();
hw_time_ms=0;
}
void channel_1()
{

if(qt_measure_data.qt_touch_status.sensor_states[0]&0x01)
   {

              
             PORTC|=(1<<PC2);
   
  
   //PORTC|=(1<<PC0);
   }

}

void channel_2()

{

       if(qt_measure_data.qt_touch_status.sensor_states[0]&0x02)
   {

     PORTC&=~(1<<PC2);
   //PORTC|=(1<<PC2);
            
   
   //PORTC|=(1<<PC1);
   
   }

}


void channel_3()
{
if(qt_measure_data.qt_touch_status.sensor_states[0]&0x04)
   {

           PORTC&=~(1<<PC2);
   //PORTC|=(1<<PC2);
            

   //PORTC|=(1<<PC5);
   }

}

int main(void)
{
sys_init();
qt_reset_sensing();
qt_enable_key(CHANNEL_0, NO_AKS_GROUP, 10, HYST_25);
// qt_enable_key(CHANNEL_2, AKS_GROUP_1, RECAL_12_5, HYST_6_25);
qt_enable_key(CHANNEL_4, NO_AKS_GROUP, 10, HYST_25);
qt_enable_key(CHANNEL_2, NO_AKS_GROUP, 10, HYST_25);//HYST_25
qt_init_sensing();

while(1)
{
       if(qt_measure_flag)
   {
     
qt_measure_flag=0;
qt_measure_sensors(hw_time_ms);
//hw_time_ms=0;

        channel_1();
channel_2();
channel_3();
        //delay(100);
        }
}
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-2-8 12:00:03 | 显示全部楼层
今天调试,3.3V比较正常,5V的情况下,极其不稳定,不知道原因

出0入0汤圆

发表于 2010-3-16 15:56:38 | 显示全部楼层
什么原理里,电容式的?

出0入0汤圆

发表于 2010-4-2 09:10:39 | 显示全部楼层
用的是AVR哪一款的单片机的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 16:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表