Simple square wave generator using MAX32630FTHR and a potentiometer.

Dependencies:   max32630fthr

Committer:
j3
Date:
Wed Jul 05 23:37:13 2017 +0000
Revision:
1:649584ec899f
Parent:
0:bcb65a6f0e8a
fix

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 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 }