打印

WINAVR

[复制链接]
1505|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pzljun|  楼主 | 2012-8-28 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
WINAVR太垃圾了!用过MPLAB,用过KEIL,C语言写的很不错了。
结果在WINAVR上写的程序,各种出错。
编译全部正确通过,调试各种看不到数,甚至不能在程序任意位置设断点。
各种意外跑飞。
尼码坑爹的垃圾。
太郁闷了。
同意的顶!

相关帖子

沙发
pzljun|  楼主 | 2012-8-28 09:25 | 只看该作者
unsigned int eep_read(unsigned int adr)
{
        volatile unsigned char tt[2];
        volatile unsigned int x;
        tt[0] = eeprom_read_byte(adr*2);
        tt[1] = eeprom_read_byte(adr*2+1);
        x = (unsigned int)tt[0]*256+tt[1];
        return x;
}
void eep_write(unsigned int adr,unsigned int dat)
{
        volatile unsigned char tt[2];
        tt[0] = (unsigned char)(dat/256);
        tt[1] = (unsigned char)(dat%256);
        eeprom_write_byte(adr*2,tt[0]);
        eeprom_write_byte(adr*2+1,tt[1]);
}
void E2p_init(void)
{
        volatile unsigned int i,j;
        volatile unsigned int te[30];
        volatile unsigned char tt[2];
        i = 0;
        j = 0;
        for(i=0;i<30;i++){

                te[i] = eep_read(i);
}
        for(i=0;i<30;i++)
        te[i]=i*0x101;
        for(i=0;i<30;i++){
        eep_write(i, te[i]);
}        for(i=0;i<30;i++)
        te[i] = 0;
        for(i=0;i<30;i++){
                te[i] = eep_read(i);
        }
}
E2p_init 程序里任意位置都不可以设断点,上面的子程序就可以

使用特权

评论回复
板凳
原野之狼| | 2012-8-28 09:33 | 只看该作者
看不到数是因为该变量被优化后没有分配到内存 因此也就看不到数了

debug的时候  把优化级别设为0

如果程序规模比较大 因该嵌入调试模块  而不是简单的设断点来调试

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
john_lee + 1 我很赞同
地板
cool_coder| | 2012-8-28 13:05 | 只看该作者
GCC还不错,用熟了就好。

使用特权

评论回复
5
huangqi412| | 2012-8-28 13:25 | 只看该作者
你是用AVRSTUDIO调试?
尝试丢掉仿真器吧。。。  AVR比51和PIC好用多了。

使用特权

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

本版积分规则

2

主题

36

帖子

0

粉丝