Advertisement
Adytzu04

Tema problema 3 patr

Oct 17th, 2014
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.18 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /* Scheduler includes. */
  4. #include "FreeRTOS.h"
  5. #include "task.h"
  6. #include "queue.h"
  7. #include "croutine.h"
  8.  
  9. /* Demo application includes. */
  10. #include "partest.h"
  11.  
  12.  
  13. // Select Internal FRC at POR
  14. _FOSCSEL(FNOSC_FRC);
  15. // Enable Clock Switching and Configure
  16. _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF);     // FRC + PLL
  17. //_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);       // XT + PLL
  18. _FWDT(FWDTEN_OFF);      // Watchdog Timer Enabled/disabled by user software
  19.  
  20. static void prvSetupHardware( void );
  21. xTaskHandle pxTask3 =NULL;
  22. int nr_task1=0;
  23. int nr_task2=0;
  24. void Task3(void *params) {
  25.  
  26. //  portTickType xLast_Time_Task3;
  27.  // const portTickType  xFrequency_Task3 = 5000;
  28.  
  29. //  xLast_Time_Task3 = xTaskGetTickCount();
  30.  
  31.     for (;;)
  32.         {
  33.         //PORTBbits.RB13 = ~PORTBbits.RB13;
  34.         vParTestToggleLED(13);
  35.         vTaskDelay(9000);
  36.     //  vTaskDelayUntil( &xLast_Time_Task3, xFrequency_Task3 );
  37.         }
  38. }
  39.  
  40. void Task1(void *params) {
  41.     for (;;)
  42.         {      
  43.         //PORTBbits.RB15 = ~PORTBbits.RB15;
  44.         vParTestToggleLED(15);
  45.        
  46.         nr_task1++;
  47.         if(nr_task1==3)
  48.         {
  49.             vTaskDelete(pxTask3);
  50.             nr_task1=0;
  51.         }
  52.     vTaskDelay(3000);
  53.        
  54. }
  55. }
  56.  
  57.  
  58.  
  59. void Task2(void *params) {
  60.     portTickType xLast_Time_Task2;
  61.     const portTickType  xFrequency_Task2 = 4000;
  62.    
  63.     xLast_Time_Task2 = xTaskGetTickCount();
  64.  
  65.     for (;;)
  66.         {
  67.         //PORTBbits.RB14 = ~PORTBbits.RB14;
  68.         vParTestToggleLED(12);
  69.         nr_task2++;
  70.         if(nr_task2==4)
  71.         {
  72.             xTaskCreate(Task3, (signed portCHAR *) "Ts3", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, &pxTask3);
  73.         //  nr_task2=0;
  74.         }
  75.  
  76.         vTaskDelay(1000);
  77.     }
  78. }
  79.  
  80.  
  81.  
  82. void Task4(void *params)
  83. {
  84.     portTickType xLast_Time_Task4;
  85.     const portTickType  xFrequency_Task4 = 1000;
  86.  
  87.     xLast_Time_Task4 = xTaskGetTickCount();
  88.  
  89.     for (;;)
  90.         {
  91.         //PORTBbits.RB12 = ~PORTBbits.RB12;
  92.         vParTestToggleLED(12);
  93.     //  vTaskDelay(1000);
  94.         vTaskDelayUntil( &xLast_Time_Task4, xFrequency_Task4 );
  95.         }
  96. }
  97.  
  98.  
  99. int main( void )
  100. {
  101.     /* Configure any hardware required for this demo. */
  102.     prvSetupHardware();
  103.  
  104.     xTaskCreate(Task1, (signed portCHAR *) "Ts1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
  105.     xTaskCreate(Task2, (signed portCHAR *) "Ts2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 3, NULL);
  106.     xTaskCreate(Task4, (signed portCHAR *) "Ts4", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 4, NULL);
  107.  
  108.     /* Finally start the scheduler. */
  109.     vTaskStartScheduler();
  110.  
  111.     return 0;
  112. }
  113. /*-----------------------------------------------------------*/
  114.  
  115. void initPLL(void)
  116. {
  117. // Configure PLL prescaler, PLL postscaler, PLL divisor
  118.     PLLFBD = 41;        // M = 43 FRC
  119.     //PLLFBD = 30;      // M = 32 XT
  120.     CLKDIVbits.PLLPOST=0;   // N1 = 2
  121.     CLKDIVbits.PLLPRE=0;    // N2 = 2
  122.  
  123. // Initiate Clock Switch to Internal FRC with PLL (NOSC = 0b001)
  124.     __builtin_write_OSCCONH(0x01);  // FRC
  125.     //__builtin_write_OSCCONH(0x03);    // XT
  126.     __builtin_write_OSCCONL(0x01);
  127.  
  128. // Wait for Clock switch to occur
  129.     while (OSCCONbits.COSC != 0b001);   // FRC
  130.     //while (OSCCONbits.COSC != 0b011); // XT
  131.  
  132. // Wait for PLL to lock
  133.     while(OSCCONbits.LOCK!=1) {};
  134. }
  135.  
  136. static void prvSetupHardware( void )
  137. {
  138.     //ADPCFG = 0xFFFF;              //make ADC pins all digital - adaugat
  139.     vParTestInitialise();
  140.     initPLL();
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement