Changeset - c31e71728728
[Not reviewed]
default
0 4 0
Ethan Zonca - 11 years ago 2014-08-13 23:11:50
ez@ethanzonca.com
Try getting block writing working. Also start modifying USB library. Looks like we may need to transition to a fresh USBlib download, this has freaky defines.
4 files changed with 31 insertions and 64 deletions:
0 comments (0 inline, 0 general)
main.c
Show inline comments
 
#include "main.h"
 
#include "stm32l100c_discovery.h"
 
#include "ssd1306.h"
 
 
// USB includes
 
#include "hw_config.h"
 
#include "usb_lib.h"
 
#include "usb_desc.h"
 
#include "usb_pwr.h"
 
 
#define LED_POWER GPIOB,GPIO_Pin_9
 
#define LED_STAT  GPIOA,GPIO_Pin_15
 
 
#define MAX_CS GPIOB,GPIO_Pin_12
 
 
// TODO: Grab buttonpresses with interrupts
 
#define SW_BTN  GPIOB, GPIO_Pin_3
 
#define SW_UP   GPIOB, GPIO_Pin_7
 
#define SW_DOWN GPIOB, GPIO_Pin_6
 
#define SW_LEFT GPIOB, GPIO_Pin_5
 
#define SW_RIGHT GPIOB, GPIO_Pin_4
 
 
 
static __IO uint32_t TimingDelay;
 
 
void init_gpio();
 
void init_spi();
 
void process();
 
void machine();
 
 
int main(void)
 
{
 
 
    // Init clocks
 
    SystemInit();
 
 
    init_gpio();
 
 
    Set_USBClock();
 
    USB_Interrupts_Config();
 
    GPIO_SetBits(LED_POWER);
 
    //USB_Init(); // freezes here... maybe clock issue?
 
    USB_Init(); // freezes here... maybe clock issue?
 
 
    RCC_ClocksTypeDef RCC_Clocks;
 
 
    // SysTick end of count event each 1ms
 
    RCC_GetClocksFreq(&RCC_Clocks);
 
    SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
 
 
    GPIO_ResetBits(LED_STAT);
 
    Delay(100);
 
    GPIO_SetBits(LED_POWER);
 
    Delay(500);
 
    GPIO_ResetBits(LED_POWER);
 
 
    init_spi();
 
 
    ssd1306_Init();
 
    ssd1306_DrawPoint(3,3,1);
 
    ssd1306_DrawPoint(5,5,0);
 
 
 
    while(1)
 
   {  
 
        ssd1306_block_write();
 
 
        // Process sensor inputs [TODO: 5hz?]
 
        process();
 
 
        // Run state machine [TODO: 50hz?]
 
        machine(); 
 
        // probably just passed the actual port
 
 
        // TODO: Grab buttonpresses with interrupts
 
        uint8_t sw_btn = GPIO_ReadInputDataBit(SW_BTN);
 
        uint8_t sw_up = GPIO_ReadInputDataBit(SW_UP);
 
        uint8_t sw_down = GPIO_ReadInputDataBit(SW_DOWN);
 
        uint8_t sw_left = GPIO_ReadInputDataBit(SW_LEFT);
 
        uint8_t sw_right = GPIO_ReadInputDataBit(SW_RIGHT);
 
 
        SPI_I2S_SendData(SPI2,0xFA);
 
        SPI_I2S_SendData(SPI1,0xFA);
 
//        SPI_I2S_SendData(SPI2,0xFA);
 
//        SPI_I2S_SendData(SPI1,0xFA);
 
 
        if(!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3)) {
 
            GPIO_ToggleBits(LED_STAT);
 
        }
 
 
        GPIO_SetBits(LED_POWER);
 
        Delay(50);
 
        GPIO_ResetBits(LED_POWER);
 
        Delay(50);
 
    }
 
}
 
 
int32_t temp = 0;
 
int32_t setpoint = 0;
 
int32_t p = 1;
 
int32_t i = 1;
 
int32_t d = 1;
 
 
// Process things
 
void process()
 
