comparison core/PRU.cpp @ 284:7bfb25a2e158 Doxy prerelease

Merge
author Robert Jack <robert.h.jack@gmail.com>
date Tue, 17 May 2016 15:53:24 +0100
parents 8d80eda512cd
children c55c6f6c233c
comparison
equal deleted inserted replaced
269:ac8eb07afcf5 284:7bfb25a2e158
35 #include <native/timer.h> 35 #include <native/timer.h>
36 #include <rtdk.h> 36 #include <rtdk.h>
37 37
38 using namespace std; 38 using namespace std;
39 39
40 // PRU memory: PRU0 and PRU1 RAM are 8kB (0x2000) long each
41 // PRU-SHARED RAM is 12kB (0x3000) long
42
40 #define PRU_MEM_MCASP_OFFSET 0x2000 // Offset within PRU-SHARED RAM 43 #define PRU_MEM_MCASP_OFFSET 0x2000 // Offset within PRU-SHARED RAM
41 #define PRU_MEM_MCASP_LENGTH 0x2000 // Length of McASP memory, in bytes 44 #define PRU_MEM_MCASP_LENGTH 0x1000 // Length of McASP memory, in bytes
42 #define PRU_MEM_DAC_OFFSET 0x0 // Offset within PRU0 RAM 45 #define PRU_MEM_DAC_OFFSET 0x0 // Offset within PRU0 RAM
43 #define PRU_MEM_DAC_LENGTH 0x2000 // Length of ADC+DAC memory, in bytes 46 #define PRU_MEM_DAC_LENGTH 0x2000 // Length of ADC+DAC memory, in bytes
44 #define PRU_MEM_COMM_OFFSET 0x0 // Offset within PRU-SHARED RAM 47 #define PRU_MEM_COMM_OFFSET 0x0 // Offset within PRU-SHARED RAM
45 #define PRU_MEM_DIGITAL_OFFSET 0x1000 //Offset within PRU-SHARED RAM 48 #define PRU_MEM_DIGITAL_OFFSET 0x1000 //Offset within PRU-SHARED RAM
46 #define MEM_DIGITAL_BUFFER1_OFFSET 0x400 //Start pointer to DIGITAL_BUFFER1, which is 256 words. 49 #define MEM_DIGITAL_BUFFER1_OFFSET 0x400 //Start pointer to DIGITAL_BUFFER1, which is 256 words.
49 #define PRU_CURRENT_BUFFER 1 52 #define PRU_CURRENT_BUFFER 1
50 #define PRU_BUFFER_FRAMES 2 53 #define PRU_BUFFER_FRAMES 2
51 #define PRU_SHOULD_SYNC 3 54 #define PRU_SHOULD_SYNC 3
52 #define PRU_SYNC_ADDRESS 4 55 #define PRU_SYNC_ADDRESS 4
53 #define PRU_SYNC_PIN_MASK 5 56 #define PRU_SYNC_PIN_MASK 5
54 #define PRU_LED_ADDRESS 6 57 #define PRU_LED_ADDRESS 6
55 #define PRU_LED_PIN_MASK 7 58 #define PRU_LED_PIN_MASK 7
56 #define PRU_FRAME_COUNT 8 59 #define PRU_FRAME_COUNT 8
57 #define PRU_USE_SPI 9 60 #define PRU_USE_SPI 9
58 #define PRU_SPI_NUM_CHANNELS 10 61 #define PRU_SPI_NUM_CHANNELS 10
59 #define PRU_USE_DIGITAL 11 62 #define PRU_USE_DIGITAL 11
63 #define PRU_PRU_NUMBER 12
60 64
61 short int digitalPins[NUM_DIGITALS]={ 65 short int digitalPins[NUM_DIGITALS]={
62 GPIO_NO_BIT_0, 66 GPIO_NO_BIT_0,
63 GPIO_NO_BIT_1, 67 GPIO_NO_BIT_1,
64 GPIO_NO_BIT_2, 68 GPIO_NO_BIT_2,
330 pru_buffer_comm[PRU_CURRENT_BUFFER] = 0; 334 pru_buffer_comm[PRU_CURRENT_BUFFER] = 0;
331 pru_buffer_comm[PRU_BUFFER_FRAMES] = context->analogFrames; 335 pru_buffer_comm[PRU_BUFFER_FRAMES] = context->analogFrames;
332 pru_buffer_comm[PRU_SHOULD_SYNC] = 0; 336 pru_buffer_comm[PRU_SHOULD_SYNC] = 0;
333 pru_buffer_comm[PRU_SYNC_ADDRESS] = 0; 337 pru_buffer_comm[PRU_SYNC_ADDRESS] = 0;
334 pru_buffer_comm[PRU_SYNC_PIN_MASK] = 0; 338 pru_buffer_comm[PRU_SYNC_PIN_MASK] = 0;
339 pru_buffer_comm[PRU_PRU_NUMBER] = pru_number;
335 if(led_enabled) { 340 if(led_enabled) {
336 pru_buffer_comm[PRU_LED_ADDRESS] = USERLED3_GPIO_BASE; 341 pru_buffer_comm[PRU_LED_ADDRESS] = USERLED3_GPIO_BASE;
337 pru_buffer_comm[PRU_LED_PIN_MASK] = USERLED3_PIN_MASK; 342 pru_buffer_comm[PRU_LED_PIN_MASK] = USERLED3_PIN_MASK;
338 } 343 }
339 else { 344 else {
641 646
642 if(xenomai_gpio != 0) { 647 if(xenomai_gpio != 0) {
643 // Set the test pin high 648 // Set the test pin high
644 xenomai_gpio[GPIO_CLEARDATAOUT] = TEST_PIN_MASK; 649 xenomai_gpio[GPIO_CLEARDATAOUT] = TEST_PIN_MASK;
645 } 650 }
651
652 BeagleRT_autoScheduleAuxiliaryTasks();
646 653
647 // FIXME: TESTING!! 654 // FIXME: TESTING!!
648 // if(testCount > 100000) 655 // if(testCount > 100000)
649 // break; 656 // break;
650 } 657 }