搜索
bottom↓
回复: 19

调试Qwheel的一米米 心的?

[复制链接]
(363256811)

出0入0汤圆

发表于 2009-4-21 17:26:49 | 显示全部楼层 |阅读模式
今天开始调试Qwheel,

代码如下:
#define TICKS_PER_MS          1000u
#define MEASUREMENT_PERIOD_MS 50u


#pragma vector=TIMER1_COMPA_vect
__interrupt void timer_isr( void )
{
   
   static unsigned char n = 0;
   
   n++;
   if (n == MEASUREMENT_PERIOD_MS)
   {
         
        time_to_measure_touch = 1u;

        current_time_ms += MEASUREMENT_PERIOD_MS;
        n = 0;
   }
   
}


void init_timer_isr( void )
{
   /* set timer compare value (how often timer ISR will fire) */
   OCR1A = TICKS_PER_MS;//( TICKS_PER_MS * MEASUREMENT_PERIOD_MS );

   /* enable timer ISR */
   TIMSK1_OCIE1A = 1u;

   /* timer prescaler = system clock / 8 */
   TCCR1B_CS11 = 1u;

   /* timer mode = CTC (count up to compare value, then reset) */
   TCCR1B_WGM12 = 1u;
}


void Timer0Init(void){
         
        TCCR0A = (1<<COM0B1)|(0<<COM0B0)|(1<<WGM01)|(1<<WGM00);
        TCCR0B = (0<<CS02)|(1<<CS01)|(0<<CS00);
        DDRD |= (1<<DDC5);
         
}


unsigned char Result;
unsigned char ResultOne;

int main( void )
{
        MCUCR_PUD = 1u;

        /* set recalibrate time in units of 200ms */
        qt_max_on_duration = (30000 / 200);
         
         
         
        qt_enable_rotor( CHANNEL_0, CHANNEL_2, NO_AKS_GROUP, 16u, HYST_6_25, RES_8_BIT, 0u );
        qt_enable_key( CHANNEL_3, NO_AKS_GROUP, 20u, HYST_6_25 );


        qt_init_sensing();
         
         
        init_timer_isr();
        Timer0Init();
         
         __enable_interrupt();
        while(1){
                if( time_to_measure_touch )
                {
                        
                        time_to_measure_touch = 0u;
                        qt_measure_sensors( current_time_ms );
                        
                        if ((unsigned int)(qt_touch_status.sensor_states) & BIT(1)){
                                ResultOne = 1;
                                //PORTD |=(1<<DDC5);
                        }
                        else{
                                ResultOne = 0;
                                //PORTD &=~(1<<DDC5);
                        }
                        
                        if ((unsigned int)(qt_touch_status.sensor_states) & BIT(0)){
                        
                                Result = qt_touch_status.rotor_slider_values[0];
                                OCR0B = Result;
                        }         
                }
        }
}

现在看来
1、如果使用JTAG MkII仿真器设断点观察qt_touch_status的相关值好像看不到,所以我把读到的值输出,反而看到了。如果使用大家使用断点来观察变量可能会被误导。 也许是我操作上的问题。


我现在遇到的问题:
1、atmel_touch_libraries_rev1.1 中找不到mega88pa的库了,我现在使用的是mega88p的。不知道是否有啥影响?

2、在测试波形是 Wheel的波形幅值能达到4V,而Qkey的仅有1V不到,不知道这个是什么原因?现在Qwheel转一周基本上能检测到,而Qkey是死活检测到?

这个问题我继续查。顺便说一下,现在的波形看起来基本上方波了。

3、还有就是我现在的工作在3.57M晶振下,选择m88p_8qt_BD_c3_krs.r90是否合适?

哎 对不起大家,看来还是经验少,问题多啊!
(363255034)

出0入296汤圆

发表于 2009-4-21 17:56:26 | 显示全部楼层
1、用m88p的库没有什么大问题
2、QKey的问题可能是PCB的问题?
3、用这个库没有问题。
(363244603)

出0入0汤圆

 楼主| 发表于 2009-4-21 20:50:17 | 显示全部楼层
谢谢 傻孩子

您给的demo code中

#include <ioavr.h>
#include <intrinsics.h>
#include "touchstone_krs.h"
#include "twi_api.h"
#include "twi_lib.h"
#include "touchstone_krs.h"
#include "RD_TPL_AVR_WINDOW.h"


两次包含#include "touchstone_krs.h" 是笔误?还是?谢谢


QKey的问题可能是PCB的问题?

是走线的问题吗?这个幅度通过调节电阻和电容是不是无法改善啊?谢谢
那灵敏度和这个幅值有必然关系吗?谢谢。
(363243432)

出0入296汤圆

发表于 2009-4-21 21:09:48 | 显示全部楼层
纯属笔误……
QKey的问题,我不是太清楚……因为PCB差异性会可能会导致一些差异……
(363242062)

出0入0汤圆

发表于 2009-4-21 21:32:38 | 显示全部楼层
有个小问题,你用的是M88P还是M88??两个芯片不一样的?
(363233549)

