Justin Jordan
/
MAX32630FTHR_SqwvGen
Simple square wave generator using MAX32630FTHR and a potentiometer.
main.cpp@1:649584ec899f, 2017-07-05 (annotated)
- Committer:
- j3
- Date:
- Wed Jul 05 23:37:13 2017 +0000
- Revision:
- 1:649584ec899f
- Parent:
- 0:bcb65a6f0e8a
fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
j3 | 0:bcb65a6f0e8a | 1 | /****************************************************************************** |
j3 | 0:bcb65a6f0e8a | 2 | * MIT License |
j3 | 0:bcb65a6f0e8a | 3 | * |
j3 | 0:bcb65a6f0e8a | 4 | * Copyright (c) 2017 Justin J. Jordan |
j3 | 0:bcb65a6f0e8a | 5 | * |
j3 | 0:bcb65a6f0e8a | 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
j3 | 0:bcb65a6f0e8a | 7 | * of this software and associated documentation files (the "Software"), to deal |
j3 | 0:bcb65a6f0e8a | 8 | * in the Software without restriction, including without limitation the rights |
j3 | 0:bcb65a6f0e8a | 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
j3 | 0:bcb65a6f0e8a | 10 | * copies of the Software, and to permit persons to whom the Software is |
j3 | 0:bcb65a6f0e8a | 11 | * furnished to do so, subject to the following conditions: |
j3 | 0:bcb65a6f0e8a | 12 | |
j3 | 0:bcb65a6f0e8a | 13 | * The above copyright notice and this permission notice shall be included in all |
j3 | 0:bcb65a6f0e8a | 14 | * copies or substantial portions of the Software. |
j3 | 0:bcb65a6f0e8a | 15 | |
j3 | 0:bcb65a6f0e8a | 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
j3 | 0:bcb65a6f0e8a | 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
j3 | 0:bcb65a6f0e8a | 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
j3 | 0:bcb65a6f0e8a | 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
j3 | 0:bcb65a6f0e8a | 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
j3 | 0:bcb65a6f0e8a | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
j3 | 0:bcb65a6f0e8a | 22 | * SOFTWARE. |
j3 | 0:bcb65a6f0e8a | 23 | ******************************************************************************/ |
j3 | 0:bcb65a6f0e8a | 24 | |
j3 | 0:bcb65a6f0e8a | 25 | |
j3 | 0:bcb65a6f0e8a | 26 | //Demo uses pot connected between 3.3 and GND with wiper on AIN_0. |
j3 | 0:bcb65a6f0e8a | 27 | //SQWV is generated on P4_0 |
j3 | 0:bcb65a6f0e8a | 28 | |
j3 | 0:bcb65a6f0e8a | 29 | |
j3 | 0:bcb65a6f0e8a | 30 | #include "mbed.h" |
j3 | 0:bcb65a6f0e8a | 31 | #include "max32630fthr.h" |
j3 | 0:bcb65a6f0e8a | 32 | #include "adc.h" |
j3 | 0:bcb65a6f0e8a | 33 | |
j3 | 0:bcb65a6f0e8a | 34 | |
j3 | 0:bcb65a6f0e8a | 35 | int main() |
j3 | 0:bcb65a6f0e8a | 36 | { |
j3 | 0:bcb65a6f0e8a | 37 | MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); |
j3 | 0:bcb65a6f0e8a | 38 | |
j3 | 0:bcb65a6f0e8a | 39 | MBED_ASSERT(ADC_Init() == E_NO_ERROR); |
j3 | 0:bcb65a6f0e8a | 40 | |
j3 | 0:bcb65a6f0e8a | 41 | //Init pwm signal |
j3 | 0:bcb65a6f0e8a | 42 | PwmOut pwmOut(P4_0); |
j3 | 0:bcb65a6f0e8a | 43 | pwmOut.write(0.5F); |
j3 | 0:bcb65a6f0e8a | 44 | |
j3 | 0:bcb65a6f0e8a | 45 | uint16_t rawADCdata; |
j3 | 0:bcb65a6f0e8a | 46 | float volts = 0.0F; |
j3 | 0:bcb65a6f0e8a | 47 | float period = 0.0F; |
j3 | 0:bcb65a6f0e8a | 48 | |
j3 | 1:649584ec899f | 49 | pwmOut.period(period); |
j3 | 0:bcb65a6f0e8a | 50 | |
j3 | 0:bcb65a6f0e8a | 51 | printf("\033[H"); //home |
j3 | 0:bcb65a6f0e8a | 52 | printf("\033[0J"); //erase from cursor to end of screen |
j3 | 0:bcb65a6f0e8a | 53 | |
j3 | 0:bcb65a6f0e8a | 54 | //loop |
j3 | 0:bcb65a6f0e8a | 55 | while(1) |
j3 | 0:bcb65a6f0e8a | 56 | { |
j3 | 0:bcb65a6f0e8a | 57 | //Do ADC conversion |
j3 | 0:bcb65a6f0e8a | 58 | ADC_StartConvert(ADC_CH_0_DIV_5, 1, 1); |
j3 | 0:bcb65a6f0e8a | 59 | ADC_GetData(&rawADCdata); |
j3 | 0:bcb65a6f0e8a | 60 | |
j3 | 0:bcb65a6f0e8a | 61 | //Get ADC value in volts |
j3 | 0:bcb65a6f0e8a | 62 | volts = ((6.0F * rawADCdata) / 1023.0F); |
j3 | 0:bcb65a6f0e8a | 63 | |
j3 | 1:649584ec899f | 64 | //convert to period in seconds for pwm |
j3 | 1:649584ec899f | 65 | period = (1.0F / ((300.0F * volts) + 10.0F)); |
j3 | 1:649584ec899f | 66 | |
j3 | 1:649584ec899f | 67 | //Update sqwv period |
j3 | 1:649584ec899f | 68 | pwmOut.period(period); |
j3 | 1:649584ec899f | 69 | pwmOut.write(0.5F); |
j3 | 0:bcb65a6f0e8a | 70 | |
j3 | 0:bcb65a6f0e8a | 71 | //Display data |
j3 | 0:bcb65a6f0e8a | 72 | printf("Raw Data = 0x%04x\r\n", rawADCdata); |
j3 | 0:bcb65a6f0e8a | 73 | printf("Volts = %3.2f\r\n", volts); |
j3 | 1:649584ec899f | 74 | printf("Period = %5.4f\r\n", period); |
j3 | 0:bcb65a6f0e8a | 75 | printf("\033[H"); //home |
j3 | 0:bcb65a6f0e8a | 76 | |
j3 | 0:bcb65a6f0e8a | 77 | wait(0.1F); |
j3 | 0:bcb65a6f0e8a | 78 | } |
j3 | 0:bcb65a6f0e8a | 79 | } |