int main(){ printf("init: comienza\n"); if (crear_proceso("simplon")<0){ printf("Error creando simplon\n"); } /*if (crear_proceso("dormilon")<0) printf("Error creando dormilon\n");*/ /* Este programa causa una excepción */ if (crear_proceso("excep_arit")<0) printf("Error creando excep_arit\n"); /* Este programa crea otro proceso que ejecuta simplon a una excepción */ if (crear_proceso("excep_mem")<0) printf("Error creando excep_mem\n"); /* No existe: debe fallar */ if (crear_proceso("noexiste")<0) printf("Error creando noexiste\n"); espera(); printf("init: termina\n"); return 0; }
// Escreve um caractere no LCD void LCDputchar(int c) { FIO3PIN0 = c; FIO4SET = LCD_RS; // RS=1: caractere FIO4SET = LCD_E; FIO4CLR = LCD_E; espera(8); }
// Escreve um comando para o LCD void LCDcomando(int c) { FIO3PIN0 = c; FIO4CLR = LCD_RS; // RS=0: comando FIO4SET = LCD_E; FIO4CLR = LCD_E; espera(20); }
int main(int argc, char *argv[]) { guiWindow *wdwPpal = NULL; /****************************************************** Creacion del proceso hijo, encargado del compilador y los pipes de comunicacion con el ******************************************************/ pipe(pipePH); pipe(pipeHP); pipe(pipeERR); if ( (pid=fork()) == -1 ) { perror("FORK"); exit(-1); } if ( pid == 0 ) { // Hijo close(pipeHP[0]); dup2(pipeHP[1], 1); close(pipePH[1]); dup2(pipePH[0],0); close(pipeERR[0]); dup2(pipeERR[1], 2); // Espera hasta que el usuario haya cargado en el entorno // los ficheros del compilador y codigo fuente espera(); } else { // Padre close(pipeHP[1]); close(pipePH[0]); close(pipeERR[1]); strERR = fdopen(pipeERR[0], "r"); } // Construir aplicacion // FXApp *application = new FXApp("SEFASGEN","Infinity Inc."); Sefasgen application("SEFASGEN", "SFGSoft"); // Arrancar application.init(argc, argv); application.create(); // guiWindow wdwPpal = new guiWindow(&application); wdwPpal->create(); return application.run(); }
/* Escreve um caractere no LCD */ void LCDputchar(int c) { FIO3PIN0 = c; FIO4SET = LCD_RS; FIO4SET = LCD_E; c++; c--; FIO4CLR = LCD_E; espera(8); }
/* Escreve um comando para o LCD */ void LCDcomando(int c) { FIO3PIN0 = c; FIO4CLR = LCD_RS; FIO4SET = LCD_E; c++; c--; FIO4CLR = LCD_E; espera(20); }
/* Configura Timer e LCD */ void LCDinit(void) { /* Configura portas I/O do LCD */ FIO3DIR |= 0xff; FIO4DIR |= LCD_E | LCD_RS; espera(20); LCDcomando(0x38); /* Configura LCD para 2 linhas */ LCDcomando(1); /* Limpa display */ LCDcomando(0x0c); /* Apaga cursor */ }
void LCDcomando(int c) { espera(5); /* Espera 5ms */ FIO3CLR = 0xff; /* Zera os dados do LCD */ FIO3SET = c & 0xff; FIO4CLR = LCD_RS; /* RS=0: Comando */ FIO4SET = LCD_E; /* Liga LCD_E */ c++; c--; /* tempo */ FIO4CLR = LCD_E; /* Desliga LCD_E */ }
void LCDputchar(int c) { espera(5); /* Espera 1ms */ FIO3CLR = 0xff; /* Zera os dados do LCD */ FIO3SET = c & 0xff; FIO4SET = LCD_RS; /* RS=1: Caractere ASCII */ FIO4SET = LCD_E; /* Liga LCD_E */ c++; c--; /* tempo */ FIO4CLR = LCD_E; /* Desliga LCD_E */ }
// Configura LCD void LCDinit(void) { // Configura portas I/O do LCD FIO3DIR |= 0xff; // Dados do LCD como saidas FIO4DIR |= LCD_E | LCD_RS; // EN e RS do LCD como saidas espera(20); LCDcomando(0x38); // Configura LCD para 2 linhas LCDcomando(1); // Limpa display LCDcomando(0x0c); // Apaga cursor }
int disparo(int b){ int cruzamento_zero, j; for(j=0; j<10000; j++){ cruzamento_zero = leitura_adc(); // printf("ADC %d\n", cruzamento_zero); if(cruzamento_zero>50){ if (b==0){ saida_lampada("1"); } if(b!=0){ espera(b); saida_lampada("1"); espera(1); saida_lampada("0"); } } } }
void* calcular(void *arg) { long id = (long) arg; sem_wait(&semaforo); count += 1 ; printf ("entro el hilo %ld \n",id); espera(500); printf ("salio el hilo %ld \n",id); sem_post(&semaforo); pthread_exit(0); }
int main() { int i; printf("simplon: comienza\n"); for (i=0; i<TOT_ITER; i++) printf("simplon: i %d\n", i); //fijar_prio(30); /* Augmentam la prioritat */ /* Prova de prioritats, deixarem que el simplon2 heredi del pare*/ if (crear_proceso("dormilon")<0){ printf("Error creando dormilon\n"); } //fijar_prio(10); //Aqui debería activarse la interrupción de Software. espera(); printf("simplon: termina\n"); return 0; }