{
 
    // Read MAX temp sensor
 
    GPIO_ResetBits(MAX_CS);
 
 
    // Assert CS
 
    // This may not clock at all... might need to send 16 bits first
 
    uint8_t retval = SPI_I2S_ReceiveData(SPI2);
 
    uint8_t retval = 0;//SPI_I2S_ReceiveData(SPI2);
 
 
    // Deassert CS
 
    GPIO_SetBits(MAX_CS);
 
 
    if((!retval || (temp & 0x2) != 0))
 
        return; // Comms error - this is happening right now
 
 
    if((temp & 0x4)!= 0)
 
        return; // Open thermocouple
 
 
 
    temp = (temp & 0x7FF8) >> 5;
 
 
 
    // TODO: Add calibration offset (linear)
 
 
 
    // Perform PID calculations
 
 
    // Write output to SSR
 
}
 
 
 
 
enum state {
 
    STATE_IDLE = 0,
 
    STATE_SETP,
 
    STATE_SETI,
 
    STATE_SETD,
 
 
    STATE_PREHEAT_BREW,
 
    STATE_MAINTAIN_BREW,
 
    STATE_PREHEAT_STEAM,
 
    STATE_MAINTAIN_STEAM,
 
};
 
 
 
uint8_t state = STATE_IDLE;
 
 
// State machine
 
void machine()
 
