void user_init(void) { esos_init_menu(); // initilize the menu, LCD and UI configECAN1(); // init can CHANGE_MODE_ECAN1(ECAN_MODE_NORMAL); // setup the CAN esos_pic24_configI2C1(400); // setup the I2C // used for my own curiosity for the SPI transmission CONFIG_RD2_AS_DIG_OUTPUT(); _LATD2 = 1; u16_position = 0; // initial values u8_dutyCount = 0; // initial values u16_positionDACB = 0; // initial values u8_dutyCountDACB = 0; // initial values b_CANINUSE = 0; esos_create_menu(8); // setup the menu // see the .h file for details esos_insert_menu_title(TEAM, SET, SV3C, "team", '0'); esos_insert_menu_title(WAVEFORM, SET, SV3C, "wvform", '0'); esos_insert_menu_title(FREQ, SET, SVDATA, "freq", '0'); esos_insert_menu_title(AMPLTD, SET, SVDATA, "ampltd", '0'); esos_insert_menu_title(DUTY, SET, SVDATA, "duty", '0'); esos_insert_menu_title(LM60, READ, NONE, "LM60", '0'); esos_insert_menu_title(LEDSET, SET, SVDATA, "LEDs", '0'); esos_insert_menu_title(ABOUT, STATIC, NONE, "About", '0'); esos_setSV3C(TEAM, "APPLE ", "CHERRY ", "TEACHER"); esos_setSV3C(WAVEFORM, "tri ", "sine ", "square "); esos_setSVDATA(FREQ, 64, 2047, FALSE, FALSE); esos_setSVDATA(AMPLTD, 0, 30, FALSE, FALSE); esos_setSVDATA(DUTY, 0, 100, FALSE, FALSE); esos_setSVDATA(LM60, 0, 100, FALSE, FALSE); esos_setSVDATA(LEDSET, 0, 1110, TRUE, TRUE); esos_setStaticInfo(ABOUT, "Developers DIGITAL FUNCTION SYNTHESIZER", "James CPE Andrew EE John CPE Wyatt CPE"); configSPI1(); // configure the spi configTimer2(); // configure timer 2 configTimer3(); // configure timer 3 esos_setSVDATAValue(DUTY, 50); // set the default duty cycle esos_setSVDATAValue(AMPLTD, 30); // set the default ampl esos_setSV3C_VALUE(TEAM, 1); esos_setSV3C_VALUE(WAVEFORM, 1); u8_currentMenuIndex = MY_ID; // initial index is set to MY_ID // enable the interrupts ESOS_REGISTER_PIC24_USER_INTERRUPT( ESOS_IRQ_PIC24_T2, ESOS_USER_IRQ_LEVEL1, _T2Interrupt); ESOS_ENABLE_PIC24_USER_INTERRUPT(ESOS_IRQ_PIC24_T2); ESOS_REGISTER_PIC24_USER_INTERRUPT( ESOS_IRQ_PIC24_T3, ESOS_USER_IRQ_LEVEL1, _T3Interrupt); ESOS_ENABLE_PIC24_USER_INTERRUPT(ESOS_IRQ_PIC24_T3); esos_RegisterTask(LEDS); // for change in LED states esos_RegisterTask(DACA); // for change in wave esos_RegisterTask(DACB); // for change in wave esos_RegisterTask(CAN_RX); // CAN RX esos_RegisterTask(CAN_TEMP_TX); // CAN TX esos_RegisterTask(SET_TEAM); // TEAM SETUP esos_RegisterTask(BUILD_LIST); // LIST esos_RegisterTask(UPDATE_TEMP); // UPDATES THE TEMP } // end user_init()
void initScreen(){ configSPI1(); screenData.i16_x = 0; screenData.i16_y = 0; screenData.u16_textColor = 0; screenData.u16_backgroundColor = 0; screenData.u8_textSize = 1; screenData.b_wrap = 1; screenData.i16_width = LCDWIDTH; screenData.i16_height = LCDHEIGHT; screenData.u8_i2cAddr = 0x3D; //the I2C address of the screen RSTLOW(); DELAY_MS(10); RSTHIGH(); DCCONFIG(); // Init sequence for 128x64 OLED module ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 ssd1306_command(0x80); // the suggested ratio 0x80 ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 ssd1306_command(0x3F); ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 ssd1306_command(0x0); // no offset ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D if (0) { ssd1306_command(0x10); } else { ssd1306_command(0x14); } ssd1306_command(SSD1306_MEMORYMODE); // 0x20 ssd1306_command(0x00); // 0x0 act like ks0108 ssd1306_command(SSD1306_SEGREMAP | 0x1); ssd1306_command(SSD1306_COMSCANDEC); ssd1306_command(SSD1306_SETCOMPINS); // 0xDA ssd1306_command(0x12); ssd1306_command(SSD1306_SETCONTRAST); // 0x81 if (0) { ssd1306_command(0x9F); } else { ssd1306_command(0xCF); } ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 if (0) { ssd1306_command(0x22); } else { ssd1306_command(0xF1); } ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB ssd1306_command(0x40); ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel }