Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if defined (__USE_LPCOPEN)
- #if defined(NO_BOARD_LIB)
- #include "chip.h"
- #else
- #include "board.h"
- #endif
- #endif
- #include <cr_section_macros.h>
- #include "oled.h"
- #define _LPC_ADC_ID LPC_ADC
- #define FS 20
- #define SCREEN_WIDTH OLED_WIDTH
- #define SCREEN_EX (OLED_WIDTH-1)
- #define SCREEN_EY (OLED_HEIGHT-1)
- #define FRAME_UP 10
- #define FRAME_CN 36
- #define FRAME_DW 63
- #define SCALE 53
- uint16_t dataADC;
- float Vdata;
- char sbuffer[30];
- uint16_t y = 0, y1 = FRAME_CN, x = 0;
- /*--------------------------------------------------------------------------------*/
- void ADC_IRQHandler(void) {
- Chip_ADC_ReadValue(_LPC_ADC_ID, ADC_CH0, &dataADC);
- Vdata = (dataADC) / 4095.0;
- y = SCREEN_EY - Vdata * SCALE;
- OLED_ClearVerLine(x, 15);
- OLED_Draw_Dotline(0, FRAME_UP, SCREEN_EX, FRAME_UP);
- OLED_Draw_Dotline(0, FRAME_CN, SCREEN_EX, FRAME_CN);
- OLED_Draw_Dotline(0, FRAME_DW, SCREEN_EX, FRAME_DW);
- OLED_Draw_Line(x, y1, x, y);
- y1 = y;
- x++;
- if (x >= SCREEN_WIDTH) {
- x = 0;
- // OLED_Clear_Screen(0);
- }
- sprintf(sbuffer, "Voltage: %5.2f [V]", Vdata * 3.3);
- OLED_Puts(0, 0, sbuffer);
- OLED_Refresh_Gram();
- }
- /*--------------------------------------------------------------------------------*/
- int main(void) {
- static ADC_CLOCK_SETUP_T ADCSetup;
- uint32_t timerFreq;
- #if defined (__USE_LPCOPEN)
- // Read clock settings and update SystemCoreClock variable
- SystemCoreClockUpdate();
- #if !defined(NO_BOARD_LIB)
- // Set up and initialize all required blocks and
- // functions related to the board hardware
- Board_Init();
- // Set the LED to the state of "On"
- Board_LED_Set(0, true);
- #endif
- #endif
- // TODO: insert code here
- /*--------------------- OLED Init -----------------------*/
- OLED_Init();
- /*--------------------- ADC Init ------------------------*/
- Chip_ADC_Init(_LPC_ADC_ID, &ADCSetup);
- Chip_ADC_Int_SetChannelCmd(_LPC_ADC_ID, ADC_CH0, ENABLE);
- Chip_ADC_EnableChannel(_LPC_ADC_ID, ADC_CH0, ENABLE);
- NVIC_ClearPendingIRQ(ADC_IRQn);
- NVIC_EnableIRQ(ADC_IRQn);
- Chip_ADC_SetStartMode(_LPC_ADC_ID, ADC_START_ON_ADCTRIG0,
- ADC_TRIGGERMODE_RISING);
- /*-------------------- Timer32_0 Init --------------------*/
- Chip_TIMER_Init(LPC_TIMER32_0);
- timerFreq = Chip_Clock_GetSystemClockRate();
- Chip_TIMER_Reset(LPC_TIMER32_0);
- Chip_TIMER_MatchEnableInt(LPC_TIMER32_0, 0);
- Chip_TIMER_SetMatch(LPC_TIMER32_0, 0, (timerFreq / (2 * FS)));
- Chip_TIMER_ResetOnMatchEnable(LPC_TIMER32_0, 0);
- Chip_TIMER_ExtMatchControlSet(LPC_TIMER32_0, 0, TIMER_EXTMATCH_TOGGLE, 0);
- Chip_TIMER_Enable(LPC_TIMER32_0);
- /*-------------------- End of Init ----------------------*/
- // OLED_Draw_Dotline(0, FRAME_UP, SCREEN_EX, FRAME_UP);
- // OLED_Draw_Dotline(0, FRAME_CN, SCREEN_EX, FRAME_CN);
- // OLED_Draw_Dotline(0, FRAME_DW, SCREEN_EX, FRAME_DW);
- OLED_Refresh_Gram();
- while (1) {
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement