5.1.4
勘误说明
1.
的CANIDM寄存器复位不合时宜
在暴徒一个CAN帧的接收后, ID屏蔽寄存器复位。
问题的修复程序/解决方法
在启用接待暴徒,重新初始化ID屏蔽寄存器 -
CANIDM[4..1].
2.
该AMPCMPx位返回0
当他们读AMPCMPx位AMPxCSR寄存器返回0 。
问题的修复程序/解决方法
如果需要的AMPCMPx位的读取,存储AMPCMPx值在变量
在内存之前写的AMPxCSR注册并读取该变量时,
有必要的。
3.
没有当放大器用作比较器输入和ADC输入比较
当它被选中作为ADC输入,放大器接收到任何时钟信号时, ADC是
停了下来。在这种情况下,如果放大器也用作比较器的输入,没有模拟信号
传播并没有比较就完成了。
问题的修复程序/解决方法
选择另一个ADC通道,而不是工作放大通道。
4. CRC计算LIN 2.x的诊断帧
对LIN 2.x中使用的“经典校验和”计算诊断帧。不幸的是,设定
校验模型婷被启用时,头部被传送/接收。
通常情况下,在LIN 2.x中的LIN / UART控制器初始化处理“强化入住
求和“和一个从任务不知道什么样的框架,将前工作
检查的ID。
问题的修复程序/解决方法
这个解决方法是只在发生diag-的发送/接收的实现
维护功能框架。
一。主节点的从任务:
在启用头,主机必须设置相应的LIN13 bitvalue
在LINCR注册。
b.
对于奴隶的节点,解决办法是在两部分:
- 在启用响应,使用下面的函数:
空间
lin_wa_head (无效) {
无符号字符型
温度;
TEMP = LINBTR ;
LINCR =
0x00;
LINCR
}
//这不是一个RESET !
LINBTR = ( 1<<LDISR )|温度;
= (1<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
//如果它尚未完成
LINDLR =
0x88;
- 一旦响应被接收或发送(有RXOK或TXOK以及
LERR ) ,使用下面的函数:
空间
lin_wa_tail (无效)
LINCR =
0x00;
LINBTR =
0x00;
LINCR
}
= (0<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
{
//这不是一个RESET !
当解决方法是设置响应时超时计数器被禁用。
20
爱特梅尔ATmega16的/ 32 /64 / M1 / C1
7647ES–AVR–07/12