Autor Tema: doble blink osa rtos  (Leído 1651 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alexrlopez86

  • PIC10
  • *
  • Mensajes: 25
doble blink osa rtos
« en: 03 de Marzo de 2012, 09:40:29 »
estoi tratando de hacer dos tareas ala ves con el osa rtos pero no se que ago mal uso el sigiente codigo pero no funciona como yo quiero no se si es que no se puede hacer con este rtos o es que lo ago mal

Código: C
  1. #include <16f877a.h>
  2. #use delay(clock=4M)
  3. #include <puertos.c>
  4. #fuses WDT
  5.  
  6. //#device ADC=8
  7. #use fast_io (D)
  8. #use fast_io (B)
  9.  
  10. #include <osa.h>
  11.  
  12.  
  13.  
  14. void    Init (void);
  15. void    Task_Rolling (void);
  16. void    Task_SetSpeed (void);
  17.  
  18. void main (void)
  19. {
  20.  
  21.     Init();                             // Init periphery
  22.  
  23.     OS_Init();                          // Init OS
  24.  
  25.    
  26.     OS_Task_Create(7, Task_Rolling);    // Create tasks.
  27.     OS_Task_Create(7, Task_SetSpeed);   //
  28.  
  29.    Task_Rolling();                                        // Starting values:
  30.    Task_SetSpeed();
  31.    OS_EI();                            // Enable interrupts
  32.  
  33.     OS_Run();                           // Running scheduler
  34.  
  35. }
  36.  
  37. void Init (void)
  38. {
  39.     #if __DEVICE__ == 887
  40.     setup_oscillator(OSC_8MHZ, 0x1F);
  41.     #endif
  42. }  
  43.  
  44.  
  45. void Task_Rolling (void)
  46. {
  47.    
  48.     TRISC=0x00;
  49.     PORTC=0xff;
  50.     Delay_ms(1000);
  51.     PORTC=0x00;
  52.     Delay_ms(1000);                             // Change brightness position
  53.    
  54. }
  55.  
  56.  
  57.  
  58. void Task_SetSpeed (void)
  59. {
  60.    
  61.     TRISB=0x00;
  62.     PORTB=0xff;
  63.     Delay_ms(1000);
  64.     PORTB=0x00;
  65.     Delay_ms(1000);
  66.    
  67. }


espero su ayuda

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: doble blink osa rtos
« Respuesta #1 en: 03 de Marzo de 2012, 12:03:32 »
Hola alex

Estas llamando a las tareas en el main  como si todavía conseptualisas en c lineal .
En las tareas no llamas a ninguna función del OSA que realise el cambio de contexto  ,y sin bucle(for(;;)).
Tengo publicado un post (todavía incompleto) con unos ejemplos e información ,que espero te sea esclarecedora .

http://www.todopic.com.ar/foros/index.php?topic=36771.0

Otra espero que un moderador ubique este post Al sector de RTOS.

Saludos
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado alexrlopez86

  • PIC10
  • *
  • Mensajes: 25
Re: doble blink osa rtos
« Respuesta #2 en: 03 de Marzo de 2012, 13:56:32 »
e probado a eliminar las llamadas a las funciones desde el main y a poner los for(;;) que abia eliminado y no se ejecuta ninguna tarea tambien e probado solo agregando los for(;;) y dejando las llamadas y solo se ejecuta la primera funcion. espero su ayuda se que un ejemplo quisas sea pedir demacado pero almenos guiadme un poco

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: doble blink osa rtos
« Respuesta #3 en: 03 de Marzo de 2012, 17:44:27 »
pasaste por el link ? hay dos ejemplos muy bien explicados y uno es lo tu intentas hacer .
saludos
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia