/*JSON{ "type" : "staticmethod", "class" : "Trig", "name" : "setup", "generate" : "jswrap_trig_setup", "params" : [ ["pin","pin","The pin to use for triggering"], ["options","JsVar","Additional options as an object. defaults are: ```{teethTotal:60,teethMissing:2,minRPM:30,keyPosition:0}```"] ] } Initialise the trigger class */ void jswrap_trig_setup(Pin pin, JsVar *options) { if (!jshIsPinValid(pin)) { jsError("Invalid pin supplied as an argument to Trig.setup"); return; } TriggerStruct *trig = &mainTrigger; // static info trig->teethMissing = 2; trig->teethTotal = 60; trig->keyPosition = 0; JsVarFloat minRPM = 30; if (jsvIsObject(options)) { JsVar *v; v = jsvObjectGetChild(options, "teethMissing", 0); if (!jsvIsUndefined(v)) trig->teethMissing = (unsigned char)jsvGetInteger(v); jsvUnLock(v); v = jsvObjectGetChild(options, "teethTotal", 0); if (!jsvIsUndefined(v)) trig->teethTotal = (unsigned char)jsvGetInteger(v); jsvUnLock(v); v = jsvObjectGetChild(options, "minRPM", 0); if (!jsvIsUndefined(v)) minRPM = jsvGetFloat(v); jsvUnLock(v); v = jsvObjectGetChild(options, "keyPosition", 0); if (!jsvIsUndefined(v)) trig->keyPosition = jsvGetFloat(v); jsvUnLock(v); } trig->maxTooth = (unsigned int)jshGetTimeFromMilliseconds(60000 / (JsVarFloat)(trig->teethTotal * minRPM)); // semi-static info int i; for (i=0;i<TRIGGER_TRIGGERS_COUNT;i++) { trig->triggers[i].tooth = TRIGGERPOINT_TOOTH_DISABLE; trig->triggers[i].newTooth = TRIGGERPOINT_TOOTH_DISABLE; } // dynamic info trig->lastTime = jshGetSystemTime(); trig->avrTrigger = (unsigned int)jshGetTimeFromMilliseconds(10); // average time for a trigger pulse trig->avrTooth = (unsigned int)jshGetTimeFromMilliseconds(10); // average time for a tooth trig->currTooth = 0; trig->teethSinceStart = 0; trig->wrongTriggerTeeth = 0; // finally set up the watch! if (jshIsPinValid(trig->sensorPin)) jshPinWatch(trig->sensorPin, false); trig->sensorPin = pin; jshPinWatch(trig->sensorPin, true); }
void cc3000_spi_open(void) { // SPI config JshSPIInfo inf; jshSPIInitInfo(&inf); inf.pinSCK = WLAN_CLK_PIN; inf.pinMISO = WLAN_MISO_PIN; inf.pinMOSI = WLAN_MOSI_PIN; inf.baudRate = 100000; // FIXME - just slow for debug inf.spiMode = SPIF_SPI_MODE_1; // Mode 1 CPOL= 0 CPHA= 1 jshSPISetup(WLAN_SPI, &inf); // WLAN CS, EN and WALN IRQ Configuration jshSetPinStateIsManual(WLAN_CS_PIN, false); jshPinOutput(WLAN_CS_PIN, 1); // de-assert CS jshSetPinStateIsManual(WLAN_EN_PIN, false); jshPinOutput(WLAN_EN_PIN, 0); // disable WLAN jshSetPinStateIsManual(WLAN_IRQ_PIN, true); jshPinSetState(WLAN_IRQ_PIN, JSHPINSTATE_GPIO_IN_PULLUP); // flip into read mode with pullup jshPinWatch(WLAN_IRQ_PIN, true); // watch IRQ pin // wait a little (ensure that WLAN takes effect) jshDelayMicroseconds(500*1000); // force a 500ms delay! FIXME }
void WlanInterruptDisable(void) { jshPinWatch(WLAN_IRQ_PIN, false); }
void WlanInterruptEnable(void) { jshPinWatch(WLAN_IRQ_PIN, true); }