出0入0汤圆

发表于 2009-4-21 23:54:31 | 显示全部楼层
请问 Qwheel 的 PCB layout 你们是怎么实现的呢?我试图用 99SE 里的画圆工具来画 ,但是效果不佳,也很繁琐,请问你们是如何画出来的。
(363196920)

出0入0汤圆

 楼主| 发表于 2009-4-22 10:05:00 | 显示全部楼层
to 4 楼 我使用的是mega88pa 用的库是mega88p 貌似没有提供mega88pa的库,我只能使用最接近的库了

to 5 楼 本版有个兄弟把pcb放出来了,你可以去下载
(363196584)

出0入0汤圆

发表于 2009-4-22 10:10:36 | 显示全部楼层
【6楼】 yaya001
哈,那m88p就可以了,只很好奇你怎么能拿到88pa的芯片……国内很少的说
(363195725)

出0入0汤圆

 楼主| 发表于 2009-4-22 10:24:55 | 显示全部楼层
只是从你们atmel拿到的几片样片。


我现在是手触及Qkey 我在PD4 输出高电平 也就是

if ((unsigned int)(qt_touch_status.sensor_states) & BIT(1))  成立时。
否则是低电平

我用示波器 死活只能看到低电平,晕啊

关键无处下爪了。
(363193457)

出0入296汤圆

发表于 2009-4-22 11:02:43 | 显示全部楼层
PD4……不要用D口,你用C口看看……
(363193318)

出0入0汤圆

 楼主| 发表于 2009-4-22 11:05:02 | 显示全部楼层
谢谢傻孩子

好的

不过不是说 库修正了嘛 我不使用的为Touch的IO口

库不会修改他们的状态了嘛


谢谢
(363060511)

出0入0汤圆

发表于 2009-4-23 23:58:29 | 显示全部楼层
Hi 你们好,请问我用铺铜的方法画 Qwheel 时 为什么在我画的 KeepOutLaye 层外会多出一圈铺铜线 ,但是我用同事的电脑铺铜 就没有外面那个圈,可能是 Protel 99 SE 里设置的问题,请问是哪里设置的问题呀,谢谢了?

rotro  (原文件名:rotor.jpg)
(363032093)

出0入0汤圆

 楼主| 发表于 2009-4-24 07:52:07 | 显示全部楼层
没有遇到过耶

如果可能的话,可以打包把你画的这个图发上来,我用我的protel 99 se帮你看看。看是否能修改。
(363027425)

出0入296汤圆

发表于 2009-4-24 09:09:55 | 显示全部楼层
感觉这个圈会惹大麻烦……
(363011975)

出0入0汤圆

发表于 2009-4-24 13:27:25 | 显示全部楼层
rotro ourdev_439366.rar(文件大小:488K) (原文件名:PCB3_for_ouravr.rar)
这是我画的图,先用 KeepOutLaye 画的线 ,再铺铜。。。。
很想请教下你们是怎么画出来的啊?我这个画得很不标准。。。
(320145604)

出0入0汤圆

发表于 2010-9-2 16:46:56 | 显示全部楼层
回复【楼主位】yaya001
-----------------------------------------------------------------------

请问楼主,我用的mega88pa  为什么用JTAG MkII仿真也不了熔丝位,但是可以下载进去程序,为什么呢,我的程序是用GCC+studio写的
(320084809)

出0入296汤圆

发表于 2010-9-3 09:40:11 | 显示全部楼层
to 【15楼】 dpedison  
    请把症状描述的清晰一些。
(319108514)

出0入0汤圆

发表于 2010-9-14 16:51:46 | 显示全部楼层
回复【16楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------

你好,请教你点问题,希望能指教。 我遇到个问题,仿真时进不了中断服务程序。jtag ice仿真   我用的芯片是mega88pa,  语言是 GCC,  但是GCC的IO.h头文件没有mega88pa,只有mega88p。
我建工程时选的mega88P。
    我试验了个很小的程序, 我查看TCNT0的值 到FF后,TOIE0,TOVO也置为了,但是跳不到中断服务程序,TCNT0的值 到FF后,下一步到0,在下一步就到0x2D了,  请指教下  ,很费解
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
void Timer0_Init() //初始化定时器0{
  TCCR0A  = 0x00;
  TCCR0B=0x02;//定时器0预设8分频
  TIMSK0 = 0x01; //定时器0启动
}
SIGNAL(SIG_OVERFLOW0){    //中断服务程序
  i++;}
int main(){
   Timer0_Init() ;
   sei();                         //开中断
    while(1){
       PORTD &= ~0x80;}      
}
(318699840)

出0入296汤圆

发表于 2010-9-19 10:23:00 | 显示全部楼层
你的程序很奇怪i是什么东西……另外JTAGICE能仿真ATmega88?
(318676463)

出0入0汤圆

发表于 2010-9-19 16:52:37 | 显示全部楼层
回复【18楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------

JTAGICE下有ATmega88的啊, 头文件里得int i=0; 这只是个小试验,看看能不能仿真进中断
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-25 02:07

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

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