Autor Tema: Problema con PORT uCos PIC24  (Leído 5482 veces)

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

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Problema con PORT uCos PIC24
« en: 13 de Agosto de 2012, 14:41:15 »
Baje el port del sitio de micrium para el PIC24, solo que no utilizo el pic para el que esta hecho el port, sino para el 24FJ256GB110. Luego lo "limpie" dejando solamente la tarea principal y a partir de ella solo quiero crear una tarea para hacer parpadear un led por ahora.
Logre hacer que compile, cosa que el original bajado no lo hacia.
A pesar de que compila, el codigo no vuelve nunca de la funcion OSTimeDly la primera vez que se la llama, se queda "dando vueltas" en OS_Sched().

Pongo a continuacion el app.c (archivo donde recomiendan poner el port):

Citar
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*                               (c) Copyright 2006, Micrium, Weston, FL
*                                          All Rights Reserved
*
*
*                                      Microchip Application Code
*
* File : APP.C
* By   : Eric Shufo
*********************************************************************************************************
*/

#include <includes.h>


/*
*********************************************************************************************************
*                                                CONSTANTS
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                                STACKS
*********************************************************************************************************
*/

#define  APP_TASK_START_STK_SIZE              128

/*
*********************************************************************************************************
*                                                VARIABLES
*********************************************************************************************************
*/

OS_STK   Start_TaskStk[APP_TASK_START_STK_SIZE];
OS_STK   DisplayStk[APP_TASK_START_STK_SIZE];


/*
*********************************************************************************************************
*                                            FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void Displays(void *pdata);


/*
*********************************************************************************************************
*                                          STARTUP TASK
*
* Description : This is an example of a startup task.  As mentioned in the book's text, you MUST
*               initialize the ticker only once multitasking has started.
*
* Arguments   : p_arg   is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
*
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

void Task_START(void *p_arg)
{
   int      i_data;
    CPU_INT08U  i;
    CPU_INT08U  j;

   (void)p_arg;

    BSP_Init();                                                         /* Initialize BSP functions                                 */


//#if OS_TASK_STAT_EN > 0
//    OSStatInit();                                                       /* Determine CPU capacity                                   */
//#endif

   
   OSTaskCreate(Displays, (void *)0, &DisplayStk[0], 1);

   
   i_data = *((int *)p_arg);

   // task loop
   for(;;)
   {
      OSTimeDly(100);
   }
}

/*
*********************************************************************************************************
*                                                main()
*
* Description : This is the standard entry point for C code.
* Arguments   : none
*********************************************************************************************************
*/

CPU_INT16S  main (void)
{
    CPU_INT08U  err;
   int      i_data;

    BSP_IntDisAll();                                                    /* Disable all interrupts until we are ready to accept them */

    OSInit();                                                           /* Initialize "uC/OS-II, The Real-Time Kernel"              */

   OSTaskCreate(Task_START, (void *)0, &Start_TaskStk[0], 0);

    OSStart();                                                          /* Start multitasking (i.e. give control to uC/OS-II)       */

   return (-1);                                                        /* Return an error - This line of code is unreachable       */
}





void Displays(void *p_arg)
{
while(1)
   {
   PORTFbits.PORTF3=1;
   OSTimeDlyHMSM(0,0,1,0);
   PORTFbits.PORTF3=0;
   OSTimeDlyHMSM(0,0,2,0);
   }
}


