我试图从我的Arduino Mega ADK到我的Android开始连接,但每当我尝试acc.powerOn()
时我都会收到以下错误错误:OSCOKIRQ无法断言
这是我尝试运行的固件:
#include <Wire.h>
#include <Servo.h>
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>
int led = 13;
int EnableMotors = 22;
int Motor1FW = 24;
int Motor1RW = 26;
int Motor2FW = 28;
int Motor2RW = 30;
AndroidAccessory acc("FRBB",
"UgvBr",
"DemoKit Arduino Board",
"1.0",
"http://www.android.com",
"0000000012345678");
// the setup routine runs once when you press reset:
void setup() {
// Setting Serial at 115200 bps
Serial.begin(115200);
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
// Set up motor configs
pinMode(EnableMotors, OUTPUT);
pinMode(Motor1FW, OUTPUT);
pinMode(Motor1RW, OUTPUT);
pinMode(Motor2FW, OUTPUT);
pinMode(Motor2RW, OUTPUT);
// Powering the accessory
acc.powerOn(); ///// <<<<<<<<<<< ERROR
}
// the loop routine runs over and over again forever:
void loop() {
if(acc.isConnected()){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(EnableMotors, HIGH);
digitalWrite(Motor1FW, HIGH);
digitalWrite(Motor2FW, HIGH);
delay(2000);
digitalWrite(led, LOW); // turn the LED on (HIGH is the voltage level)
digitalWrite(EnableMotors, LOW);
digitalWrite(Motor1FW, LOW);
digitalWrite(Motor2FW, LOW);
delay(2000);
}
}
我一直在寻找各地,但我还无法找到解决这个问题的方法。我也在1.0.1上尝试使用Arduino.app的DemoKit,但仍然是同样的问题。我正在使用Mac开发它,但我不认为这是一个问题。
出于测试目的,我上传了一个闪烁LED的代码,它运行得很好。
答案 0 :(得分:9)
花了8个小时才遇到完全相同的问题。好像Max3421e.cpp有问题。尝试更换:
boolean MAX3421E::reset()
{
byte tmp = 0;
regWr( rUSBCTL, bmCHIPRES ); //Chip reset. This stops the oscillator
regWr( rUSBCTL, 0x00 ); //Remove the reset
while(!(regRd( rUSBIRQ ) & bmOSCOKIRQ )) { //wait until the PLL is stable
tmp++; //timeout after 256 attempts
if( tmp == 0 ) {
return( false );
}
}
return( true );
}
与
boolean MAX3421E::reset()
{
regWr( rUSBCTL, bmCHIPRES ); //Chip reset. This stops the oscillator
regWr( rUSBCTL, 0x00 ); //Remove the reset
while(!(regRd(rUSBIRQ) & bmOSCOKIRQ)) ;
}
位于USB_Host_Shield库中的Max3421e.cpp(位于Arduino IDE库文件夹中)。 基本上,在PLL真正稳定之前,更改不允许退出。
至少为我工作,祝你好运 (原始提示以及有关此修复程序的更多信息:http://arduino.cc/forum/index.php?topic=68205.0)
答案 1 :(得分:4)
将USB_Host_Shield_2.0库与Arduino Mega ADK一起使用。
https://github.com/felis/USB_Host_Shield_2.0
重要!!!
要将此库与官方Arduino ADK一起使用,请取消注释avrpins.h中的以下行:
#define BOARD_MEGA_ADK
答案 2 :(得分:2)
“OSCOKIRQ未能断言”通常在电路板内部的Max IC工作不正常时发生。这可能发生在两种情况下
首先尝试连接外部电源,看看是否能解决问题。否则你可能需要更换电路板。
答案 3 :(得分:1)
对我来说非常简单(有相同的问题),只需在acc.powerOn()
我看到的例子增加了100,但我认为启动速度足够快500.即
void setup()
{
// set communiation speed
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
delay(500);
acc.powerOn();
}