Changeset 519
- Timestamp:
- 04/16/08 21:59:41 (4 months ago)
- Files:
-
- nano-RK/projects/ecg_project/main.c (modified) (7 diffs)
- nano-RK/projects/ecg_project/makefile (modified) (1 diff)
- nano-RK/projects/ecg_project/nrk_cfg.h (modified) (1 diff)
- nano-RK/projects/msp_basic_adc/main.c (modified) (4 diffs)
- nano-RK/projects/msp_basic_adc/makefile (modified) (1 diff)
- nano-RK/src/drivers/include/nrk_driver_list.h (modified) (1 diff)
- nano-RK/src/drivers/platform/imec/include/eeg_driver.h (modified) (1 diff)
- nano-RK/src/drivers/platform/imec/source/adc_driver.c (modified) (1 diff)
- nano-RK/src/drivers/platform/imec/source/eeg_driver.c (modified) (5 diffs)
- nano-RK/src/platform/imec/source/ulib.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
nano-RK/projects/ecg_project/main.c
r449 r519 22 22 *******************************************************************************/ 23 23 24 24 25 #include <nrk.h> 25 26 #include <include.h> … … 30 31 #include <nrk_timer.h> 31 32 #include <nrk_stack_check.h> 33 #include <nrk_driver_list.h> 34 #include <nrk_driver.h> 35 #include <adc_driver.h> 36 #include <eeg_driver.h> 32 37 33 NRK_STK ECG BufferTaskStack[NRK_APP_STACKSIZE];34 nrk_task_type ECG BufferTask;38 NRK_STK ECGReaderTaskStack[NRK_APP_STACKSIZE]; 39 nrk_task_type ECGReaderTask; 35 40 void ECGBuffer(void); 36 41 … … 44 49 45 50 void nrk_create_taskset(); 51 void nrk_register_drivers(); 46 52 47 53 int main () … … 54 60 55 61 nrk_time_set(0,0); 62 nrk_register_drivers(); 56 63 nrk_create_taskset (); 57 64 nrk_start(); … … 60 67 } 61 68 62 void ECGBuffer() { 69 void ECGReader() { 70 uint16_t cnt; 71 int8_t fd,val,chan; 72 uint16_t buf[8]; 73 74 fd=nrk_open(IMEC_EEG_MANAGER,READ); 75 if(fd==NRK_ERROR) nrk_kprintf( "Failed to open EEG driver\r\n"); 76 77 cnt=0; 78 chan=0; 79 val=nrk_set_status(fd,EEG_CHAN,1); 80 if(val==NRK_ERROR) nrk_kprintf( "Failed to set EEG status\r\n"); 81 val=nrk_set_status(fd,ECG_GAIN,5); 82 if(val==NRK_ERROR) nrk_kprintf( "Failed to set EEG gain\r\n"); 83 84 while(1) { 85 nrk_gpio_toggle(NRK_MISC1); 86 //printf("Task 1\r\n"); 87 val=nrk_read(fd,&buf[chan],2); 88 if(val==NRK_ERROR) nrk_kprintf("Failed to read EEG\r\n"); 89 printf( "EEG: %d\r\n",buf[chan]); 90 91 nrk_wait_until_next_period(); 92 cnt++; 93 } 94 63 95 } 64 96 … … 70 102 71 103 void nrk_create_taskset() { 72 nrk_task_set_entry_function(&ECG BufferTask, ECGBuffer);73 ECG BufferTask.Ptos = (void *) &ECGBufferTaskStack[NRK_APP_STACKSIZE];74 ECG BufferTask.Pbos = (void *) &ECGBufferTaskStack[0];75 ECG BufferTask.prio = 1;76 ECG BufferTask.FirstActivation = TRUE;77 ECG BufferTask.Type = BASIC_TASK;78 ECG BufferTask.SchType = PREEMPTIVE;79 ECG BufferTask.period.secs = 0;80 ECG BufferTask.period.nano_secs = 600*NANOS_PER_MS;81 ECG BufferTask.cpu_reserve.secs = 0;82 ECG BufferTask.cpu_reserve.nano_secs = 50*NANOS_PER_MS;83 ECG BufferTask.offset.secs = 0;84 ECG BufferTask.offset.nano_secs= 0;85 nrk_activate_task (&ECG BufferTask);104 nrk_task_set_entry_function(&ECGReaderTask, ECGReader); 105 ECGReaderTask.Ptos = (void *) &ECGReaderTaskStack[NRK_APP_STACKSIZE]; 106 ECGReaderTask.Pbos = (void *) &ECGReaderTaskStack[0]; 107 ECGReaderTask.prio = 1; 108 ECGReaderTask.FirstActivation = TRUE; 109 ECGReaderTask.Type = BASIC_TASK; 110 ECGReaderTask.SchType = PREEMPTIVE; 111 ECGReaderTask.period.secs = 0; 112 ECGReaderTask.period.nano_secs = 600*NANOS_PER_MS; 113 ECGReaderTask.cpu_reserve.secs = 0; 114 ECGReaderTask.cpu_reserve.nano_secs = 50*NANOS_PER_MS; 115 ECGReaderTask.offset.secs = 0; 116 ECGReaderTask.offset.nano_secs= 0; 117 nrk_activate_task (&ECGReaderTask); 86 118 119 /* 87 120 nrk_task_set_entry_function(&ECGProcessorTask, ECGProcessor); 88 121 ECGProcessorTask.Ptos = (void *) &ECGProcessorTaskStack[NRK_APP_STACKSIZE]; … … 114 147 RadioTask.offset.nano_secs= 0; 115 148 nrk_activate_task (&RadioTask); 149 */ 116 150 } 117 151 152 void nrk_register_drivers() 153 { 154 int8_t val; 155 // Register the ADC device driver 156 // Make sure to add: 157 // #define NRK_MAX_DRIVER_CNT 158 // in nrk_cfg.h 159 // Make sure to add: 160 // SRC += $(ROOT_DIR)/src/drivers/platform/$(PLATFORM_TYPE)/source/adc_driver.c 161 // in makefile 162 val=nrk_register_driver( &dev_manager_adc,ADC_DEV_MANAGER); 163 if(val==NRK_ERROR) nrk_kprintf( "Failed to load my ADC driver\r\n"); 164 165 val=nrk_register_driver( &dev_manager_eeg,IMEC_EEG_MANAGER); 166 if(val==NRK_ERROR) nrk_kprintf( "Failed to load EEG driver\r\n"); 167 } nano-RK/projects/ecg_project/makefile
r445 r519 26 26 # SRC += $(ROOT_DIR)/src/platform/$(PLATFORM_TYPE)/source/my_src1.c 27 27 # SRC += $(ROOT_DIR)/src/platform/$(PLATFORM_TYPE)/source/my_src2.c 28 SRC += $(ROOT_DIR)/src/drivers/platform/$(PLATFORM_TYPE)/source/adc_driver.c 29 SRC += $(ROOT_DIR)/src/drivers/platform/$(PLATFORM_TYPE)/source/eeg_driver.c 28 30 29 31 # Add extra includes files. nano-RK/projects/ecg_project/nrk_cfg.h
r445 r519 40 40 #define NRK_APP_STACKSIZE 128 41 41 #define NRK_KERNEL_STACKSIZE 128 42 #define NRK_MAX_RESOURCE_CNT 1 42 #define NRK_MAX_RESOURCE_CNT 3 43 #define NRK_MAX_DRIVER_CNT 3 43 44 44 45 nano-RK/projects/msp_basic_adc/main.c
r457 r519 64 64 65 65 printf("Starting up...\r\n"); 66 P1DIR = 0xff; 67 P2DIR = 0x7e; 66 68 67 69 nrk_start(); … … 76 78 uint16_t buf[8]; 77 79 80 //EEG init 81 /* 82 nrk_gpio_clr(UP_RESET); 83 nrk_gpio_set(UP_RESET); 84 nrk_gpio_clr(UP_RESET); 85 nrk_gpio_clr(UP_A0_ECG); 86 nrk_gpio_clr(UP_A1_ECG); 87 nrk_gpio_clr(UP_A2_ECG); 88 nrk_gpio_set(ENABLE1); 89 */ 90 P1DIR = 0xff; 91 P2DIR = 0x7e; 92 78 93 fd=nrk_open(ADC_DEV_MANAGER,READ); 79 94 if(fd==NRK_ERROR) nrk_kprintf( "Failed to open ADC driver\r\n"); … … 87 102 nrk_gpio_toggle(NRK_MISC1); 88 103 //printf("Task 1\r\n"); 104 105 P1OUT = 0xff; 89 106 val=nrk_read(fd,&buf[chan],2); 90 107 if(val==NRK_ERROR) nrk_kprintf( PSTR("Failed to read ADC\r\n" )); 91 108 printf( "ADC: %d\r\n",buf[chan]); 109 P1OUT = 0x00; 92 110 93 111 nrk_wait_until_next_period(); … … 116 134 TaskOne.SchType = PREEMPTIVE; 117 135 TaskOne.period.secs = 0; 118 TaskOne.period.nano_secs = 600*NANOS_PER_MS;136 TaskOne.period.nano_secs = 10*NANOS_PER_MS; 119 137 TaskOne.cpu_reserve.secs = 0; 120 TaskOne.cpu_reserve.nano_secs = 50*NANOS_PER_MS;138 TaskOne.cpu_reserve.nano_secs = 1*NANOS_PER_MS; 121 139 TaskOne.offset.secs = 0; 122 140 TaskOne.offset.nano_secs = 0; nano-RK/projects/msp_basic_adc/makefile
r457 r519 27 27 # SRC += $(ROOT_DIR)/src/platform/$(PLATFORM_TYPE)/source/my_src2.c 28 28 SRC += $(ROOT_DIR)/src/drivers/platform/$(PLATFORM_TYPE)/source/adc_driver.c 29 SRC += $(ROOT_DIR)/src/drivers/platform/$(PLATFORM_TYPE)/source/eeg_driver.c 29 30 30 31 # Add extra includes files. nano-RK/src/drivers/include/nrk_driver_list.h
r239 r519 29 29 #define ADC_DEV_MANAGER 0 30 30 #define FIREFLY_SENSOR_BASIC 1 31 #define IMEC_EEG_MANAGER 2 31 32 32 33 nano-RK/src/drivers/platform/imec/include/eeg_driver.h
r486 r519 23 23 * Mark Hamilton 24 24 *******************************************************************************/ 25 26 #endif27 25 28 26 #include<stdio.h> nano-RK/src/drivers/platform/imec/source/adc_driver.c
r486 r519 90 90 case INIT: 91 91 init_adc(); 92 return 1;92 return NRK_OK; 93 93 94 94 case OPEN: nano-RK/src/drivers/platform/imec/source/eeg_driver.c
r486 r519 43 43 #define EEG_INIT()\ 44 44 do {\ 45 nrk_gpio_set(UP_RESET); 46 nrk_gpio_clr(UP_RESET); 45 nrk_gpio_clr(UP_RESET);\ 46 nrk_gpio_set(UP_RESET);\ 47 nrk_gpio_clr(UP_RESET);\ 47 48 } while(0); 48 49 49 50 #define EEG_SET_CHANNEL(channel)\ 50 do { 51 do {\ 51 52 } while(0); 52 53 … … 103 104 return NRK_ERROR; 104 105 } 106 val=nrk_set_status(eeg_adc_fd,ADC_CHAN,0); 107 if(val==NRK_ERROR) nrk_kprintf( "Failed to set ADC status\r\n"); 105 108 return NRK_OK; 106 109 } … … 113 116 return NRK_ERROR; 114 117 } 115 if( opt&(READ_FLAG|WRITE_FLAG|APPEND_FLAG)==0)118 if((opt&(READ_FLAG|WRITE_FLAG|APPEND_FLAG))==0) 116 119 return NRK_ERROR; 117 120 else return NRK_OK; … … 142 145 case EEG_CHAN: 143 146 eeg_channel = value; 144 ADC_SET_CHANNEL(eeg_channel);147 EEG_SET_CHANNEL(eeg_channel); 145 148 return NRK_OK; 146 149 … … 175 178 uint16_t get_eeg_val() 176 179 { 177 uint16_t eeg_val; 178 val=nrk_read(fd,&eeg_val,2); //TODO: ensure correct byte ordering 179 if(val==NRK_ERROR) nrk_kprintf("Failed to read ADC for EEG\r\n"); 180 uint8_t eeg_val[2]; 181 uint8_t retval; 182 retval=nrk_read(eeg_adc_fd,&eeg_val,2); //TODO: ensure correct byte ordering 183 if(retval==NRK_ERROR) nrk_kprintf("Failed to read ADC for EEG\r\n"); 184 printf("get_eeg_val: %d\r\n", eeg_val); 180 185 return eeg_val; 181 186 } nano-RK/src/platform/imec/source/ulib.c
r457 r519 76 76 if(uart_num==1) 77 77 { 78 //TODO: fix 78 79 if( IFG2 & BM(URXIFG1) ) return 1; 79 80 } … … 101 102 { 102 103 //TODO: set unused pins as output to minimize current consumption 104 //Misc pins 103 105 nrk_gpio_raw_direction(P6DIR,MISC1,NRK_PIN_OUTPUT); 104 106 nrk_gpio_raw_direction(P6DIR,MISC2,NRK_PIN_OUTPUT); 105 107 nrk_gpio_raw_direction(P6DIR,MISC3,NRK_PIN_OUTPUT); 106 108 nrk_gpio_raw_direction(P6DIR,MISC4,NRK_PIN_OUTPUT); 109 110 //ASIC pins 111 nrk_gpio_raw_direction(P1DIR,ASIC_CLK,NRK_PIN_OUTPUT); 112 nrk_gpio_raw_direction(P2DIR,UP_RESET,NRK_PIN_OUTPUT); 113 nrk_gpio_raw_direction(P2DIR,ENABLE1,NRK_PIN_INPUT); 114 115 nrk_gpio_raw_direction(P1DIR,UP_A0_ECG,NRK_PIN_OUTPUT); 116 nrk_gpio_raw_direction(P1DIR,UP_A1_ECG,NRK_PIN_OUTPUT); 117 nrk_gpio_raw_direction(P1DIR,UP_A2_ECG,NRK_PIN_OUTPUT); 118 119 nrk_gpio_raw_direction(P2DIR,UP_A0_EEG,NRK_PIN_OUTPUT); 120 nrk_gpio_raw_direction(P2DIR,UP_A1_EEG,NRK_PIN_OUTPUT); 121 nrk_gpio_raw_direction(P2DIR,UP_A2_EEG,NRK_PIN_OUTPUT); 107 122 } 108 123
