Autor Tema: RTOS CCS PIC 16F877  (Leído 2661 veces)

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

Desconectado hernanutn

  • PIC16
  • ***
  • Mensajes: 117
RTOS CCS PIC 16F877
« en: 09 de Marzo de 2020, 12:51:47 »
HOLA MI CONSULTA  ES QUE CUANDO USO EL

Código: [Seleccionar]
#task(rate=7000ms,max=20ms) lo calcula para 14s y uso un crystal de 4Mhz. La misma tarea lo realize con un rate=1s y lo calcula para 2s

Desde ya gracias..

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:RTOS CCS PIC 16F877
« Respuesta #1 en: 09 de Marzo de 2020, 13:05:14 »
No esta muy claro tu pregunta pero:

Primero necesitas definir el cristal como lo haces con los delays y definir correctamente el timer (y su preescaler).

Segundo el rate es cada cuanto se ejecuta la tarea, que puede darse en segundos (s), milisegundos microsegundos, etc. Y debe ser multiplo del minor_cycle especificado en la directiva USE_RTOS.

El max, es el tiempo MAXIMO de tiempo de procesador continuo que le vas a dar, y debe ser igual o menor al tiempo especificado en minor_cycle.

Si definiste correctamente tu frecuencia de cristal, y bien los preescalers del timer, no creo que tengas problemas y seguramente cumpla con los tiempos:

Citar
This directive tells the compiler which timer on the PIC to use for monitoring and when to grant control to a task. Changes to the specified timer's prescaler will effect the rate at which tasks are executed.

Entonces fijate bien el tema del preescaler.

Desconectado hernanutn

  • PIC16
  • ***
  • Mensajes: 117
Re:RTOS CCS PIC 16F877
« Respuesta #2 en: 09 de Marzo de 2020, 13:13:34 »
Código: [Seleccionar]
#use delay(clock=4M) con cystal de 4 MHz

Código: [Seleccionar]
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1)
Lo saque de unos ejemplos de rtos de este foro.

voy a ver bien el tema del prescaler.

Gracias..
« Última modificación: 09 de Marzo de 2020, 13:20:38 por hernanutn »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:RTOS CCS PIC 16F877
« Respuesta #3 en: 09 de Marzo de 2020, 14:33:44 »
Depende de que PIC estes hablando pero el preescaler minimo de la mayoria de los Timer0 es 1:2 y no 1:1. tal ves por eso tenes el doble de tiempo

Desconectado hernanutn

  • PIC16
  • ***
  • Mensajes: 117
Re:RTOS CCS PIC 16F877
« Respuesta #4 en: 09 de Marzo de 2020, 16:11:16 »
El error estaba en la tarea ya que quiero que lo haga periodicamente para prender y apagar 2 led(simulan el giro de un motor AC) y el  rtos_yield() lo tengo al final por eso puse el rate a 3500ms y con eso cumplo los 7s por led ON/OFF.
Ademas cambie lo que me dijiste.