daxingdev 发表于 2011-7-21 16:18:39

按键能检测到方波,但不能被读取

我用的是ATMEGA16L,GCC+AVR Studio4.17. LIB3.0的库
试验中PA4接SNSK,PC4接SNS,PC0接LED
代码如下
#define _QTOUCH_
#define QT_NUM_CHANNELS 8
//#define QT_MAX_NUM_ROYORS_SLIDERS 2
//#define _ROTOR_SLIDER_
#define SNSK A
#define SNS C
#define QT_DELAY_CYCLES 5

#include"avr\io.h"
#include"avr\interrupt.h"
#include"touch_api.h"


#define uchar unsigned char
#define uintunsigned int
volatile unsigned int hw_time_ms;
uchar NUM;

void delayms(uint ms)
{
    uint a,b;
        for(a=200;a>0;a--)
        {for(b=ms;b>0;b--);}
}

ISR(TIMER1_OVF_vect)
{
        TCNT1H=0xFF;
        TCNT1L=0x8D;
        hw_time_ms++;
}

void port_init(void)
{
    SFIOR|=(1<<PUD);      //關閉上拉電阻
    DDRC|=(1<<PC0);   
    PORTC|=(1<<PC0);
}

void timer1_init(void)
{
        TCNT1H=0xFF;//1MS
        TCNT1L=0x8D;
        TCCR1B|=(1<<CS11)|(1<<CS10);//F/64
}

void int_ctrl(void)
{
        sei();
        TIMSK|=(1<<TOIE1);
}
void sys_init(void)
{
        port_init();
        timer1_init();
        int_ctrl();
        hw_time_ms=0;
}
void main(void)
{
        delayms(10);       
        sys_init();//系统初始化
        qt_enable_key(CHANNEL_4, NO_AKS_GROUP, 10u, HYST_6_25);
        qt_init_sensing();//按键初始化
        while(1)
        {
               
                qt_measure_sensors(hw_time_ms);
                if(qt_measure_data.qt_touch_status.sensor_states&0x01)
                       
                        PORTC|=(1<<PC0);//LED1灭
                else
                        PORTC&=~(1<<PC0);//LED1亮
        //        if(hw_time_ms==1000)
        //        {PORTC^=0x01;hw_time_ms=0;}
        }
       
}
LED一直亮着的,按键能检测到方波,但是触摸按键没反应,电阻1K,电容22nf

求高手帮助看看是不是程序问题~~~

daxingdev 发表于 2011-7-21 16:23:05

回复【楼主位】daxingdev
-----------------------------------------------------------------------

补充一下:晶振是7.3728MHZ的,程序里定时大概一毫秒
我用的飞线将触摸按键部分跟单片机相连,电阻电容都紧挨着按键铜片,不知道会不会有影响
页: [1]
查看完整版本: 按键能检测到方波,但不能被读取