Exemplo n.º 1
0
/* 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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
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 で実行するので、ここでは
		// 処理は行っていない。
	}
}
Exemplo n.º 5
0
static void
prvvDbgInit (void) {

  /* Init terminal */
  vSerialInit (TEST_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_WR);
  stderr = &xSerialPort;
  fputc('\r', stderr);
}
Exemplo n.º 6
0
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();
}
Exemplo n.º 7
0
/* 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;
}
Exemplo n.º 8
0
/* main ===================================================================== */
int
main (void) {
  vSerialInit (SERIAL_BAUDRATE / 100, SERIAL_IOS);
  stdout = &xSerialPort;
  dprintf("Memory Debug Test\n");

  dotest (false);
  dotest (true);

  return 0;
}
Exemplo n.º 9
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');
    }
  }
}
Exemplo n.º 10
0
/****************************************************************************
 *
 * 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
		}
	}
}
Exemplo n.º 11
0
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 );

}
Exemplo n.º 12
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);
	}
}
Exemplo n.º 13
0
/****************************************************************************
 *
 * 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);
	}
}
Exemplo n.º 14
0
// -----------------------------------------------------------------------------
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... */
}
Exemplo n.º 15
0
/* 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;
}
Exemplo n.º 16
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;
      }
    }
  }
}
Exemplo n.º 17
0
void
prvvDebugInit (void) {

  vSerialInit (DEBUG_BAUDRATE / 100, SERIAL_DEFAULT + SERIAL_WR);
}
Exemplo n.º 18
0
// -----------------------------------------------------------------------------
// 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.
    }    
  }
}