/* main ===================================================================== */ int main (void) { xICounter xMyMeter; xICounter * fm = &xMyMeter; vLedInit (); ATOMIC_BLOCK (ATOMIC_FORCEON) { vSerialInit (TEST_BAUDRATE / 100, TEST_SETUP); stdout = &xSerialPort; vICounterInit (fm, TEST_INT); vICounterSetWindow (fm, 1000); } printf ("Frequency Meter Test\nWindow=%u ms\n", fm->usWindow); for (;;) { if (bICounterIsComplete (fm)) { dFreq = dICounterFreq (fm); printf ("%.1f\n", dFreq); delay_ms (100); vICounterStart (fm); } } return 0; }
/* main ===================================================================== */ int main (void) { xCounter xMyMeter; xCounter * fm = &xMyMeter; xCounterOps ops = { .init = vTimerInit, .clear = vTimerClear, .enable = vTimerEnable, .read = usTimerRead }; vLedInit (); ATOMIC_BLOCK (ATOMIC_FORCEON) { vSerialInit (TEST_BAUDRATE / 100, TEST_SETUP); stdout = &xSerialPort; vCounterInit (fm, &ops); vCounterSetWindow (fm, 100); } printf ("Frequency Meter Test\nWindow=%u ms\nCount,Freq\n", fm->usWindow); for (;;) { if (bCounterIsComplete (fm)) { dFreq = dCounterFreq (fm); printf ("%u,%.1f\n", usCounterCount(fm), dFreq); delay_ms (100); vCounterStart (fm); } } return 0; }
/* main ===================================================================== */ int main (void) { vLedInit (); #if defined(AVRIO_DEBUG_STREAM) /* Init terminal */ vSerialInit (TEST_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_WR); stderr = &xSerialPort; fputc('\r', stderr); #endif vTwiInit (); vAssert(eTwiSetSpeed (400) == TWI_SUCCESS); vAssert(iWHubInit (WDEV_RATE_16KBPS, FRAM_SIZE, &xFRAM) == 0); vWHubSetStatusFlag (WHUB_AUTOBIND, false); // vWSdBaseClear (); for (;;) { vLedSet (LOOP_LED); pxMsg = pxWHubLoop (); vLedClear (LOOP_LED); } return 0; }
/**************************************************************************** * * NAME: AppWarmStart * * DESCRIPTION: * * RETURNS: * ****************************************************************************/ PUBLIC void cbAppWarmStart(bool_t bAfterAhiInit) { if (!bAfterAhiInit) { // before AHI init, very first of code. // to check interrupt source, etc. sAppData.bWakeupByButton = FALSE; if(u8AHI_WakeTimerFiredStatus()) { } else if(u32AHI_DioWakeStatus() & u32DioPortWakeUp) { // woke up from DIO events sAppData.bWakeupByButton = TRUE; } } else { // Other Hardware vSerialInit(TOCONET_DEBUG_LEVEL); ToCoNet_vDebugInit(&sSerStream); ToCoNet_vDebugLevel(TOCONET_DEBUG_LEVEL); vInitHardware(FALSE); if (!sAppData.bWakeupByButton) { // タイマーで起床した } else { // ボタンで起床した } // アプリケーション処理は vProcessEvCore で実行するので、ここでは // 処理は行っていない。 } }
static void prvvDbgInit (void) { /* Init terminal */ vSerialInit (TEST_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_WR); stderr = &xSerialPort; fputc('\r', stderr); }
static void prvSetupHardware( void ) { /* Setup the PLL. */ SysCtlClockSet( SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ ); /* Initialise the hardware used to talk to the LCD, LED's and UART. */ PDCInit(); vParTestInitialise(); vSerialInit(); }
/* main ===================================================================== */ int main (void) { eTwiStatus eError; uint8_t ucWaitTime = 10; // Temps d'attente en secondes vLedInit (); vSerialInit (TEST_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_RW); stdout = &xSerialPort; stdin = &xSerialPort; printf_P (PSTR("\n\nTest unitaire RTC DS1339\n")); vTwiInit (); eError = eTwiSetSpeed (100); vAssert (eError == TWI_SUCCESS); vAssert (iRtcInit (TEST_DS1339) == 0); printf_P(PSTR("Date courante: ")); prvvPrintRtc(); printf_P(PSTR("Modification Date ? (y/n) ")); while (ucWaitTime--) { uint8_t ucCount = 10; while ((ucCount--) && (usSerialHit() == 0)) { // Boucle en attente appui d'une touche delay_ms(100); } if (usSerialHit() != 0) { char cKey; cKey = getchar(); if ((cKey == 'y') || (cKey == 'Y')) { prvvSetRtc(); } break; } putchar('.'); } putchar('\n'); for (;;) { if (usSerialHit() != 0) { (void) getchar(); // flush last char prvvSetRtc(); } prvvPrintRtc(); vLedToggle (LED_LED1); delay_ms (1000); } return 0; }
/* main ===================================================================== */ int main (void) { vSerialInit (SERIAL_BAUDRATE / 100, SERIAL_IOS); stdout = &xSerialPort; dprintf("Memory Debug Test\n"); dotest (false); dotest (true); return 0; }
/* main ===================================================================== */ int main (void) { int iError; xCanFrame xTxFrame, xRxFrame; // Init AT90CAN128 CAN controller with 125 kbit/s vSerialInit (96, SERIAL_DEFAULT + SERIAL_WR); stdout = &xSerialPort; do { iError = eCanInit (CAN_SPEED_125K); if (iError != CAN_SUCCESS) { printf ("eCanInit error ! %d\n", iError); } } while (iError != CAN_SUCCESS); // Prepare a frame for sending memset (&xRxFrame, 0, sizeof (xRxFrame)); memset (&xTxFrame, 0, sizeof (xTxFrame)); xTxFrame.xArb.xId = 0x123; xTxFrame.xCtrl.xDlc = 8; xTxFrame.ucData[0] = 0x11; xTxFrame.ucData[1] = 0x22; xTxFrame.ucData[2] = 0x33; xTxFrame.ucData[3] = 0x44; xTxFrame.ucData[4] = 0x55; xTxFrame.ucData[5] = 0x66; xTxFrame.ucData[6] = 0x77; xTxFrame.ucData[7] = 0x88; // Simple send/receive loop printf ("Starting CAN RX/TX loop...\n"); for (;;) { iError = eCanSendFrame (&xTxFrame); printf ("eCanSendFrame= %d", iError); // Check if we did receive a frame iError = eCanReceiveFrame (&xRxFrame); if (iError == CAN_SUCCESS) { uint8_t ucIndex; printf ("%lu ", xRxFrame.xArb.xId); for (ucIndex = 0; ucIndex < xRxFrame.xCtrl.xDlc; ucIndex++) { printf ("%02X ", xRxFrame.ucData[ucIndex]); } putchar ('\n'); } } }
/**************************************************************************** * * NAME: AppColdStart * * DESCRIPTION: * * RETURNS: * ****************************************************************************/ PUBLIC void cbAppColdStart(bool_t bAfterAhiInit) { if (!bAfterAhiInit) { // before AHI initialization (very first of code) // check DIO source sAppData.bWakeupByButton = FALSE; if(u8AHI_WakeTimerFiredStatus()) { } else if(u32AHI_DioWakeStatus() & u32DioPortWakeUp) { // woke up from DIO events sAppData.bWakeupByButton = 1; } // Module Registration ToCoNet_REG_MOD_ALL(); } else { // clear application context memset(&sAppData, 0x00, sizeof(sAppData)); // SPRINTF SPRINTF_vInit128(); // フラッシュメモリからの読み出し // フラッシュからの読み込みが失敗した場合、ID=15 で設定する sAppData.bFlashLoaded = Config_bLoad(&sAppData.sFlash); // ToCoNet configuration sToCoNet_AppContext.u32AppId = sAppData.sFlash.sData.u32appid; sToCoNet_AppContext.u8Channel = sAppData.sFlash.sData.u8ch; sToCoNet_AppContext.u32ChMask = sAppData.sFlash.sData.u32chmask; sToCoNet_AppContext.u8TxMacRetry = 1; sToCoNet_AppContext.bRxOnIdle = TRUE; // Other Hardware vSerialInit(); ToCoNet_vDebugInit(&sSerStream); ToCoNet_vDebugLevel(TOCONET_DEBUG_LEVEL); vInitHardware(FALSE); // event machine if (sAppData.bConfigMode) { ToCoNet_Event_Register_State_Machine(vProcessEvCoreConfig); // デバッグ用の動作マシン } else { ToCoNet_Event_Register_State_Machine(vProcessEvCore); // main state machine } } }
static void prvSetupHardware( void ) { /* Setup the PLL. */ SysCtlClockSet( SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ ); /* Initialise the hardware used to talk to the LCD, LED's and UART. */ PDCInit(); vParTestInitialise(); vSerialInit(); /* The ADC is used to read the light sensor. */ SysCtlPeripheralEnable( SYSCTL_PERIPH_ADC ); ADCSequenceConfigure( ADC_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceStepConfigure( ADC_BASE, 0, 0, ADC_CTL_CH0 | ADC_CTL_END ); ADCSequenceEnable( ADC_BASE, 0 ); }
/**************************************************************************** * * NAME: AppColdStart * * DESCRIPTION: * * RETURNS: * ****************************************************************************/ void cbAppColdStart(bool_t bAfterAhiInit) { if (!bAfterAhiInit) { // before AHI initialization (very first of code) // Module Registration ToCoNet_REG_MOD_ALL(); } else { // clear application context memset(&sAppData, 0x00, sizeof(sAppData)); // SPRINTF SPRINTF_vInit128(); // Configuration // フラッシュメモリからの読み出し // フラッシュからの読み込みが失敗した場合、ID=15 で設定する sAppData.bFlashLoaded = Config_bLoad(&sAppData.sFlash); // ToCoNet configuration sToCoNet_AppContext.u32AppId = sAppData.sFlash.sData.u32appid; sToCoNet_AppContext.u8Channel = sAppData.sFlash.sData.u8ch; sToCoNet_AppContext.u32ChMask = sAppData.sFlash.sData.u32chmask; sToCoNet_AppContext.u8TxMacRetry = 1; sToCoNet_AppContext.bRxOnIdle = TRUE; // event machine ToCoNet_Event_Register_State_Machine(vProcessEvCore); // main state machine // Other Hardware vSerialInit(); ToCoNet_vDebugInit(&sSerStream); ToCoNet_vDebugLevel(TOCONET_DEBUG_LEVEL); vInitHardware(FALSE); Interactive_vInit(); // START UP MESSAGE vfPrintf(&sSerStream, "\r\n*** ToCoTemp Parent %d.%02d-%d ***", VERSION_MAIN, VERSION_SUB, VERSION_VAR); vfPrintf(&sSerStream, LB "* App ID:%08x Long Addr:%08x Short Addr %04x", sToCoNet_AppContext.u32AppId, ToCoNet_u32GetSerial(), sToCoNet_AppContext.u16ShortAddress); } }
/**************************************************************************** * * NAME: AppColdStart * * DESCRIPTION: * * RETURNS: * ****************************************************************************/ PUBLIC void cbAppColdStart(bool_t bAfterAhiInit) { if (!bAfterAhiInit) { // before AHI initialization (very first of code) // Module Registration ToCoNet_REG_MOD_ALL(); } else { // clear application context memset(&sAppData, 0x00, sizeof(sAppData)); memset(&sSerCmd, 0x00, sizeof(sSerCmd)); // SPRINTF SPRINTF_vInit128(); // configure network] sToCoNet_AppContext.u32AppId = APP_ID; sToCoNet_AppContext.u8Channel = CHANNEL; sToCoNet_AppContext.u32ChMask = CHMASK; sToCoNet_AppContext.u8TxMacRetry = 1; sToCoNet_AppContext.bRxOnIdle = TRUE; // version info sAppData.u32ToCoNetVersion = ToCoNet_u32GetVersion(); // event machine ToCoNet_Event_Register_State_Machine(vProcessEvCore); // main state machine // Other Hardware vSerialInit(); ToCoNet_vDebugInit(&sSerStream); ToCoNet_vDebugLevel(TOCONET_DEBUG_LEVEL); vInitHardware(FALSE); // START UP MESSAGE vfPrintf(&sSerStream, "\r\n\r\n*** " APP_NAME " %d.%02d-%d ***", VERSION_MAIN, VERSION_SUB, VERSION_VAR); vfPrintf(&sSerStream, LB "* App ID:%08x Long Addr:%08x Short Addr %04x", sToCoNet_AppContext.u32AppId, ToCoNet_u32GetSerial(), sToCoNet_AppContext.u16ShortAddress); } }
// ----------------------------------------------------------------------------- void vInit (void) { /* Init terminal */ vSerialInit (BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_RW); xTransmitMenu.pxUp = &xMainMenu; xSetupMenu.pxUp = &xMainMenu; stdout = &xSerialPort; stdin = &xSerialPort; /* Init variables globales */ vSemInit (&xRxPacketReceived, 0); xTxLen = 0; /* Init module WirelessUSB */ vWDevInit (WDEV_RATE_16KBPS); vWDevSetPnCode_P (&ucPnCodeTable16kps[TEST_PNCODE*8]); sei(); /* Le module Device fonctionne sous interruption... */ }
/* internal public functions ================================================ */ int main(void) { vLedInit(); vSerialInit (SER_BAUDRATE/100, SERIAL_DEFAULT + SERIAL_WR); vAfskInit (AFSK_MODE_NOBLOCK); vAx25Init (&ax25, &xAfskPort, &xAfskPort, NULL); sei(); for (;;) { static uint16_t usCount; char msg[80]; // Numérotation de la trame afin de suivre la perte éventuelle à la // réception snprintf (msg, sizeof(msg), APRS_MSG, usCount++); vAx25SendVia (&ax25, path, countof(path), msg, strlen(msg)); delay_ms (TX_PERIOD_MS); } return 0; }
/* main ===================================================================== */ int main (void) { char cChoice; int16_t iDutyCycle[2] = { 0, 0 }; uint16_t usFreq = 1000; vSerialInit (96, SERIAL_DEFAULT + SERIAL_RW); stdout = &xSerialPort; stdin = &xSerialPort; vBdcmInit (usFreq); vEncoderInit (); xDisplayTimer = xTaskCreate (xTaskConvertMs (DISPLAY_PERIOD), prvvDisplayTask); vTaskStart (xDisplayTimer); printf_P (PSTR ("\n\n**** Quadrature Encoder Test ****\n\n\nPWM Frequency: %d\n"), usFreq); prvvDisplayInviteMsg (); for (;;) { if (usSerialHit ()) { cChoice = getchar (); switch (cChoice) { case '0': case '1':{ uint8_t ucMotor = cChoice - '0'; int16_t iDuty; do { printf_P (PSTR ("\nDuty cycle (M%d=%d) [-10000, 10000] ? "), ucMotor, iDutyCycle[ucMotor]); scanf ("%i", &iDuty); } while ((iDuty < -10000) || (iDuty > 10000)); prvvDisplayInviteMsg (); iDutyCycle[ucMotor] = iDuty; vBdcmSetRatio (ucMotor, iDuty); } break; case 'F': case 'f': printf_P (PSTR ("\nPWM Frequency (F=%u) ? "), usFreq); scanf ("%u", &usFreq); vBdcmSetRatio (0, 0); vBdcmSetRatio (1, 0); vBdcmInit (usFreq); printf_P (PSTR ("\nPress any key to restart the motors ?")); getchar (); prvvDisplayInviteMsg (); vBdcmSetRatio (0, iDutyCycle[0]); vBdcmSetRatio (1, iDutyCycle[1]); break; default: break; } } if (prvucAtomicReadByte (&xDisplayFlag)) { if (iDutyCycle[0]) { printf_P (PSTR ("\nC0=%08ld - S0=%04d RPM"), xEncoderCount (0), prvsMotorRpm (0)); } if (iDutyCycle[1]) { printf_P (PSTR ("\nC1=%08ld - S1=%04d RPM"), xEncoderCount (1), prvsMotorRpm (1)); } ATOMIC_BLOCK (ATOMIC_RESTORESTATE) { xDisplayFlag = 0; } } } }
void prvvDebugInit (void) { vSerialInit (DEBUG_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_WR); }
// ----------------------------------------------------------------------------- // Le programme principal int main (void) { vLedInit(); vSerialInit (DEBUG_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_RW); stdout = &xSerialPort; printf_P (PSTR("\r\riDwaRF - Firmware v" __IDWARF_VERSION_STRING__ " Hub version\n\n")); // initialise le firmware iDwaRF printf_P(PSTR("Init... ")); rfInit(); // les interruptions sont validées... vPrintOk(); // Enregistre les fonctions de traitement de l'utilisateur printf_P(PSTR("Register Call Back functions... ")); rfRegisterCBSensorDataReceived (vSensorPacketReceived); vPrintOk(); vPrintStatus(); vPrintBeaconTime(); vPrintHelp(); puts_P(PSTR("\nProcess All ...")); for (;;) { // la boucle principale gère les événements du réseau... rfProcessAll(); // if the serial callback has set this flag, there is new data to be processed. // done here to prevent overload in the callback function if (usSerialHit()) { vProcessRxData(); } // show the saved data received with the last sensor packet // OutStr takes some time - that's the reason why it is done here! // ucData holds the data and ucDataLen is the amount of data stored in ucData. if (ucDataLen > 0) { uint8_t * pucData = ucData; if ((ucFlags & HEX_FLAG) == 0) { // show data user friendly if (ucDataLen >= 1) { // Push Button state - 1 byte printf_P (PSTR("Button %s"), (*pucData++ != 0 ? "ON " : "off")); } if (ucDataLen >= 2) { uint8_t ucBatt; // Battery voltage - 1 byte ucBatt = *pucData++; printf_P (PSTR(" Batt <0x%02X> %.2fV"), ucBatt, ADC_SCALE * (float) ucBatt / 256.0); } if (ucDataLen >= 4) { int16_t iTemp; // Temperature value - 2 bytes iTemp = (*pucData++) << 8; iTemp += *pucData++; printf_P (PSTR(" Temp (0x%02X) %.1foC"), iTemp, (float)iTemp / 10.0); } if (ucDataLen >= 5) { // Light Dependent Resistor value - 1 byte printf_P (PSTR(" Ldr %d"), *pucData++); } } while (pucData < (ucData + ucDataLen)) { printf_P (PSTR("%02X "), *pucData++); } // show the payload size printf_P (PSTR("> len=%d\n"), ucDataLen); ucDataLen = 0; // reset. Otherwise this data is displayed non stop. } } }