void lcdInit(void) { SETUPgout(LCD_BL_EN); SETUPgout(LCD_RESET); SETUPgout(LCD_CS); /* prepare SPI */ SETUPpin(LCD_MOSI); SETUPpin(LCD_SCK); // Reset the display OFF(LCD_RESET); delayms(100); /* 1 ms */ ON(LCD_RESET); delayms(100); /* 5 ms */ lcd_select(); static uint8_t initseq_d[] = { /* The controller is a PCF8833 - documentation can be found online. */ 0x11, // SLEEP_OUT (wake up) 0x3A, 2, // mode 8bpp (2= 8bpp, 3= 12bpp, 5= 16bpp) 0x36, 0b11000000, // my,mx,v,lao,rgb,x,x,x 0x25, 0x3a, // set contrast 0x29, // display on 0x03, // BSTRON (booster voltage) 0x2A, 1, RESX, 0x2B, 1, RESY }; uint16_t initseq_c = ~ ( /* commands: 1, data: 0 */ (1<< 0) | (1<< 1) | (0<< 2) | (1<< 3) | (0<< 4) | (1<< 5) | (0<< 6) | (1<< 7) | (1<< 8) | (1<< 9) | (0<<10) | (0<<11) | (1<<12) | (0<<13) | (0<<14) | 0); int i = 0; lcdWrite(0, 0x01); /* most color displays need the pause */ delayms(10); while(i<sizeof(initseq_d)){ lcdWrite(initseq_c&1, initseq_d[i++]); initseq_c = initseq_c >> 1; } lcd_deselect(); lcdFill(0xff); /* Clear display buffer */ setSystemFont(); }
//# MENU led void led_menu(){ getInputWaitRelease(); uint8_t leds=0; uint8_t adc=0; while(1){ lcdClear(); lcdPrintln("LED:"); lcdPrintln(""); lcdPrintln("U Toggle LEDs"); lcdPrintln("D Toggle ADC"); lcdPrintln(""); lcdDisplay(); switch(getInput()){ case BTN_UP: adc=0; leds=1-leds; SETUPgout(LED4); if(leds){ ON(LED1); ON(LED2); ON(LED3); ON(LED4); }else{ OFF(LED1); OFF(LED2); OFF(LED3); OFF(LED4); }; break; case BTN_DOWN: adc=1; SETUPadc(LED4); break; case BTN_ENTER: SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); return; }; if(adc){ lcdPrint("LED4: "); lcdPrint(IntToStr(adc_get_single(ADC0,ADC_CR_CH6)*2*330/1023,4,F_LONG)); lcdNl(); lcdDisplay(); }; getInputWaitRelease(); }; };
//# MENU cpld void cpld_flash() { SETUPgout(EN_1V8); ON(EN_1V8); delay(1000000); /* wait until cpld boot */ cpu_clock_set(204); lcdPrintln("Program CPLD"); bytes=0; lcdPrint(IntToStr(bytes,5,F_LONG)); lcdPrint(" bytes..."); lcdNl(); #define WAIT_LOOP_DELAY (6000000) #define ALL_LEDS (PIN_LED1|PIN_LED2|PIN_LED3) int i; int error; refill_cpld_buffer_fs(); error = cpld_jtag_program(sizeof(cpld_xsvf_buffer), cpld_xsvf_buffer, refill_cpld_buffer_fs); if(error) { lcdPrintln("Programming failed!"); lcdPrintln(IntToStr(error,5,0)); lcdDisplay(); /* LED3 (Red) steady on error */ ON(LED4); while (1); }; lcdPrintln("Success."); lcdDisplay(); OFF(EN_1V8); };
void assert_die(void) { SETUPgout(LED4); while(1) { TOGGLE(LED4); delay(3000000); }; };
//# MENU cpld void cpld_menu(){ getInputWaitRelease(); SETUPgout(EN_1V8); ON(EN_1V8); delayNop(1000000); /* wait until cpld boot */ cpu_clock_set(204); lcdClear(); lcdPrintln("CPLD"); lcdNl(); lcdNl(); bytes=0; lcdPrint(IntToStr(bytes,5,F_LONG)); lcdPrint(" bytes..."); lcdNl(); #define WAIT_LOOP_DELAY (6000000) #define ALL_LEDS (PIN_LED1|PIN_LED2|PIN_LED3) int i; int error; FRESULT res; res=f_open(&file, "cpld.xsv", FA_OPEN_EXISTING|FA_READ); if(res!=FR_OK){ lcdPrintln("FOPEN ERROR"); lcdPrintln(f_get_rc_string(res)); lcdDisplay(); getInputWait(); return; }; refill_cpld_buffer_fs(); error = cpld_jtag_program(sizeof(cpld_xsvf_buffer), cpld_xsvf_buffer, refill_cpld_buffer_fs); if(error){ lcdPrintln("Programming failed!"); lcdPrintln(IntToStr(error,5,0)); lcdDisplay(); /* LED3 (Red) steady on error */ ON(LED3); while (1); }; lcdPrintln("Success."); lcdDisplay(); for (res=0;res<10;res++){ /* blink LED1, LED2, and LED3 on success */ TOGGLE(LED1); TOGGLE(LED2); TOGGLE(LED3); for (i = 0; i < WAIT_LOOP_DELAY; i++) /* Wait a bit. */ __asm__("nop"); }; /* XXX: Maybe power toggle needed to start CPLD? */ OFF(EN_1V8); };
int main(void) { cpu_clock_init(); /* CPU Clock is now 104 MHz */ ssp_clock_init(); systickInit(); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(MIC_AMP_DIS); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); lcdInit(); lcdFill(0xff); lcdPrintln("Flash-App"); lcdNl(); lcdDisplay(); cpld_flash(); cpu_clock_set(50); full_msc(); return 0; }
int main(void) { cpuClockInit(); /* CPU Clock is now 104 MHz */ ssp_clock_init(); systickInit(); // cpu_clock_set(204); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(MIC_AMP_DIS); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); lcdInit(); fsInit(); lcdFill(0xff); readConfig(); generated_init(); while(1) { handleMenu(&menu_main); getInputWaitRelease(); } return 0; }
int main(uint32_t startloc) { cpu_clock_init(); ssp_clock_init(); systickInit(); // cpu_clock_set(204); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(MIC_AMP_DIS); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); flashInit(); lcdInit(); fsInit(); lcdFill(0xff); /* Display BL Image here */ sli=startloc; if (startloc != (uintptr_t)&_app_start){ /* not booted via DFU, do autoboot */ char filename[FLEN]; switch(getInputRaw()){ case BTN_LEFT: getInputWaitRelease(); doRealExec(1); break; case BTN_UP: doMSC(); default: case BTN_NONE: readTextFile(BOOTCFG, filename, FLEN); lcdPrintln("Booting:"); lcdPrintln(filename); bootFile(filename); break; }; }; static const struct MENU main={ "Bootloader", { { "Exec Firmware", &doExec}, { "MSC", &doMSC}, { "Flash Boot Ldr", &doFlash}, { "Info", &doInfo}, {NULL,NULL} }}; do { handleMenu(&main); }while(1); }
//# MENU ws2812b void ws1812b_menu(){ uint8_t pattern[] = { 255, 255, 0, 255, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 255, 0, 0 }; uint8_t green[] = {255, 0, 0}; getInputWaitRelease(); //cpu_clock_set(17); cpu_clock_set(51); SETUPgout(RGB_LED); while(1){ lcdClear(0xff); lcdPrintln("WS2812B test"); lcdPrintln("UP: pattern"); lcdPrintln("DOWN: green"); lcdPrintln("ENTER: exit"); lcdDisplay(); switch(getInput()){ case BTN_UP: ws2812_sendarray(pattern, sizeof(pattern)); break; case BTN_DOWN: ws2812_sendarray(green, sizeof(green)); break; case BTN_LEFT: break; case BTN_RIGHT: break; case BTN_ENTER: return; break; }; }; return; };
int main(uint32_t startloc) { cpu_clock_init(); ssp_clock_init(); systick_set_reload(208000); systick_set_clocksource(0); systick_interrupt_enable(); systick_counter_enable(); // cpu_clock_pll1_max_speed(); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); flashInit(); lcdInit(); fsInit(); lcdFill(0xff); /* Display BL Image here */ sli=startloc; if (startloc != (uintptr_t)&_app_start){ /* not booted via DFU, do autoboot */ if (getInputRaw()!=BTN_LEFT){ char filename[FLEN]; readTextFile(BOOTCFG, filename, FLEN); lcdPrintln("Fname"); lcdPrintln(filename); bootFile(filename,0); }; }; static const struct MENU main={ "Bootloader", { { "Info", &doInfo}, { "Exec", &doExec}, { "Flash", &doFlash}, {NULL,NULL} }}; handleMenu(&main); return 0; }
int main(void) { cpu_clock_init_(); ssp_clock_init(); systickInit(); // cpu_clock_pll1_max_speed(); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); feldInit(); lcdInit(); fsInit(); lcdFill(0xff); static const struct MENU main={ "main 1", { { "FS", &doFS}, { "MSC", &doMSC}, { "flash", &doFlash}, { "LCD", &doLCD}, { "speed", &doSpeed}, { "ADC", &doADC}, { "feld", &doFeld}, { "chrg", &doChrg}, {NULL,NULL} }}; handleMenu(&main); return 0; }
void doChrg(){ SETUPgin(BC_DONE); SETUPgout(BC_CEN); SETUPgout(BC_PEN2); SETUPgout(BC_USUS); SETUPgout(BC_THMEN); SETUPgin(BC_IND); SETUPgin(BC_OT); SETUPgin(BC_DOK); SETUPgin(BC_UOK); SETUPgin(BC_FLT); #define GETg(x...) gpio_get(_GPIO(x)) char ct=0; int32_t vBat=0; int32_t vIn=0; while(1){ lcdClear(0xff); lcdPrintln("Charger-Test v1"); lcdPrintln(""); lcdPrint("BC_DONE ~");lcdPrint(IntToStr(GETg(BC_DONE),1,F_HEX));lcdNl(); lcdPrint("BC_IND ~");lcdPrint(IntToStr(GETg(BC_IND ),1,F_HEX));lcdNl(); lcdPrint("BC_OT ~");lcdPrint(IntToStr(GETg(BC_OT ),1,F_HEX));lcdNl(); lcdPrint("BC_DOK ~");lcdPrint(IntToStr(GETg(BC_DOK ),1,F_HEX));lcdNl(); lcdPrint("BC_UOK ~");lcdPrint(IntToStr(GETg(BC_UOK ),1,F_HEX));lcdNl(); lcdPrint("BC_FLT ~");lcdPrint(IntToStr(GETg(BC_FLT ),1,F_HEX));lcdNl(); lcdNl(); lcdPrint("U BC_CEN ~");lcdPrint(IntToStr(GETg(BC_CEN ),1,F_HEX));lcdNl(); lcdPrint("D BC_PEN2 ");lcdPrint(IntToStr(GETg(BC_PEN2 ),1,F_HEX));lcdNl(); lcdPrint("L BC_USUS ~");lcdPrint(IntToStr(GETg(BC_USUS ),1,F_HEX));lcdNl(); lcdPrint("R BC_THMEN ");lcdPrint(IntToStr(GETg(BC_THMEN),1,F_HEX));lcdNl(); lcdNl(); vBat=adc_get_single(ADC0,ADC_CR_CH3)*2*330/1023; vIn=adc_get_single(ADC0,ADC_CR_CH4)*2*330/1023; lcdPrint("vBat: "); lcdPrint(IntToStr(vBat,4,F_ZEROS));lcdNl(); lcdPrint("vIn: "); lcdPrint(IntToStr(vIn ,4,F_ZEROS));lcdNl(); lcdDisplay(); switch(getInput()){ case BTN_UP: TOGGLE(BC_CEN); break; case BTN_DOWN: TOGGLE(BC_PEN2); break; case BTN_LEFT: TOGGLE(BC_USUS); break; case BTN_RIGHT: TOGGLE(BC_THMEN); break; case BTN_ENTER: return; break; }; }; return; };
void doSpeed(){ SETUPgout(LCD_BL_EN); SETUPgout(EN_1V8); SETUPgout(LED4); int mhz=102; while(1){ TOGGLE(LED1); lcdClear(0xff); lcdPrint("speed: "); lcdPrint(IntToStr(mhz,3,0));lcdNl(); lcdDisplay(); switch(getInput()){ case BTN_UP: // mhz=204; // cpu_clock_set(mhz); #define PD0_SLEEP0_HW_ENA MMIO32(0x40042000) #define PD0_SLEEP0_MODE MMIO32(0x4004201C) PD0_SLEEP0_HW_ENA = 1; PD0_SLEEP0_MODE = 0x003000AA; SCB_SCR|=SCB_SCR_SLEEPDEEP; ON(LED1); CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_IRC) | CGU_BASE_M4_CLK_AUTOBLOCK(1)); CGU_PLL1_CTRL= CGU_PLL1_CTRL_PD(1); CGU_PLL0USB_CTRL= CGU_PLL1_CTRL_PD(1); CGU_PLL0AUDIO_CTRL= CGU_PLL1_CTRL_PD(1); CGU_XTAL_OSC_CTRL &= ~(CGU_XTAL_OSC_CTRL_ENABLE_MASK); #define __WFI() __asm__("wfi") while(1){ TOGGLE(LED1); __WFI(); }; break; case BTN_DOWN: mhz=12; cpu_clock_set(mhz); break; case BTN_LEFT: while(1){ cpu_clock_set(102); TOGGLE(LED1); delayNop(1000); cpu_clock_set(12); TOGGLE(LED1); delayNop(1000); }; break; case BTN_RIGHT: TOGGLE(LCD_BL_EN); OFF(BY_MIX_N); OFF(BY_MIX); OFF(BY_AMP_N); OFF(BY_AMP); OFF(TX_RX_N); OFF(TX_RX); OFF(LOW_HIGH_FILT_N); OFF(LOW_HIGH_FILT); OFF(TX_AMP); OFF(RX_LNA); OFF(MIXER_EN); OFF(CE_VCO); // cpu_clock_set(mhz); break; case BTN_ENTER: // turnoff(&CCU1_CLK_APB3_BUS_CFG); turnoff(&CCU1_CLK_APB3_I2C1_CFG); turnoff(&CCU1_CLK_APB3_DAC_CFG); turnoff(&CCU1_CLK_APB3_ADC0_CFG); turnoff(&CCU1_CLK_APB3_ADC1_CFG); turnoff(&CCU1_CLK_APB3_CAN0_CFG); // turnoff(&CCU1_CLK_APB1_BUS_CFG); turnoff(&CCU1_CLK_APB1_MOTOCONPWM_CFG); turnoff(&CCU1_CLK_APB1_I2C0_CFG); turnoff(&CCU1_CLK_APB1_I2S_CFG); turnoff(&CCU1_CLK_APB1_CAN1_CFG); turnoff(&CCU1_CLK_SPIFI_CFG); // turnoff(&CCU1_CLK_M4_BUS_CFG); turnoff(&CCU1_CLK_M4_SPIFI_CFG); // turnoff(&CCU1_CLK_M4_GPIO_CFG); turnoff(&CCU1_CLK_M4_LCD_CFG); turnoff(&CCU1_CLK_M4_ETHERNET_CFG); turnoff(&CCU1_CLK_M4_USB0_CFG); turnoff(&CCU1_CLK_M4_EMC_CFG); turnoff(&CCU1_CLK_M4_SDIO_CFG); turnoff(&CCU1_CLK_M4_DMA_CFG); // turnoff(&CCU1_CLK_M4_M4CORE_CFG); turnoff(&CCU1_CLK_M4_SCT_CFG); turnoff(&CCU1_CLK_M4_USB1_CFG); turnoff(&CCU1_CLK_M4_EMCDIV_CFG); turnoff(&CCU1_CLK_M4_M0APP_CFG); turnoff(&CCU1_CLK_M4_VADC_CFG); turnoff(&CCU1_CLK_M4_WWDT_CFG); turnoff(&CCU1_CLK_M4_USART0_CFG); turnoff(&CCU1_CLK_M4_UART1_CFG); turnoff(&CCU1_CLK_M4_SSP0_CFG); turnoff(&CCU1_CLK_M4_TIMER0_CFG); turnoff(&CCU1_CLK_M4_TIMER1_CFG); // turnoff(&CCU1_CLK_M4_SCU_CFG); // turnoff(&CCU1_CLK_M4_CREG_CFG); turnoff(&CCU1_CLK_M4_RITIMER_CFG); turnoff(&CCU1_CLK_M4_USART2_CFG); turnoff(&CCU1_CLK_M4_USART3_CFG); turnoff(&CCU1_CLK_M4_TIMER2_CFG); turnoff(&CCU1_CLK_M4_TIMER3_CFG); // turnoff(&CCU1_CLK_M4_SSP1_CFG); turnoff(&CCU1_CLK_M4_QEI_CFG); // turnoff(&CCU1_CLK_PERIPH_BUS_CFG); turnoff(&CCU1_CLK_PERIPH_CORE_CFG); turnoff(&CCU1_CLK_PERIPH_SGPIO_CFG); turnoff(&CCU1_CLK_USB0_CFG); turnoff(&CCU1_CLK_USB1_CFG); // turnoff(&CCU1_CLK_SPI_CFG); turnoff(&CCU1_CLK_VADC_CFG); turnoff(&CCU2_CLK_APLL_CFG); turnoff(&CCU2_CLK_APB2_USART3_CFG); turnoff(&CCU2_CLK_APB2_USART2_CFG); turnoff(&CCU2_CLK_APB0_UART1_CFG); turnoff(&CCU2_CLK_APB0_USART0_CFG); // turnoff(&CCU2_CLK_APB2_SSP1_CFG); turnoff(&CCU2_CLK_APB0_SSP0_CFG); turnoff(&CCU2_CLK_SDIO_CFG); // clkoff(& CGU_BASE_SAFE_CLK); clkoff(& CGU_BASE_USB0_CLK); clkoff(& CGU_BASE_PERIPH_CLK); clkoff(& CGU_BASE_USB1_CLK); // clkoff(& CGU_BASE_M4_CLK); clkoff(& CGU_BASE_SPIFI_CLK); clkoff(& CGU_BASE_SPI_CLK); clkoff(& CGU_BASE_PHY_RX_CLK); clkoff(& CGU_BASE_PHY_TX_CLK); clkoff(& CGU_BASE_APB1_CLK); clkoff(& CGU_BASE_APB3_CLK); clkoff(& CGU_BASE_LCD_CLK); clkoff(& CGU_BASE_VADC_CLK); clkoff(& CGU_BASE_SDIO_CLK); clkoff(& CGU_BASE_SSP0_CLK); clkoff(& CGU_BASE_SSP1_CLK); clkoff(& CGU_BASE_UART0_CLK); clkoff(& CGU_BASE_UART1_CLK); clkoff(& CGU_BASE_UART2_CLK); clkoff(& CGU_BASE_UART3_CLK); clkoff(& CGU_BASE_AUDIO_CLK); clkoff(& CGU_BASE_CGU_OUT0_CLK); clkoff(& CGU_BASE_CGU_OUT1_CLK); // return; break; }; }; };
//# MENU feldtest void feld_menu(){ getInputWaitRelease(); SETUPgout(BY_AMP); SETUPgout(BY_AMP_N); SETUPgout(TX_RX); SETUPgout(TX_RX_N); SETUPgout(BY_MIX); SETUPgout(BY_MIX_N); SETUPgout(LOW_HIGH_FILT); SETUPgout(LOW_HIGH_FILT_N); SETUPgout(TX_AMP); SETUPgout(RX_LNA); SETUPgout(CE_VCO); SETUPgout(MIXER_EN); char tu=0,td=0,tl=0,tr=0; char tuN=0,tdN=0,tlN=0,trN=0; char page=0; char tu2=0,td2=0,td2N=0,tl2=0,tr2=0; uint16_t sf=3500; char tu3=0,td3=0,tl3=0,tr3=0; int ctr=0; while (1) { lcdClear(0xff); lcdPrintln("Feld-Test v12"); lcdPrintln(""); lcdPrint("Page ");lcdPrintln(IntToStr(page,2,0)); if (page==0){ tu=GET(BY_MIX); tuN=GET(BY_MIX_N); lcdPrint(IntToStr(tu,1,F_HEX)); lcdPrint(IntToStr(tuN,1,F_HEX)); lcdPrintln(" Up BY_MIX/_N"); td=GET(BY_AMP); tdN=GET(BY_AMP_N); lcdPrint(IntToStr(td,1,F_HEX)); lcdPrint(IntToStr(tdN,1,F_HEX)); lcdPrintln(" Dn BY_AMP/_N"); tl=GET(TX_RX);tlN=GET(TX_RX_N); lcdPrint(IntToStr(tl,1,F_HEX)); lcdPrint(IntToStr(tlN,1,F_HEX)); lcdPrintln(" Lt TX_RX/_N"); tr=GET(LOW_HIGH_FILT); trN=GET(LOW_HIGH_FILT_N); lcdPrint(IntToStr(tr,1,F_HEX)); lcdPrint(IntToStr(trN,1,F_HEX)); lcdPrintln(" Rt LOW_HIGH_FILT/_N"); lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: tu=1-tu; if (tu){ OFF(BY_MIX_N); ON(BY_MIX); }else{ OFF(BY_MIX); ON(BY_MIX_N); }; break; case BTN_DOWN: td=1-td; if (td){ OFF(BY_AMP_N); ON(BY_AMP); }else{ OFF(BY_AMP); ON(BY_AMP_N); }; break; case BTN_LEFT: tl=1-tl; if (tl){ OFF(TX_RX_N); ON(TX_RX); }else{ OFF(TX_RX); ON(TX_RX_N); }; break; case BTN_RIGHT: tr=1-tr; if (tr){ OFF(LOW_HIGH_FILT_N); ON(LOW_HIGH_FILT); }else{ OFF(LOW_HIGH_FILT); ON(LOW_HIGH_FILT_N); }; break; case BTN_ENTER: page++; break; }; }else if (page==1){ lcdPrint(" "); lcdPrintln(" Up "); td2=GET(RX_LNA);td2N=GET(TX_AMP); lcdPrint(IntToStr(td2,1,F_HEX)); lcdPrint(IntToStr(td2N,1,F_HEX)); lcdPrintln(" Dn RX/TX"); lcdPrint(IntToStr(tl2,1,F_HEX)); lcdPrint(" "); lcdPrintln(" Lt MIXER_EN"); lcdPrint(IntToStr(tr2,1,F_HEX)); lcdPrint(" "); if(tr2){ lcdPrintln(" Rt SI-clk_dis"); }else{ lcdPrintln(" Rt SI-clk_en"); }; lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: tu2=1-tu2; if (tu2){ ; }else{ ; }; break; case BTN_DOWN: td2=td2+2*td2N; td2++; td2=td2%3; switch (td2){ case(0): OFF(RX_LNA); OFF(TX_AMP); break; case(1): ON(RX_LNA); OFF(TX_AMP); break; case(2): OFF(RX_LNA); ON(TX_AMP); break; }; break; case BTN_LEFT: tl2=1-tl2; if (tl2){ ON(MIXER_EN); }else{ OFF(MIXER_EN); }; break; case BTN_RIGHT: tr2=1-tr2; if (tr2){ si5351c_power_down_all_clocks(); }else{ si5351c_set_clock_source(PLL_SOURCE_XTAL); }; break; case BTN_ENTER: page++; break; }; }else if (page==2){ lcdPrint("SF: ");lcdPrint(IntToStr(sf,4,F_LONG)); lcdPrintln(" MHz"); tl3=GET(CE_VCO); lcdPrint(IntToStr(tl3,1,F_HEX)); lcdPrint(" "); lcdPrintln(" Lt CE_VCO"); lcdPrint(" "); lcdPrintln(" Rt "); lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: sf+=100; mixer_set_frequency(sf); break; case BTN_DOWN: sf-=100; mixer_set_frequency(sf); break; case BTN_LEFT: tl3=1-tl3; if (tl3){ ON(CE_VCO); mixer_setup(); mixer_set_frequency(sf); }else{ OFF(CE_VCO); }; break; case BTN_RIGHT: tr3=1-tr3; if (tr3){ ; }else{ ; }; break; case BTN_ENTER: page++; break; }; }; if (page>2){page=0;} ON(LED1); delay(200000); OFF(LED1); delay(200000); // ctr++; lcdNl(); lcdPrint(IntToStr(ctr,4,F_HEX)); lcdDisplay(); } };