2016-08-30 327 views
1

我尝试重新编译使用PinChangeInt的旧版arduino草图。编译器报告以下错误:Arduino PinChangeInt.h产生编译器错误

Arduino: 1.6.9 (Windows 7), TD: 1.29, Board: "Arduino/Genuino Micro" 

In file included from D:\home\arnold\development\arduino\drone\serial_comm\Rx\Rx.ino:50:0: 

C:\packages\arduino\libraries\PinChangeInt/PinChangeInt.h:328:32: error: 'PCMSK1' was not declared in this scope 
PCintPort portC=PCintPort(3, 1,PCMSK1); // port PC==3 (also in pins_arduino.c, Arduino version 022) 

C:\packages\arduino\libraries\PinChangeInt/PinChangeInt.h:331:32: error: 'PCMSK2' was not declared in this scope 
PCintPort portD=PCintPort(4, 2,PCMSK2); // port PD==4 

exit status 1 
Error compiling for board Arduino/Genuino Micro. 

有没有人知道这里有什么问题,以及如何修复这些错误?使用Arduino的版本1.6.9,PinChangeInt的版本是2402

回答

1

Arduino MicroATMega32U4被使用,它仅支持PORTBPCMSK0。其他端口不具备此功能。请参阅:ATMega32U4 datasheet

您还可以使用attachInterrupt来处理外部中断。所以,你必须第八位PCINT0源(与所有的人一个ISR处理程序)和五个外部中断源(每个都有自己的ISR处理)引脚01237(HW引脚:PD0 - PD3PE6) 。

+0

谢谢!我正在调查它。如果有效,我会将这个答案标记为正确。 – Arnold

+0

我知道attachInterrupt,但我被转向PinChangeInt由http://playground.arduino.cc/Code/ReadReceiver,因为attachInterrupt只读取高或低信号,而解码PWM信号显然需要变化的信号。这工作正常,直到我不得不再次翻译代码,我已经从1.0.5升级到1.6.9。我实现了你的建议,但随着其他错误弹出,我必须确保所有的代码编译之前,我确信它一切正常:-) – Arnold

+0

它的工作原理,谢谢! PinChangeInt库提供了已注释掉的语句来排除端口。我排除了除portB之外的所有端口,并且这样做了。 – Arnold