Re: 再次请教CAN总线
|
||||
---|---|---|---|---|
初級會員
|
哦,原来如此,原以为只要CANH、CANL两根线就可以了呢,呵呵,谢谢Ryang
發表於: 2006/11/13 9:55
|
|||
|
Re: 如何防止PIC受ESD的干擾
|
||||
---|---|---|---|---|
初級會員
|
对于普通的开关信号,可采用低速光欧隔离,有两个好处:1、隔离,2、干扰信号的周期非常短,低速光偶不能响应过来,再有就是增加派型滤波了,就象斑竹说的,串接一个几百欧的电阻,在电阻两端各接一个104电容到地。
發表於: 2006/11/10 16:35
|
|||
|
Re: 请教watch dog 怎么用?
|
||||
---|---|---|---|---|
初級會員
|
我不知道你为什么要延时这么长的时间,呵呵,如果一定要这么长,我可能就会采用一个定时器来完成了,如果延时10S代表这10S你不能够做任何事情,假设你的系统用在医疗或其他涉及人身安全等方面,这是很危险的,我一般都在程序中设一个时基,如10MS、100MS,然后大家有时间需求,都可以通过它来完成
發表於: 2006/11/10 16:21
|
|||
|
再次请教CAN总线
|
||||
---|---|---|---|---|
初級會員
|
通过示波器观测,如果接120欧的电阻,RX脚就没有任何信号,拿掉之后就有了,另外您提到的“可否解查ㄧ下地線系統是否連接正常”具体指的是什么呢?还请指教!
發表於: 2006/11/10 16:09
|
|||
|
Re: 请教watch dog 怎么用?
|
||||
---|---|---|---|---|
初級會員
|
restart_wdt();在一个函数中可以多次使用,在子函数也可以多次使用,另外,从我的实际使用中看,PIC的定时时间一般都有点误差的,呵呵,这不奇怪
發表於: 2006/11/9 8:53
|
|||
|
Re: 请教watch dog 怎么用?
|
||||
---|---|---|---|---|
初級會員
|
restart_wdt();是将watch dog 的计数器清零,如果不清零,那么它会在你设定的时间到后将单片机复位,这样可以防止你的程序因为某种原因进入死循环或其他的引起单片机死机。所以,你要在设定的时间内至少执行一次restart_wdt();不知道有没有说清楚,呵呵
發表於: 2006/11/8 16:58
|
|||
|
谢谢Ryang的帮助
|
||||
---|---|---|---|---|
初級會員
|
谢谢Ryang的帮助,经过这么多天的努力,终于搞定了,呵呵,谢谢Ryang
發表於: 2006/10/16 11:43
|
|||
|
谢谢您的回答,下来看看先
|
||||
---|---|---|---|---|
初級會員
|
谢谢您的回答,下来看看先
發表於: 2006/9/30 10:55
|
|||
|
请教CAN总线
|
||||
---|---|---|---|---|
初級會員
|
各位高手,在下问一个关于CAN总线的问题,从MICROCHIP网站下载了AN0738的源码,使用中发现,程序不能发送数据,但可以接收数据,为什么?还有我看到CANSendMessage子程序里面没有关于TXB0REQ的设置,如果人为的加进TXB0REQ=1;这一句,单片机就死机,不知何解,以下是我的源码,望各位高手赐教!!
void main() { CANInitialize(1, 2, 4, 3, 2, CAN_CONFIG_PHSEG2_PRG_ON&CAN_CONFIG_LINE_FILTER_OFF&CAN_CONFIG_SAMPLE_ONCE&CAN_CONFIG_VALID_STD_MSG&CAN_CONFIG_DBL_BUFFER_OFF&CAN_CONFIG_STD_MSG); CANSetOperationMode(CAN_OP_MODE_CONFIG); CANSetMask(CAN_MASK_B1,0X0000000F,CAN_CONFIG_STD_MSG); CANSetFilter(CAN_FILTER_B1_F1,0X00000001,CAN_CONFIG_STD_MSG); CANSetOperationMode(CAN_OP_MODE_NORMAL); while(1) { if(CANIsTxReady()) { MessageData[0] = 0x01; MessageData[1] = 0x02; CANSendMessage( 0x10,MessageData,2,CAN_TX_PRIORITY_0&CAN_TX_STD_FRAME &CAN_TX_NO_RTR_FRAME); } if(CANIsRxReady()) { CANReceiveMessage(&NewMessage,NewMessageData,&NewMessageLen,&NewMessageFlags); } } // Do this forever }// End of program
發表於: 2006/9/28 15:06
|
|||
|