一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 1851|回复: 1

[其他综合] 单片机 关于定时器3和1 中断屏蔽寄存器 出错 请教

[复制链接]
发表于 2012-11-5 12:09 | 显示全部楼层 |阅读模式
芯片   正在学习中   ATMEGA128A-AU
编译器  AVR Studio
硬件 lcm240128 ,at24c256,spi无线模块一个 按键8个 led1个   
熔丝位 未开启看门狗  
出错位置 : ETIMSK |= (1<<OCIE3A)|(1<<OCIE3B)|(1<<TOIE3);//(1<<OCIE3C)|//扩展中断屏蔽寄存器位:
                   TIMSK |= (1<<OCIE1A)|(1<<OCIE1B)|(1<<TOIE1);//(1<<OCIE3C)|//中断屏蔽寄存器位:
             //  ETIMSK |= (1<<OCIE1C);
出错详细:定时器1和3的 中断屏蔽寄存器和扩展的中断屏蔽寄存器 位 》》 OCIE3C和OCIE1C《《  不能置位(只要有一位置位就异常)   仅此两位出错其他位正常   当这两位置位时 启动定时器  lcm240128闪屏(背光正常字没了,电压无波动)  字也不显示了 开始没在意 后来检查原因发现 lcm240128_rst被周期性拉低(频率大约3hz左右),《lcm240128_rst位》 在主循环中没有被改变     后来在程序中加入led_1,led_0; 位置如下  启动定时器后 led闪烁   程序其他位置未调用led_1,led_0;  (好像是程序重启一样 但是寄存器数值没有丢失,一直闪下去,和rst复位还不一样  可以复位不开定时器正常)   oc1c和oc3c物理引脚连接和未连接一样 定时器不论工作在那个模式也一样  本来学习的定时器3,出错了 把定时器1写进去了也一样  OCIE3C和OCIE1C是使能中断的  1C和3C匹配中断中就一个赋值语句 1A,1B 和3A,3B 正常所有匹配中断程序里的语句一样 如果老师有时间帮忙看看全部程序   主要针对结构行和可读性方面指点下 也是学习很久了 自己写的程序过半月随便找个变量自己都不认识了 所以这次要把程序的结构和可读性学好  全部程序在附件



新建 文本文档 (2).txt (69.35 KB, 下载次数: 356)
int main(void)//主函数
{
//  error_dm=0x01;
  led_1;////??????????????????????????????????????????????????????????????<<<<<<<<<<
  _delay_ms(90);
  t_c_0_init();//定时器0 用于扫描按键
  IO_init();//m128io初始化
  lcm_init();//lcm初始化
  sei();//使能中断
  spi_init();//spi初始化
  rido_init();//无线模块复位初始化
  twi_init();//twi端口初始化
  while(1)
  {
   led_0;//??????????????????????????????????????????????????????<<<<<<<<<<
   lcm_write_txt();//显示文本
   start_order();//执行命令 定时器工作有按键控制开启和停止 只在主循环有
   if(error_dm != 0x00)
    error_txt();
   _delay_ms(90);
  }   
}
发表于 2012-11-5 13:27 | 显示全部楼层
熟读DS,一切尽在DS中,DS中自有颜如玉,DS中自有黄金屋,LZ你懂的,玩AVR的飘过!~
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-3 11:17 , Processed in 0.029391 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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