超音波位置認識装置
/
ADC_DMA
AD変換をしている(DMA)
main.cpp@0:a621ce2e8838, 2018-07-17 (annotated)
- Committer:
- k0050288
- Date:
- Tue Jul 17 04:52:19 2018 +0000
- Revision:
- 0:a621ce2e8838
AD??(DMA)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
k0050288 | 0:a621ce2e8838 | 1 | // F446RE ADC with DMA |
k0050288 | 0:a621ce2e8838 | 2 | // ADC read shifted to 16 bits, our readn is only 12 bits |
k0050288 | 0:a621ce2e8838 | 3 | // messy, TODO need ADC channel from pin number |
k0050288 | 0:a621ce2e8838 | 4 | |
k0050288 | 0:a621ce2e8838 | 5 | #include "mbed.h" |
k0050288 | 0:a621ce2e8838 | 6 | #include "adc.h" |
k0050288 | 0:a621ce2e8838 | 7 | #include "SD.h" |
k0050288 | 0:a621ce2e8838 | 8 | |
k0050288 | 0:a621ce2e8838 | 9 | adc gadc; |
k0050288 | 0:a621ce2e8838 | 10 | SD gSD; |
k0050288 | 0:a621ce2e8838 | 11 | |
k0050288 | 0:a621ce2e8838 | 12 | DigitalIn btn(USER_BUTTON); // User button |
k0050288 | 0:a621ce2e8838 | 13 | PwmOut OSILO_PWM(PC_7); |
k0050288 | 0:a621ce2e8838 | 14 | Serial pc(USBTX, USBRX); // tx, rx |
k0050288 | 0:a621ce2e8838 | 15 | |
k0050288 | 0:a621ce2e8838 | 16 | void user_system_create() |
k0050288 | 0:a621ce2e8838 | 17 | { |
k0050288 | 0:a621ce2e8838 | 18 | gadc.init(); |
k0050288 | 0:a621ce2e8838 | 19 | gSD.init(); |
k0050288 | 0:a621ce2e8838 | 20 | |
k0050288 | 0:a621ce2e8838 | 21 | // PWM出力の初期化処理 <PWM出力開始> |
k0050288 | 0:a621ce2e8838 | 22 | OSILO_PWM.period_ms(1); // PWM周波数は1kHz(周期:1ms) |
k0050288 | 0:a621ce2e8838 | 23 | OSILO_PWM.write(0.5f); // Duty比:50% |
k0050288 | 0:a621ce2e8838 | 24 | } |
k0050288 | 0:a621ce2e8838 | 25 | |
k0050288 | 0:a621ce2e8838 | 26 | int main() |
k0050288 | 0:a621ce2e8838 | 27 | { |
k0050288 | 0:a621ce2e8838 | 28 | /* init */ |
k0050288 | 0:a621ce2e8838 | 29 | user_system_create(); |
k0050288 | 0:a621ce2e8838 | 30 | |
k0050288 | 0:a621ce2e8838 | 31 | pc.printf("PUSH USER BUTTON\n"); |
k0050288 | 0:a621ce2e8838 | 32 | while(btn); // Wait user button |
k0050288 | 0:a621ce2e8838 | 33 | |
k0050288 | 0:a621ce2e8838 | 34 | /* Start ADC with DMA */ |
k0050288 | 0:a621ce2e8838 | 35 | pc.printf("Start ADC\n"); |
k0050288 | 0:a621ce2e8838 | 36 | gadc.read(gadc.ADCVal, sizeof(gadc.ADCVal)); |
k0050288 | 0:a621ce2e8838 | 37 | |
k0050288 | 0:a621ce2e8838 | 38 | for(int i = 0; i < ADC_TIMES; i++) { |
k0050288 | 0:a621ce2e8838 | 39 | pc.printf("%d,%d\n",i,gadc.ADCVal[i]); |
k0050288 | 0:a621ce2e8838 | 40 | } |
k0050288 | 0:a621ce2e8838 | 41 | |
k0050288 | 0:a621ce2e8838 | 42 | for(int i = 0; i < ADC_TIMES; i++) { |
k0050288 | 0:a621ce2e8838 | 43 | gSD.setData(i, gadc.ADCVal[i]); |
k0050288 | 0:a621ce2e8838 | 44 | gSD.write(); |
k0050288 | 0:a621ce2e8838 | 45 | } |
k0050288 | 0:a621ce2e8838 | 46 | |
k0050288 | 0:a621ce2e8838 | 47 | gSD.finish(); |
k0050288 | 0:a621ce2e8838 | 48 | } |