Simple square wave generator using MAX32630FTHR and a potentiometer.

Dependencies:   max32630fthr

Committer:
j3
Date:
Wed Jul 05 22:49:24 2017 +0000
Revision:
0:bcb65a6f0e8a
Child:
1:649584ec899f
init commit

Who changed what in which revision?

UserRevisionLine numberNew 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 0:bcb65a6f0e8a 49 pwmOut.period_us(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 0:bcb65a6f0e8a 64 //convert to percentage for pwm
j3 0:bcb65a6f0e8a 65 period = (volts / 3.3F);
j3 0:bcb65a6f0e8a 66 if(period > 1.0F)
j3 0:bcb65a6f0e8a 67 {
j3 0:bcb65a6f0e8a 68 period = 1.0F;
j3 0:bcb65a6f0e8a 69 }
j3 0:bcb65a6f0e8a 70 pwmOut.period_us(period);
j3 0:bcb65a6f0e8a 71
j3 0:bcb65a6f0e8a 72 //Display data
j3 0:bcb65a6f0e8a 73 printf("Raw Data = 0x%04x\r\n", rawADCdata);
j3 0:bcb65a6f0e8a 74 printf("Volts = %3.2f\r\n", volts);
j3 0:bcb65a6f0e8a 75 printf("Period = %3.2f\r\n", period);
j3 0:bcb65a6f0e8a 76 printf("\033[H"); //home
j3 0:bcb65a6f0e8a 77
j3 0:bcb65a6f0e8a 78 wait(0.1F);
j3 0:bcb65a6f0e8a 79 }
j3 0:bcb65a6f0e8a 80 }