Esempio n. 1
0
/*
 * Inicializálja a mikrovezérlõ I/O portjait, a perifériáit és az alkalmazást
 * a hozzá kapcsolódó összes modullal együtt.
 */
void Application_initialize() {
    /* Minden I/O port standard jelváltozási sebességû digitális kimenetre
    konfigurálása, és a hozzájuk tartozó tárolók törlése. */
    TRISA = TRISB = TRISC = TRISD = TRISE = 0xFF;
    ANSELA = ANSELB = ANSELC = ANSELD = ANSELE = 0x00;
    SLRCON = LATA = LATB = LATC = LATD = LATE = 0x00;

    /* Az A/D átalakítók és a komparátorok kikapcsolása. */
    ADCON0 = ADCON1 = ADCON2 = 0x00;
    C1ON_bit = C2ON_bit = false;

    /* Az alkalmazás moduljainak inicializálása. */
    Display_initialize();
    Alarm_initialize();
    Timer_initialize();
    Sensor_initialize(3.3f);
    Storage_initialize();
    Serial_initialize(BAUD_9600);
}
Esempio n. 2
0
//******************************************************************
void main (void)
{
    //XAInit(); //* XA Configuration                           
    OSInit(); //* Initialize uC/OS-II, The Real-Time Kernel 
    
    BnPrintfWait = OSSemCreate(0);
    
    
    
    OSTaskCreate( AnPrintf, 
                  (void *)0, 
                  (void *)&AnPrintfStk[TASK_STK_SIZE-1], 
                  0x01);

    OSTaskCreate( BnPrintf, 
                  (void *)0, 
                  (void *)&BnPrintfStk[TASK_STK_SIZE-1], 
                  0x02);
 
    TimeTickConfig();
    Serial_initialize();
    OSStart();           
} 
Esempio n. 3
0
int main(int argc, char **argv)
{
  int ret;
  baseRateInfo_t info;
  pthread_attr_t attr;
  pthread_t baseRateThread;
  size_t stackSize;
  unsigned long cpuMask = 0x1;
  unsigned int len = sizeof(cpuMask);
  printf("**starting the model**\n");
  fflush(stdout);
  rtmSetErrorStatus(Serial_M, 0);
  rtExtModeParseArgs(argc, (const char_T **)argv, NULL);

  /* All threads created by this process must run on a single CPU */
  ret = sched_setaffinity(0, len, (cpu_set_t *) &cpuMask);
  CHECK_STATUS(ret, "sched_setaffinity");

  /* Initialize semaphore used for thread synchronization */
  ret = sem_init(&stopSem, 0, 0);
  CHECK_STATUS(ret, "sem_init:stopSem");

  /* Create threads executing the Simulink model */
  pthread_attr_init(&attr);
  ret = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
  CHECK_STATUS(ret, "pthread_attr_setinheritsched");
  ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
  CHECK_STATUS(ret, "pthread_attr_setdetachstate");

  /* PTHREAD_STACK_MIN is the minimum stack size required to start a thread */
  stackSize = 64000 + PTHREAD_STACK_MIN;
  ret = pthread_attr_setstacksize(&attr, stackSize);
  CHECK_STATUS(ret, "pthread_attr_setstacksize");

  /* Block signal used for timer notification */
  info.period = 0.05;
  info.signo = SIGRTMIN;
  sigemptyset(&info.sigMask);
  MW_blockSignal(info.signo, &info.sigMask);
  signal(SIGTERM, MW_exitHandler);     /* kill */
  signal(SIGHUP, MW_exitHandler);      /* kill -HUP */
  signal(SIGINT, MW_exitHandler);      /* Interrupt from keyboard */
  signal(SIGQUIT, MW_exitHandler);     /* Quit from keyboard */
  Serial_initialize();

  /* External mode */
  rtSetTFinalForExtMode(&rtmGetTFinal(Serial_M));
  rtExtModeCheckInit(2);

  {
    boolean_T rtmStopReq = false;
    rtExtModeWaitForStartPkt(Serial_M->extModeInfo, 2, &rtmStopReq);
    if (rtmStopReq) {
      rtmSetStopRequested(Serial_M, true);
    }
  }

  rtERTExtModeStartMsg();

  /* Create base rate task */
  ret = pthread_create(&baseRateThread, &attr, (void *) baseRateTask, (void *)
                       &info);
  CHECK_STATUS(ret, "pthread_create");
  pthread_attr_destroy(&attr);

  /* Wait for a stopping condition. */
  MW_sem_wait(&stopSem);

  /* Received stop signal */
  printf("**stopping the model**\n");
  if (rtmGetErrorStatus(Serial_M) != NULL) {
    printf("\n**%s**\n", rtmGetErrorStatus(Serial_M));
  }

  /* External mode shutdown */
  rtExtModeShutdown(2);

  /* Disable rt_OneStep() here */

  /* Terminate model */
  Serial_terminate();
  return 0;
}