{
 
    
 
    switch(state)
 
    {
 
        // Idle state
 
        case STATE_IDLE:
 
        {
 
            // Write text to OLED
 
            // [ therm :: idle ]
 
 
            // Button handler
 
            if(GPIO_ReadInputDataBit(SW_BTN)) {
 
                state = STATE_SETP;
 
            }
 
 
            // Event Handler
 
            // N/A
 
 
        } break;
 
 
        case STATE_SETP:
 
        {
 
            // Write text to OLED
 
            // [ therm :: set p ]
 
            // [ p = 12         ]
 
 
            // Button handler
 
            if(GPIO_ReadInputDataBit(SW_BTN)) {
 
                state = STATE_IDLE;
 
            }
 
 
            // Event Handler
 
            // N/A
 
 
 
        } break;
 
 
        case STATE_SETI:
 
        {
 
            // Write text to OLED
 
            // [ therm :: set i ]
 
            // [ i = 12         ]
 
 
            // Button handler
 
            if(GPIO_ReadInputDataBit(SW_BTN)) {
 
                state = STATE_IDLE;
 
            }
 
 
            // Event Handler
 
            // N/A
 
 
 
        } break;
 
 
        case STATE_SETD:
 
        {
 
            // Write text to OLED
platform_config.h
Show inline comments
 
@@ -3,162 +3,106 @@
 
  * @file    platform_config.h
 
  * @author  MCD Application Team
 
  * @version V4.0.0
 
  * @date    21-January-2013
 
  * @brief   Evaluation board specific configuration file.
 
  ******************************************************************************
 
  * @attention
 
  *
 
  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
 
  *
 
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
 
  * You may not use this file except in compliance with the License.
 
  * You may obtain a copy of the License at:
 
  *
 
  *        http://www.st.com/software_license_agreement_liberty_v2
 
  *
 
  * Unless required by applicable law or agreed to in writing, software 
 
  * distributed under the License is distributed on an "AS IS" BASIS, 
 
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  * See the License for the specific language governing permissions and
 
  * limitations under the License.
 
  *
 
  ******************************************************************************
 
  */
 
 
 
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __PLATFORM_CONFIG_H
 
#define __PLATFORM_CONFIG_H
 
 
#define STM32L1XX_MD
 
 
/* Includes ------------------------------------------------------------------*/
 
#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS)
 
 #include "stm32l1xx.h"
 
 #include "evalcompat.h"
 
// #if defined (USE_STM32L152_EVAL)
 
//  #include "stm32l152_eval.h"
 
// #elif defined (USE_STM32L152D_EVAL)
 
//  #include "stm32l152d_eval.h"
 
// #else
 
//  #error "Missing define: USE_STM32L152_EVAL or USE_STM32L152D_EVAL"
 
// #endif /* USE_STM32L152_EVAL */
 
#elif defined (STM32F10X_MD) || defined (STM32F10X_HD) || defined (STM32F10X_XL)
 
 #include "stm32f10x.h"
 
 #if defined (USE_STM3210B_EVAL)
 
  #include "stm3210b_eval.h"
 
 #elif defined (USE_STM3210E_EVAL)
 
  #include "stm3210e_eval.h"
 
 #else
 
  #error "Missing define: USE_STM3210B_EVAL or USE_STM3210E_EVAL"
 
 #endif /* USE_STM3210B_EVAL */
 
#elif defined (USE_STM32373C_EVAL)
 
 #include "stm32f37x.h"
 
 #include "stm32373c_eval.h"
 
#elif defined (USE_STM32303C_EVAL)
 
 #include "stm32f30x.h"
 
 #include "stm32303c_eval.h"
 
#endif
 
 
/* Exported types ------------------------------------------------------------*/
 
/* Exported constants --------------------------------------------------------*/
 
/* Uncomment the line corresponding to the STMicroelectronics evaluation board
 
   used to run the example */
 
#if !defined (USE_STM3210B_EVAL) &&  !defined (USE_STM3210E_EVAL)  && !defined (USE_STM32L152_EVAL) &&  !defined (USE_STM32L152D_EVAL) &&  !defined (USE_STM32373C_EVAL) && !defined (USE_STM32303C_EVAL)
 
//#define USE_STM3210B_EVAL
 
//#define USE_STM3210E_EVAL
 
#define USE_STM32L152_EVAL
 
//#define USE_STM32L152D_EVAL
 
//#define (USE_STM32373C_EVAL)
 
//#define USE_STM32303C_EVAL
 
#endif
 
 
/*Unique Devices IDs register set*/
 
 
#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD) || defined(STM32L1XX_MD_PLUS) 
 
 
#define         ID1          (0x1FF80050)
 
#define         ID2          (0x1FF80054)
 
#define         ID3          (0x1FF80064)
 
 
#elif defined (STM32F37X) || defined(STM32F30X)
 
 
#define         ID1          (0x1FFFF7AC)
 
#define         ID2          (0x1FFFF7B0)
 
#define         ID3          (0x1FFFF7B4)
 
 
#else /*STM32F1x*/
 
 
#define         ID1          (0x1FFFF7E8)
 
#define         ID2          (0x1FFFF7EC)
 
#define         ID3          (0x1FFFF7F0)
 
 
#endif
 
 
/* Define the STM32F10x hardware depending on the used evaluation board */
 
#ifdef USE_STM3210B_EVAL
 
  #define USB_DISCONNECT                      GPIOD  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_9
 
  #define RCC_APB2Periph_GPIO_DISCONNECT      RCC_APB2Periph_GPIOD
 
  #define EVAL_COM1_IRQHandler                USART1_IRQHandler 
 
 
#elif defined (USE_STM3210E_EVAL)
 
  #define USB_DISCONNECT                      GPIOB  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_14
 
  #define RCC_APB2Periph_GPIO_DISCONNECT      RCC_APB2Periph_GPIOB
 
  #define EVAL_COM1_IRQHandler                USART1_IRQHandler 
 
 
 
 
#elif defined (USE_STM32L152_EVAL) || defined (USE_STM32L152D_EVAL)
 
 /* 
 
   For STM32L15xx devices it is possible to use the internal USB pullup
 
   controlled by register SYSCFG_PMC (refer to RM0038 reference manual for
 
   more details).
 
   It is also possible to use external pullup (and disable the internal pullup)
 
   by setting the define USB_USE_EXTERNAL_PULLUP in file platform_config.h
 
   and configuring the right pin to be used for the external pull up configuration.
 
   To have more details on how to use an external pull up, please refer to 
 
   STM3210E-EVAL evaluation board manuals.
 
   */
 
 /* Uncomment the following define to use an external pull up instead of the 
 
    integrated STM32L15xx internal pull up. In this case make sure to set up
 
    correctly the external required hardware and the GPIO defines below.*/
 
/* #define USB_USE_EXTERNAL_PULLUP */
 
 
 #if !defined(USB_USE_EXTERNAL_PULLUP)
 
  #define STM32L15_USB_CONNECT                SYSCFG_USBPuCmd(ENABLE)
 
  #define STM32L15_USB_DISCONNECT             SYSCFG_USBPuCmd(DISABLE)
 
 
 #elif defined(USB_USE_EXTERNAL_PULLUP)
 
  /* PA0 is chosen just as illustrating example, you should modify the defines
 
    below according to your hardware configuration. */ 
 
  #define USB_DISCONNECT                      GPIOA
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_0
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOA
 
  #define STM32L15_USB_CONNECT                GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN)
 
  #define STM32L15_USB_DISCONNECT             GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN)
 
 #endif /* USB_USE_EXTERNAL_PULLUP */
 
 
#elif defined (USE_STM32373C_EVAL)
 
  #define USB_DISCONNECT                      GPIOC  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_5
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOC
 
 
#elif defined (USE_STM32303C_EVAL)
 
  #define USB_DISCONNECT                      GPIOB  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_8
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOB
 
#endif /* USE_STM3210B_EVAL */
 
 
#if defined (USE_STM32L152_EVAL) || (USE_STM32373C_EVAL)
 
 #define EVAL_COM1_IRQHandler                USART2_IRQHandler
 
#elif defined (USE_STM32L152D_EVAL) || (USE_STM32303C_EVAL)
 
 #define EVAL_COM1_IRQHandler              USART1_IRQHandler
 
#endif
 
#define USB_DISCONNECT_PIN                  GPIO_Pin_10
 
#define RCC_APB2Periph_GPIO_DISCONNECT      RCC_APB2Periph_GPIOA
 
 
/* Exported macro ------------------------------------------------------------*/
 
/* Exported functions ------------------------------------------------------- */
 
 
#endif /* __PLATFORM_CONFIG_H */
 
 
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
ssd1306.c
Show inline comments
 
/*******************************************************************************
 
* File Name          : ssd1306.c
 
* Author             : lxyppc
 
* Version            : V1.0
 
* Date               : 10-01-21
 
* Description        : ssd1306 operations
 
*                      the SSH1101A is compatible with ssd1306
 
*******************************************************************************/
 
 
/* Includes ------------------------------------------------------------------*/
 
#include "stm32l100c_discovery.h"
 
#include "bsp.h"
 
#include "ssd1306.h"
 
#include "DrawText.h"
 
 
/* Private typedef -----------------------------------------------------------*/
 
/* Private define ------------------------------------------------------------*/
 
#define   SSD1306_PAGE_NUMBER           8
 
#define   SSD1306_COLUMN_NUMBER         128
 
#define   SSD1306_COLUMN_MARGIN_START   2
 
#define   SSD1306_COLUMN_MARGIN_END     2
 
#define   SSD1306_X_PIXEL   128
 
#define   SSD1306_Y_PIXEL   64
 
 
/* Private macro -------------------------------------------------------------*/
 
#define   ssd1306_Buffer    (_SSD1306_Buffer + SSD1306_COLUMN_MARGIN_START)
 
 
/* Private variables ---------------------------------------------------------*/
 
static  uint8_t  _SSD1306_Buffer[SSD1306_COLUMN_NUMBER*SSD1306_PAGE_NUMBER + SSD1306_COLUMN_MARGIN_START + SSD1306_COLUMN_MARGIN_END] = {0};
 
static  uint8_t  pageIndex = 0;
 
static  uint8_t  iS_SSD_On = 0;
 
static  uint8_t  pre_on = 0;
 
static  uint8_t  curContrast = 0xCC;
 
static  uint8_t  lastContrast = 0xCC;
 
 
/* Private function prototypes -----------------------------------------------*/
 
void  WriteCommand(unsigned char command);
 
void  WriteData(unsigned char data);
 
void  OnPageTransferDone(void);
 
unsigned long ssd1306_OFF(void);
 
unsigned long ssd1306_ON(void);
 
unsigned char* ssd1306_GetBuffer()
 
{
 
  return ssd1306_Buffer;
 
}
 
/*******************************************************************************
 
* Function Name  : WriteCommand
 
* Description    : Write command to the ssd1306
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
void WriteCommand(unsigned char command)
 
{
 
  SSD_A0_Low();
 
  SPI_SendByte(command);
 
  SPI_Wait();
 
}
 
 
/*******************************************************************************
 
* Function Name  : WriteData
 
* Description    : Write data to the ssd1306
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
void WriteData(unsigned char data)
 
{
 
  SSD_A0_High();
 
  SPI_SendByte(data);
 
  SPI_Wait();
 
}
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_Init
 
* Description    : Initialize the ssd1306
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
void ssd1306_Init(void)
 
{
 
 
  /* Generate a reset */
 
  SSD_Reset_Low();
 
  uint32_t i;
 
  for(i=5000; i>1; i--) 
 
  SSD_Reset_High();
 
  
 
  /*************************************************
 
  // ssd1306 Initialization Command
 
  *************************************************/
 
  // Lower Column Address
 
  WriteCommand(0x00); /* Set Lower Column Address */
 
  GPIO_SetBits(GPIOA,GPIO_Pin_15);
 
  GPIO_SetBits(GPIOA,GPIO_Pin_15);//turn on status LED
 
  // High Column Address
 
  WriteCommand(0x10); /* Set Higher Column Address*/
 
  // Display Start Line
 
  WriteCommand(0x40); /* Set Display Start Line */
 
#ifdef    DEBUG_BOARD
 
  curContrast = lastContrast = 0x30;
 
#else
 
  curContrast = lastContrast = 0xCF;
 
#endif
 
  // Contrast Control Register
 
  WriteCommand(0x81); /* Set Contrast Control */
 
  WriteCommand(lastContrast); /* 0 ~ 255 0x1f*/
 
  
 
  // Re-map
 
  WriteCommand(0xA1); /* [A0]:column address 0 is map 
 
  to SEG0 , [A1]: columnaddress 131 is map to SEG0*/ 
 
  // Entire Display ON/OFF
 
  WriteCommand(0xA4); /* A4=ON */
 
  // Normal or Inverse Display
 
  WriteCommand(0XA6); /* Normal Display*/
 
  // Multiplex Ratio
 
  WriteCommand(0xA8); /* Set Multiplex Ratio */
 
  WriteCommand(0x3f); /* Set to 36 Mux*/
 
  // Set DC-DC
 
  WriteCommand(0xAD); /* Set DC-DC */
 
  WriteCommand(0x8B); /* 8B=ON, 8A=Off */
 
 
 
 
 
  // Display ON/OFF
 
  WriteCommand(0xAE); /* AF=ON , AE=OFF*/
 
  // Display Offset
 
  WriteCommand(0xD3); /* Set Display Offset */
 
  WriteCommand(0x00); /* No offset */
 
  // Display Clock Divide
 
  WriteCommand(0xD5); /* Set Clock Divide */
 
  WriteCommand(0x20); /* Set to 80Hz */
 
  // Area Color Mode
 
  WriteCommand(0xD8); /* Set Area Color On or Off*/
 
  WriteCommand(0x00); /* Mono Mode */
 
  // COM Pins Hardware Configuration
 
  WriteCommand(0xDA); /* Set Pins HardwareConfiguration */
 
  WriteCommand(0x12);
 
  // VCOMH
 
  WriteCommand(0xDB); /* Set VCOMH */
 
  WriteCommand(0x00);
 
  // VP
 
  WriteCommand(0xD9); /* Set VP */
 
  WriteCommand(0x22); /* P1=2 , P2=2 */
 
  
 
  // Set Common output scan direction
 
  WriteCommand(0xc8);/* Set COM scan direction */
 
  
 
  // For SSD1306 Set the address mode
 
  WriteCommand(0x20);/* Set address mode */
 
  WriteCommand(0x00);/* Set address mode horizontal */
 
  
 
  // Set the page start address
 
  WriteCommand(0xb0);
 
  WriteCommand(0x00);
 
  WriteCommand(0x10);
 
  
 
  /* Turn on the controller */
 
  pre_on = ssd1306_ON();
 
//  // Set Charge pump
 
//  WriteCommand(0x8D); /* Set Charge pump */
 
//  WriteCommand(0x14); /* 0x14=ON, 0x10=Off */
 
//  
 
//  // Turn on the display
 
//  WriteCommand(0xaf);
 
}
 
 
void ssd1306_block_write(void)
 
{
 
 
 
  // Set col start addr to 0
 
  WriteCommand(0x21); 
 
  WriteCommand(0x00); 
 
  // Set col end addr to width - 1
 
  WriteCommand(127);
 
 
  // Set page addr
 
  WriteCommand(0x22);
 
  WriteCommand(0x00); // start page addr
 
  WriteCommand(4); // end page addr (height / 8)
 
 
 
  uint32_t i = 0;
 
  for(i=0;i<1024;i++)
 
    WriteData(ssd1306_Buffer[i]);
 
}
 
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_TurnOff
 
* Description    : Turn off the ssd1306 controller
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned long ssd1306_TurnOff(void)
 
{
 
  pre_on = 0;
 
  return iS_SSD_On;
 
}
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_TurnOn
 
* Description    : Turn off the ssd1306 controller
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned long ssd1306_TurnOn(void)
 
{
 
  pre_on = 1;
 
  return iS_SSD_On;
 
}
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_SetContrast
 
* Description    : Set the ssd1306 contrast
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned char ssd1306_SetContrast(unsigned char contrast)
 
{
 
  curContrast = contrast;
 
  return lastContrast;
 
}
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_GetContrast
 
* Description    : Get the ssd1306 contrast
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned char ssd1306_GetContrast()
 
{
 
  return lastContrast;
 
}
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_OFF
 
* Description    : Turn off the ssd1306 controller
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned long ssd1306_OFF(void)
 
{
 
  if(iS_SSD_On){
 
#ifdef  DEBUG_UI
 
    uint32_t i = 0;
 
    for(i=0;i<ssd1306_COLUMN_NUMBER*SSD1306_PAGE_NUMBER;i++){
 
      ssd1306_Buffer[i] = 0;
 
    }
 
#else
 
    // Turn off the display
 
    WriteCommand(0xae);
 
    
 
    // Set Charge pump
 
    WriteCommand(0x8D); /* Set Charge pump */
 
    WriteCommand(0x10); /* 0x14=ON, 0x10=Off */
 
#endif
 
    iS_SSD_On = 0;
 
  }
 
  return iS_SSD_On;
 
}
 
 
 
/*******************************************************************************
 
* Function Name  : ssd1306_ON
 
* Description    : Turn on the ssd1306 controller
 
* Input          : None
 
* Output         : None
 
* Return         : None
 
*******************************************************************************/
 
unsigned long ssd1306_ON(void)
 
{
 
  if(!iS_SSD_On){
 
#ifdef  DEBUG_UI
 
#else
 
  #ifdef    DEBUG_BOARD
 
  #else
 
    // Set Charge pump
 
    WriteCommand(0x8D); /* Set Charge pump */
ssd1306.h
Show inline comments
 
#ifndef   ssd1306_H
 
#define   ssd1306_H
 
#include "DrawText.h"
 
 
void  ssd1306_Init(void);
 
void  StartPageTransfer(void);
 
extern  const DeviceProp  ssd1306_Prop;
 
unsigned long ssd1306_DrawBlock(Pos_t x, Pos_t y, Pos_t cx, Pos_t cy, const unsigned char* data);
 
unsigned long ssd1306_IsOn(void);
 
unsigned long ssd1306_TurnOff(void);
 
unsigned long ssd1306_TurnOn(void);
 
unsigned char ssd1306_SetContrast(unsigned char contrast);
 
unsigned char ssd1306_GetContrast();
 
unsigned char* ssd1306_GetBuffer();
 
unsigned long ssd1306_DrawPoint(Pos_t x, Pos_t y, Color_t color);
 
void ssd1306_block_write(void);
 
 
#endif
0 comments (0 inline, 0 general)