Alguien logro hacer andar el PORT?? Mejor aun, con el 24FJ256GB110???

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #1 en: 13 de Agosto de 2012, 19:48:05 »
Mira lo mio son los cooperativos como el Salvo & OSA y si no incrementas los ticks del sistema siempre queda esperando en el scheduler como creo que te esta pasando sera que te falta la función que es llamada en la interrupción de algún timer ...que es la que incrementa los ticks ...digo.
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #2 en: 13 de Agosto de 2012, 20:17:52 »
En la funcion BSP_Init(); esta la funcion:
Citar
static  void  Tmr_TickInit (void)         /* Initialize the uC/OS-II tick interrupt                   */
{
    CPU_INT32U  tmr_frq;
    CPU_INT16U  cnts;


    tmr_frq   =   BSP_CPU_ClkFrq();                                     /* Get the CPU Clock Frequency (Hz) (Fcy)                   */
    cnts      =   (tmr_frq / OS_TICKS_PER_SEC) - 1;                     /* Calaculate the number of timer ticks between interrupts  */

#if BSP_OS_TMR_SEL == 2
    T2CON     =   0;                                                    /* Use Internal Osc (Fcy), 16 bit mode, prescaler = 1        */
    TMR2      =   0;                                                    /* Start counting from 0 and clear the prescaler count      */
    PR2       =   cnts;                                                 /* Set the period register                                  */
    IPC1     &=  ~T2IP_MASK;                                            /* Clear all timer 2 interrupt priority bits                */
    IPC1     |=  (TIMER_INT_PRIO << 12);                                /* Set timer 2 to operate with an interrupt priority of 4   */
    IFS0     &=  ~T2IF;                                                 /* Clear the interrupt for timer 2                          */
    IEC0     |=   T2IE;                                                 /* Enable interrupts for timer 2                            */
    T2CON    |=   TON;                                                  /* Start the timer                                          */
#endif

#if BSP_OS_TMR_SEL == 4
    T4CON     =   0;                                                    /* Use Internal Osc (Fcy), 16 bit mode, prescaler = 1        */
    TMR4      =   0;                                                    /* Start counting from 0 and clear the prescaler count      */
    PR4       =   cnts;                                                 /* Set the period register                                  */
    IPC6     &=  ~T4IP_MASK;                                            /* Clear all timer 4 interrupt priority bits                */
    IPC6     |=  (TIMER_INT_PRIO << 12);                                /* Set timer 4 to operate with an interrupt priority of 4   */
    IFS1     &=  ~T4IF;                                                 /* Clear the interrupt for timer 4                          */
    IEC1     |=   T4IE;                                                 /* Enable interrupts for timer 4                            */
    T4CON    |=   TON;                                                  /* Start the timer                                          */
#endif
}

Definitivamente esa no esta configurando bien el timer....
« Última modificación: 13 de Agosto de 2012, 20:57:23 por aripod »

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #3 en: 13 de Agosto de 2012, 21:05:35 »
es que creo que me estas mostrando la inicializacion y no la función de interrupcion por el timer ...... no si me esplique bien pero a mi parecer si el scheduler no tiene noción de los ticks del sistema nunca va a temporizar, y los ticks son incrementados (por lo general y para tner presicion del cristal ,en las interrupciones por desborde del timer) en los cooperativo en una interrupción del tmr
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 manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #4 en: 13 de Agosto de 2012, 21:13:11 »
a ver  donde tenes esta llamada ?

 OSTimeTick();
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #5 en: 14 de Agosto de 2012, 09:55:10 »
La llamada OSTimeTick() esta en OS_Tick_ISR_Handler lo cual acabo de comprobar que efectivamente es llamada cada vez que se interrumpe el timer2 y por medio de un break y dandole play y halt veo que el timer si se incremente y el sistema queda interumpiendose constantemente, es decir, estoy con play y halt siempre en el breakpoint de OSTimeTick();.

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #6 en: 14 de Agosto de 2012, 17:03:50 »
hola fíjate si es que tenes algun debuger que el mplab tiene un visor para los rtos y que micrium es soportado.... tiene la opcion para ver los timer.
de todas formas subite el código completo que lo miro....yo también estoy incursionando en los preemptives pero inicialmente tiro por el FreeRTOS
Salutes
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #7 en: 14 de Agosto de 2012, 17:54:37 »
Hay que descomprimir la carpeta micrium en C. El main esta en app.c que esta en C:\Micrium\Software\EvalBoards\Microchip\Explorer16\PIC24FJ128\MPLAB_C30\OS-Probe

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #8 en: 14 de Agosto de 2012, 18:03:40 »
me pide una tercera parte del rar
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #9 en: 14 de Agosto de 2012, 18:17:17 »
Sigo subiendo...son 6 partes...no deja mas de 500k maximo con 200 x archivo.....

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #10 en: 14 de Agosto de 2012, 18:17:46 »
Ultimos dos

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #11 en: 14 de Agosto de 2012, 19:04:53 »
donde esta el manual de referencia ? necesito conocer las servicios
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #12 en: 14 de Agosto de 2012, 19:08:09 »
Supongo que lo que te referis esta en la carpeta AppNotes?

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Problema con PORT uCos PIC24
« Respuesta #13 en: 14 de Agosto de 2012, 20:07:20 »
Mira yo tengo el MMD24 de mikroe que tiene el mismo micro en cuestion pero ni en el main enciende un led ese proyecto me estoy fijando que puede ser ...
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 aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Problema con PORT uCos PIC24
« Respuesta #14 en: 14 de Agosto de 2012, 20:09:32 »
No era lo que quieria leer..jaja....lograste hacerlo compilar sin problemas supongo?


 

anything