/PIC Stuff/PICX_16F1825_Stepper_Driver/INTERRUPTS.c |
---|
1,6 → 1,7 |
#include "defines.h" |
#include "INTERRUPTS.h" |
#include "IOC.h" |
#include "SPI.h" |
void Interrupt_Init() { |
} |
/PIC Stuff/PICX_16F1825_Stepper_Driver/IOC.c |
---|
1,5 → 1,6 |
#include "defines.h" |
#include "IOC.h" |
#include "STEPPER.h" |
void IOC_Init(void) { |
INTCONbits.IOCIE = 1; |
17,22 → 18,23 |
if (SW_1_PORT) { |
switch (Get_Cur_Mode()) { |
case SINGLE_STEP: |
STEP_LAT = 1; |
__delay_ms(2); |
STEP_LAT = 0; |
STEPPER_Step(); |
break; |
case AUTO_STEP: |
STEPPER_Toggle_Auto(); |
break; |
case SET_DELAY: |
STEPPER_Set_Next_Delay(); |
break; |
case SET_MICROSTEP: |
Set_Next_Step(); |
STEPPER_Set_Next_Step(); |
break; |
} |
} |
// Delay to debounce button on any edge |
__delay_ms(200); |
__delay_ms(200); |
IOCAFbits.IOCAF3 = 0; |
} |
/PIC Stuff/PICX_16F1825_Stepper_Driver/OLED_SSD1306.c |
---|
0,0 → 1,771 |
#include "defines.h" |
#include <string.h> |
//#include <stdio.h> |
#include "OLED_SSD1306.h" |
#include "SPI.h" |
#include "glcdfont.c" |
static SSD1306_DATA *ssd1306_data_p; |
// 512 (128x32) or 1024 (128x64) bytes allocated for LCD buffer |
// See linker file for details |
static uint8_t LCD_BUFFER[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, |
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, |
0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, |
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, |
0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, |
0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, |
0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, |
0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, |
0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, |
0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, |
0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, |
0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, |
0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, |
0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, |
0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, |
0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, |
0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, |
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
#if (SSD1306_LCDHEIGHT == 64) |
0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, |
0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, |
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, |
0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, |
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, |
0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, |
0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, |
0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, |
0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, |
0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, |
0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, |
0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, |
0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, |
0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, |
0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
#endif |
}; |
int16_t SSD1306_Abs(int16_t i) { |
if (i < 0) |
return -i; |
else |
return i; |
} |
void SSD1306_Swap(int16_t *a, int16_t *b) { |
int16_t tmp = *a; |
*a = *b; |
*b = tmp; |
} |
void SSD1306_Init(SSD1306_DATA *data) { |
ssd1306_data_p = data; |
ssd1306_data_p->_height = SSD1306_LCDHEIGHT; |
ssd1306_data_p->HEIGHT = SSD1306_LCDHEIGHT; |
ssd1306_data_p->_width = SSD1306_LCDWIDTH; |
ssd1306_data_p->WIDTH = SSD1306_LCDWIDTH; |
ssd1306_data_p->rotation = 0; |
ssd1306_data_p->cursor_x = ssd1306_data_p->cursor_y = 0; |
ssd1306_data_p->textsize = 1; |
ssd1306_data_p->textcolor = SSD1306_WHITE; |
ssd1306_data_p->textbgcolor = SSD1306_BLACK; |
ssd1306_data_p->wrap = 1; |
} |
void SSD1306_Begin(char vccstate) { |
// Toggle reset pin |
SPI_RESET_LAT = 0; |
__delay_us(10); |
SPI_RESET_LAT = 1; |
#if defined SSD1306_128_32 |
// Init sequence for 128x32 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(0x1F); |
SSD1306_Command(SSD1306_SETDISPLAYOFFSET); // 0xD3 |
SSD1306_Command(0x0); // No offset |
SSD1306_Command(SSD1306_SETSTARTLINE | 0x0); // Line #0 |
SSD1306_Command(SSD1306_CHARGEPUMP); // 0x8D |
if (vccstate == SSD1306_EXTERNALVCC) { |
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(0x02); |
SSD1306_Command(SSD1306_SETCONTRAST); // 0x81 |
SSD1306_Command(0x8F); |
SSD1306_Command(SSD1306_SETPRECHARGE); // 0xd9 |
if (vccstate == SSD1306_EXTERNALVCC) { |
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 |
#endif |
#if defined SSD1306_128_64 |
// 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 (vccstate == SSD1306_EXTERNALVCC) { |
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 (vccstate == SSD1306_EXTERNALVCC) { |
SSD1306_Command(0x9F); |
} else { |
SSD1306_Command(0xCF); |
} |
SSD1306_Command(SSD1306_SETPRECHARGE); // 0xd9 |
if (vccstate == SSD1306_EXTERNALVCC) { |
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 |
#endif |
SSD1306_Command(SSD1306_DISPLAYON); // Turn on OLED panel |
} |
void SSD1306_Command(uint8_t cmd) { |
uint8_t c = cmd; |
SPI_DC_SELECT_LAT = 0; // D/C low (cmd) |
SPI_Write(&c, 1); |
} |
void SSD1306_Data(uint8_t data) { |
uint8_t c = data; |
SPI_DC_SELECT_LAT = 1; // D/C high (data) |
SPI_Write(&c, 1); |
} |
void SSD1306_Clear_Display() { |
memset(LCD_BUFFER, 0, (SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT / 8)); |
} |
void SSD1306_Invert_Display(uint8_t c) { |
if (c) { |
SSD1306_Command(SSD1306_INVERTDISPLAY); |
} else { |
SSD1306_Command((SSD1306_NORMALDISPLAY)); |
} |
} |
void SSD1306_Display() { |
SSD1306_Command(SSD1306_SETLOWCOLUMN | 0x0); // low col = 0 |
SSD1306_Command(SSD1306_SETHIGHCOLUMN | 0x0); // hi col = 0 |
SSD1306_Command(SSD1306_SETSTARTLINE | 0x0); // line #0 |
SPI_DC_SELECT_LAT = 1; // D/C high (data) |
SPI_Write(LCD_BUFFER, SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT / 8); |
// if (SSD1306_LCDHEIGHT == 32) { |
// SPI2_Write_Repeat(0, SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT / 8); |
// } |
} |
void SSD1306_Draw_Pixel(int16_t x, int16_t y, uint16_t color) { |
if ((x < 0) || (x >= ssd1306_data_p->_width) || (y < 0) || (y >= ssd1306_data_p->_height)) |
return; |
// check rotation, move pixel around if necessary |
switch (ssd1306_data_p->rotation) { |
case 1: |
SSD1306_Swap(&x, &y); |
x = SSD1306_LCDWIDTH - x - 1; |
break; |
case 2: |
x = SSD1306_LCDWIDTH - x - 1; |
y = SSD1306_LCDHEIGHT - y - 1; |
break; |
case 3: |
SSD1306_Swap(&x, &y); |
y = SSD1306_LCDHEIGHT - y - 1; |
break; |
default: |
break; |
} |
// Need to do this for some reason since x + (y / 8) * SSD1306_LCDWIDTH returns -128?! |
// TODO: Change this back when they fix the compiler |
int16_t loc = (y / 8) * SSD1306_LCDWIDTH; |
loc += x; |
// x is which column |
if (color == SSD1306_WHITE) { |
LCD_BUFFER[loc] |= 1<<(y % 8); |
} else { |
LCD_BUFFER[loc] &= ~(1<<(y % 8)); |
} |
} |
void SSD1306_Draw_Line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) { |
int16_t dx, dy, err, ystep; |
int16_t steep = SSD1306_Abs(y1 - y0) > SSD1306_Abs(x1 - x0); |
if (steep) { |
SSD1306_Swap(&x0, &y0); |
SSD1306_Swap(&x1, &y1); |
} |
if (x0 > x1) { |
SSD1306_Swap(&x0, &x1); |
SSD1306_Swap(&y0, &y1); |
} |
dx = x1 - x0; |
dy = SSD1306_Abs(y1 - y0); |
err = dx / 2; |
if (y0 < y1) { |
ystep = 1; |
} else { |
ystep = -1; |
} |
for (; x0 <= x1; x0++) { |
if (steep) { |
SSD1306_Draw_Pixel(y0, x0, color); |
} else { |
SSD1306_Draw_Pixel(x0, y0, color); |
} |
err -= dy; |
if (err < 0) { |
y0 += ystep; |
err += dx; |
} |
} |
} |
void SSD1306_Draw_Fast_VLine(int16_t x, int16_t y, int16_t h, uint16_t color) { |
SSD1306_Draw_Line(x, y, x, y + h - 1, color); |
} |
void SSD1306_Draw_Fast_HLine(int16_t x, int16_t y, int16_t w, uint16_t color) { |
SSD1306_Draw_Line(x, y, x + w - 1, y, color); |
} |
void SSD1306_Draw_Rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { |
SSD1306_Draw_Fast_HLine(x, y, w, color); |
SSD1306_Draw_Fast_HLine(x, y + h, w, color); |
SSD1306_Draw_Fast_VLine(x, y, h, color); |
SSD1306_Draw_Fast_VLine(x + w, y, h, color); |
} |
void SSD1306_Fill_Rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { |
int16_t i; |
for (i = x; i < x + w; i++) { |
SSD1306_Draw_Fast_VLine(i, y, h, color); |
} |
} |
void SSD1306_Draw_Circle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { |
int16_t f = 1 - r; |
int16_t ddF_x = 1; |
int16_t ddF_y = -2 * r; |
int16_t x = 0; |
int16_t y = r; |
SSD1306_Draw_Pixel(x0, y0 + r, color); |
SSD1306_Draw_Pixel(x0, y0 - r, color); |
SSD1306_Draw_Pixel(x0 + r, y0, color); |
SSD1306_Draw_Pixel(x0 - r, y0, color); |
while (x < y) { |
if (f >= 0) { |
y--; |
ddF_y += 2; |
f += ddF_y; |
} |
x++; |
ddF_x += 2; |
f += ddF_x; |
SSD1306_Draw_Pixel(x0 + x, y0 + y, color); |
SSD1306_Draw_Pixel(x0 - x, y0 + y, color); |
SSD1306_Draw_Pixel(x0 + x, y0 - y, color); |
SSD1306_Draw_Pixel(x0 - x, y0 - y, color); |
SSD1306_Draw_Pixel(x0 + y, y0 + x, color); |
SSD1306_Draw_Pixel(x0 - y, y0 + x, color); |
SSD1306_Draw_Pixel(x0 + y, y0 - x, color); |
SSD1306_Draw_Pixel(x0 - y, y0 - x, color); |
} |
} |
void SSD1306_Draw_Circle_Helper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color) { |
int16_t f = 1 - r; |
int16_t ddF_x = 1; |
int16_t ddF_y = -2 * r; |
int16_t x = 0; |
int16_t y = r; |
while (x < y) { |
if (f >= 0) { |
y--; |
ddF_y += 2; |
f += ddF_y; |
} |
x++; |
ddF_x += 2; |
f += ddF_x; |
if (cornername & 0x4) { |
SSD1306_Draw_Pixel(x0 + x, y0 + y, color); |
SSD1306_Draw_Pixel(x0 + y, y0 + x, color); |
} |
if (cornername & 0x2) { |
SSD1306_Draw_Pixel(x0 + x, y0 - y, color); |
SSD1306_Draw_Pixel(x0 + y, y0 - x, color); |
} |
if (cornername & 0x8) { |
SSD1306_Draw_Pixel(x0 - y, y0 + x, color); |
SSD1306_Draw_Pixel(x0 - x, y0 + y, color); |
} |
if (cornername & 0x1) { |
SSD1306_Draw_Pixel(x0 - y, y0 - x, color); |
SSD1306_Draw_Pixel(x0 - x, y0 - y, color); |
} |
} |
} |
void SSD1306_Fill_Circle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { |
SSD1306_Draw_Fast_VLine(x0, y0 - r, 2 * r + 1, color); |
SSD1306_Fill_Circle_Helper(x0, y0, r, 3, 0, color); |
} |
void SSD1306_Fill_Circle_Helper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color) { |
int16_t f = 1 - r; |
int16_t ddF_x = 1; |
int16_t ddF_y = -2 * r; |
int16_t x = 0; |
int16_t y = r; |
while (x < y) { |
if (f >= 0) { |
y--; |
ddF_y += 2; |
f += ddF_y; |
} |
x++; |
ddF_x += 2; |
f += ddF_x; |
if (cornername & 0x1) { |
SSD1306_Draw_Fast_VLine(x0 + x, y0 - y, 2 * y + 1 + delta, color); |
SSD1306_Draw_Fast_VLine(x0 + y, y0 - x, 2 * x + 1 + delta, color); |
} |
if (cornername & 0x2) { |
SSD1306_Draw_Fast_VLine(x0 - x, y0 - y, 2 * y + 1 + delta, color); |
SSD1306_Draw_Fast_VLine(x0 - y, y0 - x, 2 * x + 1 + delta, color); |
} |
} |
} |
void SSD1306_Draw_Triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { |
SSD1306_Draw_Line(x0, y0, x1, y1, color); |
SSD1306_Draw_Line(x1, y1, x2, y2, color); |
SSD1306_Draw_Line(x2, y2, x0, y0, color); |
} |
void SSD1306_Fill_Triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { |
int16_t a, b, y, last; |
int16_t dx01 = x1 - x0; |
int16_t dy01 = y1 - y0; |
int16_t dx02 = x2 - x0; |
int16_t dy02 = y2 - y0; |
int16_t dx12 = x2 - x1; |
int16_t dy12 = y2 - y1; |
int16_t sa = 0; |
int16_t sb = 0; |
// Sort coordinates by Y order (y2 >= y1 >= y0) |
if (y0 > y1) { |
SSD1306_Swap(&y0, &y1); |
SSD1306_Swap(&x0, &x1); |
} |
if (y1 > y2) { |
SSD1306_Swap(&y2, &y1); |
SSD1306_Swap(&x2, &x1); |
} |
if (y0 > y1) { |
SSD1306_Swap(&y0, &y1); |
SSD1306_Swap(&x0, &x1); |
} |
if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing |
a = b = x0; |
if (x1 < a) a = x1; |
else if (x1 > b) b = x1; |
if (x2 < a) a = x2; |
else if (x2 > b) b = x2; |
SSD1306_Draw_Fast_HLine(a, y0, b - a + 1, color); |
return; |
} |
// For upper part of triangle, find scanline crossings for segments |
// 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 |
// is included here (and second loop will be skipped, avoiding a /0 |
// error there), otherwise scanline y1 is skipped here and handled |
// in the second loop...which also avoids a /0 error here if y0=y1 |
// (flat-topped triangle). |
if (y1 == y2) last = y1; // Include y1 scanline |
else last = y1 - 1; // Skip it |
for (y = y0; y <= last; y++) { |
a = x0 + sa / dy01; |
b = x0 + sb / dy02; |
sa += dx01; |
sb += dx02; |
/* longhand: |
a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); |
b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); |
*/ |
if (a > b) SSD1306_Swap(&a, &b); |
SSD1306_Draw_Fast_HLine(a, y, b - a + 1, color); |
} |
// For lower part of triangle, find scanline crossings for segments |
// 0-2 and 1-2. This loop is skipped if y1=y2. |
sa = dx12 * (y - y1); |
sb = dx02 * (y - y0); |
for (; y <= y2; y++) { |
a = x1 + sa / dy12; |
b = x0 + sb / dy02; |
sa += dx12; |
sb += dx02; |
/* longhand: |
a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); |
b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); |
*/ |
if (a > b) SSD1306_Swap(&a, &b); |
SSD1306_Draw_Fast_HLine(a, y, b - a + 1, color); |
} |
} |
void SSD1306_Draw_Round_Rect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint16_t color) { |
// smarter version |
SSD1306_Draw_Fast_HLine(x + r, y, w - 2 * r, color); // Top |
SSD1306_Draw_Fast_HLine(x + r, y + h - 1, w - 2 * r, color); // Bottom |
SSD1306_Draw_Fast_VLine(x, y + r, h - 2 * r, color); // Left |
SSD1306_Draw_Fast_VLine(x + w - 1, y + r, h - 2 * r, color); // Right |
// draw four corners |
SSD1306_Draw_Circle_Helper(x + r, y + r, r, 1, color); |
SSD1306_Draw_Circle_Helper(x + w - r - 1, y + r, r, 2, color); |
SSD1306_Draw_Circle_Helper(x + w - r - 1, y + h - r - 1, r, 4, color); |
SSD1306_Draw_Circle_Helper(x + r, y + h - r - 1, r, 8, color); |
} |
void SSD1306_Fill_Round_Rect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint16_t color) { |
// smarter version |
SSD1306_Fill_Rect(x + r, y, w - 2 * r, h, color); |
// draw four corners |
SSD1306_Fill_Circle_Helper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); |
SSD1306_Fill_Circle_Helper(x + r, y + r, r, 2, h - 2 * r - 1, color); |
} |
void SSD1306_Draw_Bitmap(int16_t x, int16_t y, const uint8_t* bitmap, int16_t w, int16_t h, uint16_t color) { |
int16_t i, j; |
for (j = 0; j < h; j++) { |
for (i = 0; i < w; i++) { |
if (bitmap[i + (j / 8) * w] & (j % 8)) { |
SSD1306_Draw_Pixel(x + i, y + j, color); |
} |
} |
} |
} |
void SSD1306_Draw_Char(int16_t x, int16_t y, uint8_t c, uint16_t color, uint16_t bg, uint8_t size) { |
int16_t i, j; |
uint16_t line; |
if ((x >= ssd1306_data_p->_width) || // Clip right |
(y >= ssd1306_data_p->_height) || // Clip bottom |
((x + 5 * size - 1) < 0) || // Clip left |
((y + 8 * size - 1) < 0)) // Clip top |
return; |
for (i = 0; i < 6; i++) { |
if (i == 5) |
line = 0x0; |
else |
line = font[(c * 5) + i]; |
for (j = 0; j < 8; j++) { |
if (line & 0x1) { |
if (size == 1) {// default size |
SSD1306_Draw_Pixel(x + i, y + j, color); |
} else { // big size |
SSD1306_Fill_Rect(x + (i * size), y + (j * size), size, size, color); |
} |
} else if (bg != color) { |
if (size == 1) { // default size |
SSD1306_Draw_Pixel(x + i, y + j, bg); |
} else { // big size |
SSD1306_Fill_Rect(x + i*size, y + j*size, size, size, bg); |
} |
} |
line >>= 1; |
} |
} |
} |
void SSD1306_Write(uint8_t c) { |
if (c == '\n' || c == '\r') { |
ssd1306_data_p->cursor_y += ssd1306_data_p->textsize * 8; |
ssd1306_data_p->cursor_x = 0; |
// } else if (c == '\r') { |
// // skip em |
} else { |
SSD1306_Draw_Char(ssd1306_data_p->cursor_x, ssd1306_data_p->cursor_y, c, ssd1306_data_p->textcolor, ssd1306_data_p->textbgcolor, ssd1306_data_p->textsize); |
ssd1306_data_p->cursor_x += ssd1306_data_p->textsize * 6; |
if (ssd1306_data_p->wrap && (ssd1306_data_p->cursor_x > (ssd1306_data_p->_width - ssd1306_data_p->textsize * 6))) { |
ssd1306_data_p->cursor_y += ssd1306_data_p->textsize * 8; |
ssd1306_data_p->cursor_x = 0; |
} |
} |
} |
void SSD1306_Write_String(uint8_t* msg, uint8_t length) { |
for (uint8_t i = 0; i < length; i++) { |
SSD1306_Write(msg[i]); |
} |
} |
void SSD1306_Set_Cursor(int16_t x, int16_t y) { |
ssd1306_data_p->cursor_x = x; |
ssd1306_data_p->cursor_y = y; |
} |
void SSD1306_Set_Text_Color(uint16_t c) { |
// for 'transparent' background, we'll set the bg |
// to the same as fg instead of using a flag |
ssd1306_data_p->textcolor = c; |
ssd1306_data_p->textbgcolor = c; |
} |
void SSD1306_Set_Text_Color_BG(uint16_t c, uint16_t bg) { |
ssd1306_data_p->textcolor = c; |
ssd1306_data_p->textbgcolor = bg; |
} |
void SSD1306_Set_Text_Size(uint8_t s) { |
ssd1306_data_p->textsize = (s > 0) ? s : 1; |
} |
void SSD1306_Set_Text_Wrap(uint8_t w) { |
ssd1306_data_p->wrap = w; |
} |
void SSD1306_Set_Rotation(uint8_t x) { |
x %= 4; // cant be higher than 3 |
ssd1306_data_p->rotation = x; |
switch (x) { |
case 0: |
case 2: |
ssd1306_data_p->_width = ssd1306_data_p->WIDTH; |
ssd1306_data_p->_height = ssd1306_data_p->HEIGHT; |
break; |
case 1: |
case 3: |
ssd1306_data_p->_width = ssd1306_data_p->HEIGHT; |
ssd1306_data_p->_height = ssd1306_data_p->WIDTH; |
break; |
} |
} |
void SSD1306_Test_DrawChar() { |
uint8_t i; |
SSD1306_Set_Text_Size(1); |
SSD1306_Set_Text_Color(SSD1306_WHITE); |
SSD1306_Set_Cursor(0, 0); |
for (i = 0; i < 168; i++) { |
if (i == '\n') continue; |
SSD1306_Write(i); |
// if ((i > 0) && (i % 21 == 0)) |
// SSD1306_write('\n'); |
} |
SSD1306_Display(); |
} |
void SSD1306_Test_DrawCircle() { |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_height; i += 2) { |
SSD1306_Draw_Circle(ssd1306_data_p->_width / 2, ssd1306_data_p->_height / 2, i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_DrawRect(void) { |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_height / 2; i += 2) { |
SSD1306_Draw_Rect(i, i, ssd1306_data_p->_width - 2 * i, ssd1306_data_p->_height - 2 * i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_FillRect(void) { |
uint8_t color = 1; |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_height / 2; i += 3) { |
// alternate colors |
SSD1306_Fill_Rect(i, i, ssd1306_data_p->_width - i * 2, ssd1306_data_p->_height - i * 2, color % 2); |
SSD1306_Display(); |
color++; |
} |
} |
void SSD1306_Test_DrawTriangle(void) { |
int16_t i; |
int16_t min = ssd1306_data_p->_width < ssd1306_data_p->_height ? ssd1306_data_p->_width : ssd1306_data_p->_height; |
for (i = 0; i < min / 2; i += 5) { |
SSD1306_Draw_Triangle(ssd1306_data_p->_width / 2, ssd1306_data_p->_height / 2 - i, |
ssd1306_data_p->_width / 2 - i, ssd1306_data_p->_height / 2 + i, |
ssd1306_data_p->_width / 2 + i, ssd1306_data_p->_height / 2 + i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_FillTriangle(void) { |
uint8_t color = SSD1306_WHITE; |
int16_t i; |
int16_t min = ssd1306_data_p->_width < ssd1306_data_p->_height ? ssd1306_data_p->_width : ssd1306_data_p->_height; |
for (i = min / 2; i > 0; i -= 5) { |
SSD1306_Fill_Triangle(ssd1306_data_p->_width / 2, ssd1306_data_p->_height / 2 - i, |
ssd1306_data_p->_width / 2 - i, ssd1306_data_p->_height / 2 + i, |
ssd1306_data_p->_width / 2 + i, ssd1306_data_p->_height / 2 + i, SSD1306_WHITE); |
if (color == SSD1306_WHITE) color = SSD1306_BLACK; |
else color = SSD1306_WHITE; |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_DrawRoundRect(void) { |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_height / 2 - 2; i += 2) { |
SSD1306_Draw_Round_Rect(i, i, ssd1306_data_p->_width - 2 * i, ssd1306_data_p->_height - 2 * i, ssd1306_data_p->_height / 4, SSD1306_WHITE); |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_FillRoundRect(void) { |
uint8_t color = SSD1306_WHITE; |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_height / 2 - 2; i += 2) { |
SSD1306_Fill_Round_Rect(i, i, ssd1306_data_p->_width - 2 * i, ssd1306_data_p->_height - 2 * i, ssd1306_data_p->_height / 4, color); |
if (color == SSD1306_WHITE) color = SSD1306_BLACK; |
else color = SSD1306_WHITE; |
SSD1306_Display(); |
} |
} |
void SSD1306_Test_DrawLine(void) { |
int16_t i; |
for (i = 0; i < ssd1306_data_p->_width; i += 4) { |
SSD1306_Draw_Line(0, 0, i, ssd1306_data_p->_height - 1, SSD1306_WHITE); |
SSD1306_Display(); |
} |
for (i = 0; i < ssd1306_data_p->_height; i += 4) { |
SSD1306_Draw_Line(0, 0, ssd1306_data_p->_width - 1, i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
__delay_ms(10); |
SSD1306_Clear_Display(); |
for (i = 0; i < ssd1306_data_p->_width; i += 4) { |
SSD1306_Draw_Line(0, ssd1306_data_p->_height - 1, i, 0, SSD1306_WHITE); |
SSD1306_Display(); |
} |
for (i = ssd1306_data_p->_height - 1; i >= 0; i -= 4) { |
SSD1306_Draw_Line(0, ssd1306_data_p->_height - 1, ssd1306_data_p->_width - 1, i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
__delay_ms(10); |
SSD1306_Clear_Display(); |
for (i = ssd1306_data_p->_width - 1; i >= 0; i -= 4) { |
SSD1306_Draw_Line(ssd1306_data_p->_width - 1, ssd1306_data_p->_height - 1, i, 0, SSD1306_WHITE); |
SSD1306_Display(); |
} |
for (i = ssd1306_data_p->_height - 1; i >= 0; i -= 4) { |
SSD1306_Draw_Line(ssd1306_data_p->_width - 1, ssd1306_data_p->_height - 1, 0, i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
__delay_ms(10); |
SSD1306_Clear_Display(); |
for (i = 0; i < ssd1306_data_p->_height; i += 4) { |
SSD1306_Draw_Line(ssd1306_data_p->_width - 1, 0, 0, i, SSD1306_WHITE); |
SSD1306_Display(); |
} |
for (i = 0; i < ssd1306_data_p->_width; i += 4) { |
SSD1306_Draw_Line(ssd1306_data_p->_width - 1, 0, i, ssd1306_data_p->_height - 1, SSD1306_WHITE); |
SSD1306_Display(); |
} |
__delay_ms(10); |
} |
/PIC Stuff/PICX_16F1825_Stepper_Driver/OLED_SSD1306.h |
---|
0,0 → 1,132 |
#ifndef OLED_SSD1306_H |
#define OLED_SSD1306_H |
/*========================================================================= |
SSD1306 Displays |
----------------------------------------------------------------------- |
The driver is used in multiple displays (128x64, 128x32, etc.). |
Select the appropriate display below to create an appropriately |
sized framebuffer, etc. |
SSD1306_128_64 128x64 pixel display |
SSD1306_128_32 128x32 pixel display |
You also need to set the LCDWIDTH and LCDHEIGHT defines to an |
appropriate size |
-----------------------------------------------------------------------*/ |
// #define SSD1306_128_64 |
#define SSD1306_128_32 |
/*=========================================================================*/ |
#if defined SSD1306_128_64 |
#define SSD1306_LCDWIDTH 128 |
#define SSD1306_LCDHEIGHT 64 |
#endif |
#if defined SSD1306_128_32 |
#define SSD1306_LCDWIDTH 128 |
#define SSD1306_LCDHEIGHT 32 |
#endif |
//#define SSD1306_STRING_BUFFER_SIZE 32 |
#define SSD1306_BLACK 0 |
#define SSD1306_WHITE 1 |
#define SSD1306_I2C_ADDRESS 0x3D // 011110+SA0+RW |
#define SSD1306_SETCONTRAST 0x81 |
#define SSD1306_DISPLAYALLON_RESUME 0xA4 |
#define SSD1306_DISPLAYALLON 0xA5 |
#define SSD1306_NORMALDISPLAY 0xA6 |
#define SSD1306_INVERTDISPLAY 0xA7 |
#define SSD1306_DISPLAYOFF 0xAE |
#define SSD1306_DISPLAYON 0xAF |
#define SSD1306_SETDISPLAYOFFSET 0xD3 |
#define SSD1306_SETCOMPINS 0xDA |
#define SSD1306_SETVCOMDETECT 0xDB |
#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 |
#define SSD1306_SETPRECHARGE 0xD9 |
#define SSD1306_SETMULTIPLEX 0xA8 |
#define SSD1306_SETLOWCOLUMN 0x00 |
#define SSD1306_SETHIGHCOLUMN 0x10 |
#define SSD1306_SETSTARTLINE 0x40 |
#define SSD1306_MEMORYMODE 0x20 |
#define SSD1306_COMSCANINC 0xC0 |
#define SSD1306_COMSCANDEC 0xC8 |
#define SSD1306_SEGREMAP 0xA0 |
#define SSD1306_CHARGEPUMP 0x8D |
#define SSD1306_EXTERNALVCC 0x1 |
#define SSD1306_SWITCHCAPVCC 0x2 |
typedef struct { |
int16_t WIDTH, HEIGHT; // raw display size |
int16_t _width, _height; // size depending on rotation |
int16_t cursor_x, cursor_y; |
uint16_t textcolor, textbgcolor; |
uint8_t textsize; |
uint8_t rotation; |
uint8_t wrap; // If set, wrap text at right side |
} SSD1306_DATA; |
// Misc functions |
int16_t SSD1306_Abs(int16_t i); |
void SSD1306_Swap(int16_t *a, int16_t *b); |
// Core functions |
void SSD1306_Init(SSD1306_DATA *data); |
void SSD1306_Begin(uint8_t vcc); |
void SSD1306_Command(uint8_t cmd); |
void SSD1306_Data(uint8_t data); |
void SSD1306_Clear_Display(void); |
void SSD1306_Invert_Display(uint8_t); |
void SSD1306_Display(void); |
// Drawing functions |
void SSD1306_Draw_Pixel(int16_t x, int16_t y, uint16_t color); |
void SSD1306_Draw_Line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); |
void SSD1306_Draw_Fast_VLine(int16_t x, int16_t y, int16_t h, uint16_t color); |
void SSD1306_Draw_Fast_HLine(int16_t x, int16_t y, int16_t w, uint16_t color); |
void SSD1306_Draw_Rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); |
void SSD1306_Fill_Rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); |
void SSD1306_Draw_Circle(int16_t x0, int16_t y0, int16_t r, uint16_t color); |
void SSD1306_Draw_Circle_Helper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); |
void SSD1306_Fill_Circle(int16_t x0, int16_t y0, int16_t r, uint16_t color); |
void SSD1306_Fill_Circle_Helper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); |
void SSD1306_Draw_Triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); |
void SSD1306_Fill_Triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); |
void SSD1306_Draw_Round_Rect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); |
void SSD1306_Fill_Round_Rect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); |
void SSD1306_Draw_Bitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); |
void SSD1306_Draw_Char(int16_t x, int16_t y, uint8_t c, uint16_t color, uint16_t bg, uint8_t size); |
void SSD1306_Write(uint8_t c); |
void SSD1306_Write_String(uint8_t *msg, uint8_t length); |
//void SSD1306_Write_String(const rom char *fmt, ...); |
//void SSD1306_Append_String(const rom char *fmt, ...); |
void SSD1306_Set_Cursor(int16_t x, int16_t y); |
void SSD1306_Set_Text_Color(uint16_t c); |
void SSD1306_Set_Text_Color_BG(uint16_t c, uint16_t bg); |
void SSD1306_Set_Text_Size(uint8_t s); |
void SSD1306_Set_Text_Wrap(uint8_t w); |
void SSD1306_Set_Rotation(uint8_t r); |
// Test functions |
void SSD1306_Test_DrawChar(void); |
void SSD1306_Test_DrawCircle(void); |
void SSD1306_Test_DrawRect(void); |
void SSD1306_Test_FillRect(void); |
void SSD1306_Test_DrawTriangle(void); |
void SSD1306_Test_FillTriangle(void); |
void SSD1306_Test_DrawRoundRect(void); |
void SSD1306_Test_FillRoundRect(void); |
void SSD1306_Test_DrawLine(void); |
#endif /* OLED_SSD1306_H */ |
/PIC Stuff/PICX_16F1825_Stepper_Driver/SPI.c |
---|
0,0 → 1,159 |
#include "defines.h" |
#include "SPI.h" |
static SPI_DATA *spi_data_p; |
void SPI_Init(SPI_DATA *data, uint8_t speed) { |
spi_data_p = data; |
SPI_MOSI_TRIS = 0; |
SPI_CLK_TRIS = 0; |
#ifndef SPI_WRITE_ONLY |
SPI_MISO_TRIS = 1; |
#endif |
// SPI_SLAVE_SELECT_TRIS = 0; // SPI2 slave select |
// SPI_SLAVE_SELECT_LAT = 1; // SPI2 SS high (Idle) |
// SPI_RESET_TRIS = 0; // SPI2 reset |
// SPI_RESET_LAT = 1; // SPI2 reset active low |
SPI_DC_SELECT_TRIS = 0; // SPI2 D/C select |
SPI_DC_SELECT_LAT = 0; |
SSP1STATbits.SMP = 0; // Input is sampled in the middle of data output time |
SSP1STATbits.CKE = 0; // Transmit occurs on transition from Idle to active clock state |
SSP1CON1bits.SSPM = speed; |
SSP1CON1bits.CKP = 1; // Idle state for clock is a high level |
SSP1CON1bits.SSPEN = 1; // Enable MSSP module |
PIE1bits.SSP1IE = 0; // Disable MSSP interrupt |
#ifndef SPI_WRITE_ONLY |
spi_data_p->buffer_in_len = 0; |
spi_data_p->buffer_in_read_ind = 0; |
spi_data_p->buffer_in_write_ind = 0; |
#endif |
spi_data_p->buffer_out_ind = 0; |
spi_data_p->buffer_out_len = 0; |
} |
void SPI_Write(uint8_t *msg, uint16_t length) { |
uint16_t i = 0; |
// SPI_SLAVE_SELECT_LAT = 0; |
while (i != length) { |
SSP1BUF = msg[i]; |
i++; |
while (!SSP1STATbits.BF); |
#ifndef SPI_WRITE_ONLY |
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP2BUF; |
if (spi_data_p->buffer_in_write_ind == MAXSPIBUF - 1) { |
spi_data_p->buffer_in_write_ind = 0; |
} else { |
spi_data_p->buffer_in_write_ind++; |
} |
spi_data_p->buffer_in_len++; |
#else |
// Read data in buffer to clear it |
uint8_t tmp = SSP1BUF; |
#endif |
} |
// SPI_SLAVE_SELECT_LAT = 1; |
} |
void SPI2_Write_Repeat(uint8_t c, uint16_t length) { |
uint16_t i = 0; |
// SPI_SLAVE_SELECT_LAT = 0; |
while (i != length) { |
SSP1BUF = c; |
i++; |
while (!SSP1STATbits.BF); |
#ifndef SPI_WRITE_ONLY |
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP2BUF; |
if (spi_data_p->buffer_in_write_ind == MAXSPIBUF - 1) { |
spi_data_p->buffer_in_write_ind = 0; |
} else { |
spi_data_p->buffer_in_write_ind++; |
} |
spi_data_p->buffer_in_len++; |
#else |
// Read data in buffer to clear it |
uint8_t tmp = SSP1BUF; |
#endif |
} |
// SPI_SLAVE_SELECT_LAT = 1; |
} |
#ifndef SPI_WRITE_ONLY |
void SPI_Recv_Interrupt_Handler() { |
uint8_t c; |
if (SSP1STATbits.BF) { // Check if data receive flag is set |
if (spi_data_p->buffer_in_len == MAX_SPI_BUFFER - 1) { |
c = SSP1BUF; // Read SSP2BUF to clear it |
} else { |
// Save received data into buffer |
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP1BUF; |
if (spi_data_p->buffer_in_write_ind == MAX_SPI_BUFFER - 1) { |
spi_data_p->buffer_in_write_ind = 0; |
} else { |
spi_data_p->buffer_in_write_ind++; |
} |
spi_data_p->buffer_in_len++; |
// Put next byte in SSP2BUF for transmit |
if (spi_data_p->buffer_out_ind != spi_data_p->buffer_out_len) { |
SSP1BUF = spi_data_p->buffer_out[spi_data_p->buffer_out_ind]; |
spi_data_p->buffer_out_ind++; |
} else { |
// SPI_SLAVE_SELECT_LAT = 1; // Bring SS line high |
spi_data_p->buffer_out_ind = 0; |
spi_data_p->buffer_out_len = 0; |
} |
} |
} |
} |
void SPI_Read(char length) { |
// SPI_SLAVE_SELECT_LAT = 0; |
for (uint8_t i = 0; i < length; i++) { |
SSP1BUF = 0x0; |
while (!SSP1STATbits.BF); |
spi_data_p->buffer_in[spi_data_p->buffer_in_write_ind] = SSP1BUF; |
if (spi_data_p->buffer_in_write_ind == MAX_SPI_BUFFER - 1) { |
spi_data_p->buffer_in_write_ind = 0; |
} else { |
spi_data_p->buffer_in_write_ind++; |
} |
spi_data_p->buffer_in_len++; |
} |
// SPI_SLAVE_SELECT_LAT = 1; |
} |
uint8_t SPI_Buffer_Len() { |
return spi_data_p->buffer_in_len; |
} |
uint8_t SPI_Read_Buffer(uint8_t* buffer) { |
uint8_t i = 0; |
while (spi_data_p->buffer_in_len != 0) { |
buffer[i] = spi_data_p->buffer_in[spi_data_p->buffer_in_read_ind]; |
i++; |
if (spi_data_p->buffer_in_read_ind == MAX_SPI_BUFFER - 1) { |
spi_data_p->buffer_in_read_ind = 0; |
} else { |
spi_data_p->buffer_in_read_ind++; |
} |
spi_data_p->buffer_in_len--; |
} |
return i; |
} |
#endif |
/PIC Stuff/PICX_16F1825_Stepper_Driver/SPI.h |
---|
0,0 → 1,36 |
#ifndef SPI_H |
#define SPI_H |
#define MAX_SPI_BUFFER 16 |
#define SPI_WRITE_ONLY |
#define SPI2_FOSC_TMR2 0b0011 |
#define SPI2_FOSC_64 0b0010 |
#define SPI2_FOSC_16 0b0001 |
#define SPI2_FOSC_4 0b0000 |
typedef struct { |
#ifndef SPI_WRITE_ONLY |
uint8_t buffer_in[MAX_SPI_BUFFER]; |
uint8_t buffer_in_read_ind; |
uint8_t buffer_in_write_ind; |
uint8_t buffer_in_len; |
#endif |
uint8_t buffer_out[MAX_SPI_BUFFER]; |
uint8_t buffer_out_ind; |
uint8_t buffer_out_len; |
} SPI_DATA; |
void SPI_Init(SPI_DATA *data, uint8_t speed); |
void SPI_Write(uint8_t *msg, uint16_t length); |
void SPI2_Write_Repeat(uint8_t c, uint16_t length); |
#ifndef SPI_WRITE_ONLY |
void SPI_Recv_Interrupt_Handler(void); |
void SPI_Read(uint8_t length); |
uint8_t SPI_Buffer_Len(void); |
uint8_t SPI_Read_Buffer(uint8_t *buffer); |
#endif |
#endif /* SPI_H */ |
/PIC Stuff/PICX_16F1825_Stepper_Driver/STEPPER.c |
---|
1,6 → 1,11 |
#include "defines.h" |
#include "STEPPER.h" |
#include "OLED_SSD1306.h" |
static STEPPER_MICROSTEP currStep = STEP_1_1; |
static STEPPER_SPEED currSpeed = DELAY_1000MS; |
static uint8_t autoOn = 0; |
void STEPPER_Set_Microstep(STEPPER_MICROSTEP step) { |
#ifdef DVR8825 |
if (step == STEP_1_1) { |
31,10 → 36,93 |
#endif |
} |
void STEPPER_Set_Direction(char dir) { |
if (dir) { |
DIR_LAT = 1; |
void STEPPER_Set_Next_Step() { |
switch (currStep) { |
case STEP_1_1: |
currStep = STEP_1_2; |
break; |
case STEP_1_2: |
currStep = STEP_1_4; |
break; |
case STEP_1_4: |
currStep = STEP_1_8; |
break; |
case STEP_1_8: |
currStep = STEP_1_16; |
break; |
case STEP_1_16: |
currStep = STEP_1_32; |
break; |
case STEP_1_32: |
default: |
currStep = STEP_1_1; |
break; |
} |
STEPPER_Set_Microstep(currStep); |
} |
STEPPER_MICROSTEP STEPPER_Get_Cur_Step(void) { |
return currStep; |
} |
void STEPPER_Set_Next_Delay() { |
switch (currSpeed) { |
default: |
case DELAY_1000MS: |
currSpeed = DELAY_500MS; |
break; |
case DELAY_500MS: |
currSpeed = DELAY_333MS; |
break; |
case DELAY_333MS: |
currSpeed = DELAY_250MS; |
break; |
case DELAY_250MS: |
currSpeed = DELAY_100MS; |
break; |
case DELAY_100MS: |
currSpeed = DELAY_50MS; |
break; |
case DELAY_50MS: |
currSpeed = DELAY_25MS; |
break; |
case DELAY_25MS: |
currSpeed = DELAY_10MS; |
break; |
case DELAY_10MS: |
currSpeed = DELAY_5MS; |
break; |
case DELAY_5MS: |
currSpeed = DELAY_1MS; |
break; |
case DELAY_1MS: |
currSpeed = DELAY_1000MS; |
break; |
} |
} |
STEPPER_SPEED STEPPER_Get_Cur_Speed(void) { |
return currSpeed; |
} |
void STEPPER_Toggle_Auto() { |
if (autoOn == 0) { |
autoOn = 1; |
} else { |
DIR_LAT = 0; |
autoOn = 0; |
} |
} |
} |
STEPPER_SPEED STEPPER_Get_Auto() { |
if (autoOn == 0) { |
return DELAY_STOPPED; |
} else { |
return currSpeed; |
} |
} |
void STEPPER_Step() { |
STEP_LAT = 1; |
__delay_us(2); |
STEP_LAT = 0; |
} |
/PIC Stuff/PICX_16F1825_Stepper_Driver/STEPPER.h |
---|
12,8 → 12,28 |
STEP_1_32 |
} STEPPER_MICROSTEP; |
typedef enum { |
DELAY_1000MS, |
DELAY_500MS, |
DELAY_333MS, |
DELAY_250MS, |
DELAY_100MS, |
DELAY_50MS, |
DELAY_25MS, |
DELAY_10MS, |
DELAY_5MS, |
DELAY_1MS, |
DELAY_STOPPED |
} STEPPER_SPEED; |
void STEPPER_Set_Microstep(STEPPER_MICROSTEP); |
void STEPPER_Set_Direction(char); |
void STEPPER_Set_Next_Step(void); |
STEPPER_MICROSTEP STEPPER_Get_Cur_Step(void); |
void STEPPER_Set_Next_Delay(void); |
STEPPER_SPEED STEPPER_Get_Cur_Speed(void); |
void STEPPER_Toggle_Auto(void); |
STEPPER_SPEED STEPPER_Get_Auto(void); |
void STEPPER_Step(void); |
#endif /* STEPPER_H */ |
/PIC Stuff/PICX_16F1825_Stepper_Driver/defines.h |
---|
3,6 → 3,7 |
#include <xc.h> |
#include <stdint.h> |
#include "STEPPER.h" |
//#define CONTROL_FROM_CONTROLLER |
#define CONTROL_FROM_UART |
11,9 → 12,6 |
#define STEP_TRIS TRISAbits.TRISA5 |
#define STEP_LAT LATAbits.LATA5 |
#define DIR_TRIS TRISAbits.TRISA2 |
#define DIR_LAT LATAbits.LATA2 |
#define M2_TRIS TRISCbits.TRISC3 |
#define M2_LAT LATCbits.LATC3 |
25,15 → 23,24 |
#define SW_2_TRIS TRISAbits.TRISA4 |
#define SW_2_PORT PORTAbits.RA4 |
#define SW_2_INLVL INLVLAbits.INLVLA4 |
#define SW_1_TRIS TRISAbits.TRISA3 |
#define SW_1_PORT PORTAbits.RA3 |
#define SW_1_INLVL INLVLAbits.INLVLA3 |
#define STEP_CURRENT_TRIS TRISAbits.TRISA1 |
#define POT_CURRENT_TRIS TRISAbits.TRISA0 |
#define SPI_MOSI_TRIS TRISCbits.TRISC2 |
#define SPI_D_C_TRIS TRISCbits.TRISC1 |
#define SPI_MOSI_LAT LATCbits.LATC2 |
#define SPI_CLK_TRIS TRISCbits.TRISC0 |
#define SPI_CLK_LAT LATCbits.LATC0 |
#define SPI_DC_SELECT_TRIS TRISCbits.TRISC1 |
#define SPI_DC_SELECT_LAT LATCbits.LATC1 |
#define SPI_RESET_TRIS TRISAbits.TRISA2 |
#define SPI_RESET_LAT LATAbits.LATA2 |
// </editor-fold> |
#define _XTAL_FREQ 32000000 |
41,11 → 48,17 |
typedef enum { |
SINGLE_STEP, |
AUTO_STEP, |
SET_DELAY, |
SET_MICROSTEP |
} OPERATING_MODE; |
void Set_Next_Mode(void); |
OPERATING_MODE Get_Cur_Mode(void); |
void Set_Next_Step(void); |
void Update_OLED(void); |
void Draw_Manual_Text(uint8_t selected); |
void Draw_Auto_Text(uint8_t selected); |
void Draw_Speed_Text(STEPPER_SPEED speed, uint8_t selected); |
void Draw_Step_Text(STEPPER_MICROSTEP step, uint8_t selected); |
#endif /* DEFINES_H */ |
/PIC Stuff/PICX_16F1825_Stepper_Driver/funclist |
---|
1,13 → 1,49 |
_IOC_Interrupt_Handler: CODE, 19 0 77 |
_Set_Next_Mode: CODE, 239 0 23 |
_Set_Next_Step: CODE, 185 0 31 |
_IOC_Init: CODE, 274 0 7 |
_STEPPER_Set_Microstep: CODE, 96 0 54 |
_main: CODE, 216 0 23 |
_Interrupt_Enable: CODE, 286 0 3 |
_InterruptHandler: CODE, 4 0 13 |
_Get_Cur_Mode: CODE, 289 0 2 |
_Interrupt_Init: CODE, 291 0 1 |
__initialization: CODE, 281 0 2 |
_Pins_Init: CODE, 150 0 35 |
Total: 271 |
___awdiv: CODE, 2353 0 84 |
_IOC_Interrupt_Handler: CODE, 2275 0 78 |
_Update_OLED: CODE, 56 0 131 |
_STEPPER_Get_Cur_Speed: CODE, 2 0 2 |
_Set_Next_Mode: CODE, 5753 0 31 |
_STEPPER_Set_Next_Delay: CODE, 2064 0 57 |
_Draw_Auto_Text: CODE, 2121 0 77 |
_SSD1306_Set_Cursor: CODE, 5494 0 20 |
i1_STEPPER_Step: CODE, 5426 0 9 |
_Draw_Speed_Text: CODE, 5994 0 75 |
_IOC_Init: CODE, 5404 0 7 |
_font: STRCODE, 256 0 1275 |
_memset: CODE, 5692 0 30 |
_STEPPER_Set_Microstep: CODE, 5940 0 54 |
_main: CODE, 2658 0 217 |
_Interrupt_Enable: CODE, 2043 0 3 |
_SSD1306_Draw_Fast_VLine: CODE, 5857 0 40 |
_SSD1306_Abs: CODE, 5459 0 15 |
_SSD1306_Set_Text_Color: CODE, 5514 0 20 |
_InterruptHandler: CODE, 4 0 15 |
_SSD1306_Swap: CODE, 5635 0 27 |
_SSD1306_Init: CODE, 2437 0 95 |
_SPI_Write: CODE, 5784 0 34 |
_Draw_Manual_Text: CODE, 2198 0 77 |
_Get_Cur_Mode: CODE, 5402 0 2 |
_SSD1306_Write: CODE, 3101 0 243 |
_SSD1306_Begin: CODE, 2532 0 126 |
_STEPPER_Set_Next_Step: CODE, 5722 0 31 |
_Interrupt_Init: CODE, 5401 0 1 |
__initialization: CODE, 21 0 31 |
_SSD1306_Write_String: CODE, 5558 0 25 |
_SSD1306_Draw_Line: CODE, 3344 0 260 |
_SSD1306_Draw_Char: CODE, 3604 0 492 |
_STEPPER_Step: CODE, 246 0 10 |
_SSD1306_Fill_Rect: CODE, 187 0 59 |
_SPI_Init: CODE, 5818 0 39 |
_Draw_Step_Text: CODE, 6069 0 75 |
_STEPPER_Get_Auto: CODE, 5411 0 7 |
_SSD1306_Set_Text_Size: CODE, 5609 0 26 |
_SSD1306_Clear_Display: CODE, 2048 0 16 |
_SSD1306_Command: CODE, 5474 0 20 |
_SSD1306_Draw_Pixel: CODE, 2875 0 226 |
___wmul: CODE, 5662 0 30 |
_SSD1306_Display: CODE, 5583 0 26 |
_SSD1306_Set_Text_Wrap: CODE, 5435 0 12 |
_STEPPER_Toggle_Auto: CODE, 5418 0 8 |
_Pins_Init: CODE, 5897 0 43 |
_STEPPER_Get_Cur_Step: CODE, 2046 0 2 |
Total: 4283 |
/PIC Stuff/PICX_16F1825_Stepper_Driver/glcdfont.c |
---|
0,0 → 1,263 |
#ifndef FONT5X7_H |
#define FONT5X7_H |
// standard ascii 5x7 font |
const char font[] = { |
0x00, 0x00, 0x00, 0x00, 0x00, |
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, |
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, |
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, |
0x18, 0x3C, 0x7E, 0x3C, 0x18, |
0x1C, 0x57, 0x7D, 0x57, 0x1C, |
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, |
0x00, 0x18, 0x3C, 0x18, 0x00, |
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, |
0x00, 0x18, 0x24, 0x18, 0x00, |
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, |
0x30, 0x48, 0x3A, 0x06, 0x0E, |
0x26, 0x29, 0x79, 0x29, 0x26, |
0x40, 0x7F, 0x05, 0x05, 0x07, |
0x40, 0x7F, 0x05, 0x25, 0x3F, |
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, |
0x7F, 0x3E, 0x1C, 0x1C, 0x08, |
0x08, 0x1C, 0x1C, 0x3E, 0x7F, |
0x14, 0x22, 0x7F, 0x22, 0x14, |
0x5F, 0x5F, 0x00, 0x5F, 0x5F, |
0x06, 0x09, 0x7F, 0x01, 0x7F, |
0x00, 0x66, 0x89, 0x95, 0x6A, |
0x60, 0x60, 0x60, 0x60, 0x60, |
0x94, 0xA2, 0xFF, 0xA2, 0x94, |
0x08, 0x04, 0x7E, 0x04, 0x08, |
0x10, 0x20, 0x7E, 0x20, 0x10, |
0x08, 0x08, 0x2A, 0x1C, 0x08, |
0x08, 0x1C, 0x2A, 0x08, 0x08, |
0x1E, 0x10, 0x10, 0x10, 0x10, |
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, |
0x30, 0x38, 0x3E, 0x38, 0x30, |
0x06, 0x0E, 0x3E, 0x0E, 0x06, |
0x00, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x5F, 0x00, 0x00, |
0x00, 0x07, 0x00, 0x07, 0x00, |
0x14, 0x7F, 0x14, 0x7F, 0x14, |
0x24, 0x2A, 0x7F, 0x2A, 0x12, |
0x23, 0x13, 0x08, 0x64, 0x62, |
0x36, 0x49, 0x56, 0x20, 0x50, |
0x00, 0x08, 0x07, 0x03, 0x00, |
0x00, 0x1C, 0x22, 0x41, 0x00, |
0x00, 0x41, 0x22, 0x1C, 0x00, |
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, |
0x08, 0x08, 0x3E, 0x08, 0x08, |
0x00, 0x80, 0x70, 0x30, 0x00, |
0x08, 0x08, 0x08, 0x08, 0x08, |
0x00, 0x00, 0x60, 0x60, 0x00, |
0x20, 0x10, 0x08, 0x04, 0x02, |
0x3E, 0x51, 0x49, 0x45, 0x3E, |
0x00, 0x42, 0x7F, 0x40, 0x00, |
0x72, 0x49, 0x49, 0x49, 0x46, |
0x21, 0x41, 0x49, 0x4D, 0x33, |
0x18, 0x14, 0x12, 0x7F, 0x10, |
0x27, 0x45, 0x45, 0x45, 0x39, |
0x3C, 0x4A, 0x49, 0x49, 0x31, |
0x41, 0x21, 0x11, 0x09, 0x07, |
0x36, 0x49, 0x49, 0x49, 0x36, |
0x46, 0x49, 0x49, 0x29, 0x1E, |
0x00, 0x00, 0x14, 0x00, 0x00, |
0x00, 0x40, 0x34, 0x00, 0x00, |
0x00, 0x08, 0x14, 0x22, 0x41, |
0x14, 0x14, 0x14, 0x14, 0x14, |
0x00, 0x41, 0x22, 0x14, 0x08, |
0x02, 0x01, 0x59, 0x09, 0x06, |
0x3E, 0x41, 0x5D, 0x59, 0x4E, |
0x7C, 0x12, 0x11, 0x12, 0x7C, |
0x7F, 0x49, 0x49, 0x49, 0x36, |
0x3E, 0x41, 0x41, 0x41, 0x22, |
0x7F, 0x41, 0x41, 0x41, 0x3E, |
0x7F, 0x49, 0x49, 0x49, 0x41, |
0x7F, 0x09, 0x09, 0x09, 0x01, |
0x3E, 0x41, 0x41, 0x51, 0x73, |
0x7F, 0x08, 0x08, 0x08, 0x7F, |
0x00, 0x41, 0x7F, 0x41, 0x00, |
0x20, 0x40, 0x41, 0x3F, 0x01, |
0x7F, 0x08, 0x14, 0x22, 0x41, |
0x7F, 0x40, 0x40, 0x40, 0x40, |
0x7F, 0x02, 0x1C, 0x02, 0x7F, |
0x7F, 0x04, 0x08, 0x10, 0x7F, |
0x3E, 0x41, 0x41, 0x41, 0x3E, |
0x7F, 0x09, 0x09, 0x09, 0x06, |
0x3E, 0x41, 0x51, 0x21, 0x5E, |
0x7F, 0x09, 0x19, 0x29, 0x46, |
0x26, 0x49, 0x49, 0x49, 0x32, |
0x03, 0x01, 0x7F, 0x01, 0x03, |
0x3F, 0x40, 0x40, 0x40, 0x3F, |
0x1F, 0x20, 0x40, 0x20, 0x1F, |
0x3F, 0x40, 0x38, 0x40, 0x3F, |
0x63, 0x14, 0x08, 0x14, 0x63, |
0x03, 0x04, 0x78, 0x04, 0x03, |
0x61, 0x59, 0x49, 0x4D, 0x43, |
0x00, 0x7F, 0x41, 0x41, 0x41, |
0x02, 0x04, 0x08, 0x10, 0x20, |
0x00, 0x41, 0x41, 0x41, 0x7F, |
0x04, 0x02, 0x01, 0x02, 0x04, |
0x40, 0x40, 0x40, 0x40, 0x40, |
0x00, 0x03, 0x07, 0x08, 0x00, |
0x20, 0x54, 0x54, 0x78, 0x40, |
0x7F, 0x28, 0x44, 0x44, 0x38, |
0x38, 0x44, 0x44, 0x44, 0x28, |
0x38, 0x44, 0x44, 0x28, 0x7F, |
0x38, 0x54, 0x54, 0x54, 0x18, |
0x00, 0x08, 0x7E, 0x09, 0x02, |
0x18, 0xA4, 0xA4, 0x9C, 0x78, |
0x7F, 0x08, 0x04, 0x04, 0x78, |
0x00, 0x44, 0x7D, 0x40, 0x00, |
0x20, 0x40, 0x40, 0x3D, 0x00, |
0x7F, 0x10, 0x28, 0x44, 0x00, |
0x00, 0x41, 0x7F, 0x40, 0x00, |
0x7C, 0x04, 0x78, 0x04, 0x78, |
0x7C, 0x08, 0x04, 0x04, 0x78, |
0x38, 0x44, 0x44, 0x44, 0x38, |
0xFC, 0x18, 0x24, 0x24, 0x18, |
0x18, 0x24, 0x24, 0x18, 0xFC, |
0x7C, 0x08, 0x04, 0x04, 0x08, |
0x48, 0x54, 0x54, 0x54, 0x24, |
0x04, 0x04, 0x3F, 0x44, 0x24, |
0x3C, 0x40, 0x40, 0x20, 0x7C, |
0x1C, 0x20, 0x40, 0x20, 0x1C, |
0x3C, 0x40, 0x30, 0x40, 0x3C, |
0x44, 0x28, 0x10, 0x28, 0x44, |
0x4C, 0x90, 0x90, 0x90, 0x7C, |
0x44, 0x64, 0x54, 0x4C, 0x44, |
0x00, 0x08, 0x36, 0x41, 0x00, |
0x00, 0x00, 0x77, 0x00, 0x00, |
0x00, 0x41, 0x36, 0x08, 0x00, |
0x02, 0x01, 0x02, 0x04, 0x02, |
0x3C, 0x26, 0x23, 0x26, 0x3C, |
0x1E, 0xA1, 0xA1, 0x61, 0x12, |
0x3A, 0x40, 0x40, 0x20, 0x7A, |
0x38, 0x54, 0x54, 0x55, 0x59, |
0x21, 0x55, 0x55, 0x79, 0x41, |
0x21, 0x54, 0x54, 0x78, 0x41, |
0x21, 0x55, 0x54, 0x78, 0x40, |
0x20, 0x54, 0x55, 0x79, 0x40, |
0x0C, 0x1E, 0x52, 0x72, 0x12, |
0x39, 0x55, 0x55, 0x55, 0x59, |
0x39, 0x54, 0x54, 0x54, 0x59, |
0x39, 0x55, 0x54, 0x54, 0x58, |
0x00, 0x00, 0x45, 0x7C, 0x41, |
0x00, 0x02, 0x45, 0x7D, 0x42, |
0x00, 0x01, 0x45, 0x7C, 0x40, |
0xF0, 0x29, 0x24, 0x29, 0xF0, |
0xF0, 0x28, 0x25, 0x28, 0xF0, |
0x7C, 0x54, 0x55, 0x45, 0x00, |
0x20, 0x54, 0x54, 0x7C, 0x54, |
0x7C, 0x0A, 0x09, 0x7F, 0x49, |
0x32, 0x49, 0x49, 0x49, 0x32, |
0x32, 0x48, 0x48, 0x48, 0x32, |
0x32, 0x4A, 0x48, 0x48, 0x30, |
0x3A, 0x41, 0x41, 0x21, 0x7A, |
0x3A, 0x42, 0x40, 0x20, 0x78, |
0x00, 0x9D, 0xA0, 0xA0, 0x7D, |
0x39, 0x44, 0x44, 0x44, 0x39, |
0x3D, 0x40, 0x40, 0x40, 0x3D, |
0x3C, 0x24, 0xFF, 0x24, 0x24, |
0x48, 0x7E, 0x49, 0x43, 0x66, |
0x2B, 0x2F, 0xFC, 0x2F, 0x2B, |
0xFF, 0x09, 0x29, 0xF6, 0x20, |
0xC0, 0x88, 0x7E, 0x09, 0x03, |
0x20, 0x54, 0x54, 0x79, 0x41, |
0x00, 0x00, 0x44, 0x7D, 0x41, |
0x30, 0x48, 0x48, 0x4A, 0x32, |
0x38, 0x40, 0x40, 0x22, 0x7A, |
0x00, 0x7A, 0x0A, 0x0A, 0x72, |
0x7D, 0x0D, 0x19, 0x31, 0x7D, |
0x26, 0x29, 0x29, 0x2F, 0x28, |
0x26, 0x29, 0x29, 0x29, 0x26, |
0x30, 0x48, 0x4D, 0x40, 0x20, |
0x38, 0x08, 0x08, 0x08, 0x08, |
0x08, 0x08, 0x08, 0x08, 0x38, |
0x2F, 0x10, 0xC8, 0xAC, 0xBA, |
0x2F, 0x10, 0x28, 0x34, 0xFA, |
0x00, 0x00, 0x7B, 0x00, 0x00, |
0x08, 0x14, 0x2A, 0x14, 0x22, |
0x22, 0x14, 0x2A, 0x14, 0x08, |
0xAA, 0x00, 0x55, 0x00, 0xAA, |
0xAA, 0x55, 0xAA, 0x55, 0xAA, |
0x00, 0x00, 0x00, 0xFF, 0x00, |
0x10, 0x10, 0x10, 0xFF, 0x00, |
0x14, 0x14, 0x14, 0xFF, 0x00, |
0x10, 0x10, 0xFF, 0x00, 0xFF, |
0x10, 0x10, 0xF0, 0x10, 0xF0, |
0x14, 0x14, 0x14, 0xFC, 0x00, |
0x14, 0x14, 0xF7, 0x00, 0xFF, |
0x00, 0x00, 0xFF, 0x00, 0xFF, |
0x14, 0x14, 0xF4, 0x04, 0xFC, |
0x14, 0x14, 0x17, 0x10, 0x1F, |
0x10, 0x10, 0x1F, 0x10, 0x1F, |
0x14, 0x14, 0x14, 0x1F, 0x00, |
0x10, 0x10, 0x10, 0xF0, 0x00, |
0x00, 0x00, 0x00, 0x1F, 0x10, |
0x10, 0x10, 0x10, 0x1F, 0x10, |
0x10, 0x10, 0x10, 0xF0, 0x10, |
0x00, 0x00, 0x00, 0xFF, 0x10, |
0x10, 0x10, 0x10, 0x10, 0x10, |
0x10, 0x10, 0x10, 0xFF, 0x10, |
0x00, 0x00, 0x00, 0xFF, 0x14, |
0x00, 0x00, 0xFF, 0x00, 0xFF, |
0x00, 0x00, 0x1F, 0x10, 0x17, |
0x00, 0x00, 0xFC, 0x04, 0xF4, |
0x14, 0x14, 0x17, 0x10, 0x17, |
0x14, 0x14, 0xF4, 0x04, 0xF4, |
0x00, 0x00, 0xFF, 0x00, 0xF7, |
0x14, 0x14, 0x14, 0x14, 0x14, |
0x14, 0x14, 0xF7, 0x00, 0xF7, |
0x14, 0x14, 0x14, 0x17, 0x14, |
0x10, 0x10, 0x1F, 0x10, 0x1F, |
0x14, 0x14, 0x14, 0xF4, 0x14, |
0x10, 0x10, 0xF0, 0x10, 0xF0, |
0x00, 0x00, 0x1F, 0x10, 0x1F, |
0x00, 0x00, 0x00, 0x1F, 0x14, |
0x00, 0x00, 0x00, 0xFC, 0x14, |
0x00, 0x00, 0xF0, 0x10, 0xF0, |
0x10, 0x10, 0xFF, 0x10, 0xFF, |
0x14, 0x14, 0x14, 0xFF, 0x14, |
0x10, 0x10, 0x10, 0x1F, 0x00, |
0x00, 0x00, 0x00, 0xF0, 0x10, |
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, |
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, |
0xFF, 0xFF, 0xFF, 0x00, 0x00, |
0x00, 0x00, 0x00, 0xFF, 0xFF, |
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, |
0x38, 0x44, 0x44, 0x38, 0x44, |
0x7C, 0x2A, 0x2A, 0x3E, 0x14, |
0x7E, 0x02, 0x02, 0x06, 0x06, |
0x02, 0x7E, 0x02, 0x7E, 0x02, |
0x63, 0x55, 0x49, 0x41, 0x63, |
0x38, 0x44, 0x44, 0x3C, 0x04, |
0x40, 0x7E, 0x20, 0x1E, 0x20, |
0x06, 0x02, 0x7E, 0x02, 0x02, |
0x99, 0xA5, 0xE7, 0xA5, 0x99, |
0x1C, 0x2A, 0x49, 0x2A, 0x1C, |
0x4C, 0x72, 0x01, 0x72, 0x4C, |
0x30, 0x4A, 0x4D, 0x4D, 0x30, |
0x30, 0x48, 0x78, 0x48, 0x30, |
0xBC, 0x62, 0x5A, 0x46, 0x3D, |
0x3E, 0x49, 0x49, 0x49, 0x00, |
0x7E, 0x01, 0x01, 0x01, 0x7E, |
0x2A, 0x2A, 0x2A, 0x2A, 0x2A, |
0x44, 0x44, 0x5F, 0x44, 0x44, |
0x40, 0x51, 0x4A, 0x44, 0x40, |
0x40, 0x44, 0x4A, 0x51, 0x40, |
0x00, 0x00, 0xFF, 0x01, 0x03, |
0xE0, 0x80, 0xFF, 0x00, 0x00, |
0x08, 0x08, 0x6B, 0x6B, 0x08, |
0x36, 0x12, 0x36, 0x24, 0x36, |
0x06, 0x0F, 0x09, 0x0F, 0x06, |
0x00, 0x00, 0x18, 0x18, 0x00, |
0x00, 0x00, 0x10, 0x10, 0x00, |
0x30, 0x40, 0xFF, 0x01, 0x01, |
0x00, 0x1F, 0x01, 0x01, 0x1E, |
0x00, 0x19, 0x1D, 0x17, 0x12, |
0x00, 0x3C, 0x3C, 0x3C, 0x3C, |
0x00, 0x00, 0x00, 0x00, 0x00, |
}; |
#endif |
/PIC Stuff/PICX_16F1825_Stepper_Driver/l.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/PIC Stuff/PICX_16F1825_Stepper_Driver/main.c |
---|
25,6 → 25,8 |
#include "INTERRUPTS.h" |
#include "STEPPER.h" |
#include "IOC.h" |
#include "SPI.h" |
#include "OLED_SSD1306.h" |
void Pins_Init(void) { |
// RA0 and RA1 pins as analog input |
40,9 → 42,6 |
STEP_TRIS = 0; |
STEP_LAT = 0; |
DIR_TRIS = 0; |
DIR_LAT = 0; |
M0_TRIS = 0; |
M0_LAT = 0; |
53,17 → 52,23 |
M2_LAT = 0; |
SW_1_TRIS = 1; |
SW_1_INLVL = 1; |
SW_2_TRIS = 1; |
SW_2_INLVL = 1; |
STEP_CURRENT_TRIS = 1; |
POT_CURRENT_TRIS = 1; |
SPI_MOSI_TRIS = 0; |
SPI_D_C_TRIS = 0; |
SPI_CLK_TRIS = 0; |
SPI_DC_SELECT_TRIS = 0; |
SPI_DC_SELECT_LAT = 0; |
SPI_RESET_TRIS = 0; |
SPI_RESET_LAT = 0; |
} |
OPERATING_MODE currMode; |
STEPPER_MICROSTEP currStep; |
int main(void) { |
// Set internal oscillator speed to 32MHz |
75,17 → 80,69 |
Pins_Init(); |
IOC_Init(); |
SPI_DATA spi_data; |
SPI_Init(&spi_data, SPI2_FOSC_16); |
SSD1306_DATA ssd1306_data; |
SSD1306_Init(&ssd1306_data); |
Interrupt_Init(); |
Interrupt_Enable(); |
currMode = SINGLE_STEP; |
currStep = STEP_1_1; |
SSD1306_Begin(SSD1306_SWITCHCAPVCC); |
while(1) { |
Update_OLED(); |
switch (STEPPER_Get_Auto()) { |
case DELAY_1000MS: |
STEPPER_Step(); |
__delay_ms(1000); |
break; |
case DELAY_500MS: |
STEPPER_Step(); |
__delay_ms(500); |
break; |
case DELAY_333MS: |
STEPPER_Step(); |
__delay_ms(333); |
break; |
case DELAY_250MS: |
STEPPER_Step(); |
__delay_ms(250); |
break; |
case DELAY_100MS: |
STEPPER_Step(); |
__delay_ms(100); |
break; |
case DELAY_50MS: |
STEPPER_Step(); |
__delay_ms(50); |
break; |
case DELAY_25MS: |
STEPPER_Step(); |
__delay_ms(25); |
break; |
case DELAY_10MS: |
STEPPER_Step(); |
__delay_ms(10); |
break; |
case DELAY_5MS: |
STEPPER_Step(); |
__delay_ms(5); |
break; |
case DELAY_1MS: |
STEPPER_Step(); |
__delay_ms(1); |
break; |
case DELAY_STOPPED: |
break; |
} |
} |
} |
void Set_Next_Mode() { |
94,6 → 151,9 |
currMode = AUTO_STEP; |
break; |
case AUTO_STEP: |
currMode = SET_DELAY; |
break; |
case SET_DELAY: |
currMode = SET_MICROSTEP; |
break; |
case SET_MICROSTEP: |
107,27 → 167,83 |
return currMode; |
} |
void Set_Next_Step() { |
switch (currStep) { |
case STEP_1_1: |
currStep = STEP_1_2; |
void Update_OLED(void) { |
SSD1306_Clear_Display(); |
SSD1306_Set_Text_Size(2); |
SSD1306_Set_Text_Wrap(0); |
switch (currMode) { |
case SINGLE_STEP: |
Draw_Manual_Text(1); |
Draw_Auto_Text(0); |
Draw_Step_Text(STEPPER_Get_Cur_Step(), 0); |
Draw_Speed_Text(STEPPER_Get_Cur_Speed(), 0); |
break; |
case STEP_1_2: |
currStep = STEP_1_4; |
case AUTO_STEP: |
Draw_Manual_Text(0); |
Draw_Auto_Text(1); |
Draw_Step_Text(STEPPER_Get_Cur_Step(), 0); |
Draw_Speed_Text(STEPPER_Get_Cur_Speed(), 0); |
break; |
case STEP_1_4: |
currStep = STEP_1_8; |
case SET_DELAY: |
Draw_Manual_Text(0); |
Draw_Auto_Text(0); |
Draw_Step_Text(STEPPER_Get_Cur_Step(), 1); |
Draw_Speed_Text(STEPPER_Get_Cur_Speed(), 0); |
break; |
case STEP_1_8: |
currStep = STEP_1_16; |
case SET_MICROSTEP: |
Draw_Manual_Text(0); |
Draw_Auto_Text(0); |
Draw_Step_Text(STEPPER_Get_Cur_Step(), 0); |
Draw_Speed_Text(STEPPER_Get_Cur_Speed(), 1); |
break; |
case STEP_1_16: |
currStep = STEP_1_32; |
break; |
case STEP_1_32: |
default: |
currStep = STEP_1_1; |
break; |
} |
STEPPER_Set_Microstep(currStep); |
SSD1306_Display(); |
} |
void Draw_Manual_Text(uint8_t selected) { |
uint8_t stringManual[] = "MANUAL"; |
if (selected) { |
SSD1306_Fill_Rect(0, 0, 75, 16, 1); |
SSD1306_Set_Text_Color(0); |
} else { |
SSD1306_Set_Text_Color(1); |
} |
SSD1306_Set_Cursor(3, 1); |
SSD1306_Write_String(stringManual, 6); |
} |
void Draw_Auto_Text(uint8_t selected) { |
uint8_t stringAuto[] = "AUTO"; |
if (selected) { |
SSD1306_Fill_Rect(76, 0, 53, 16, 1); |
SSD1306_Set_Text_Color(0); |
} else { |
SSD1306_Set_Text_Color(1); |
} |
SSD1306_Set_Cursor(79, 1); |
SSD1306_Write_String(stringAuto, 4); |
} |
void Draw_Speed_Text(STEPPER_SPEED speed, uint8_t selected) { |
uint8_t stringSpeed[] = "1000Hz"; |
if (selected) { |
SSD1306_Fill_Rect(53, 16, 76, 16, 1); |
SSD1306_Set_Text_Color(0); |
} else { |
SSD1306_Set_Text_Color(1); |
} |
SSD1306_Set_Cursor(55, 17); |
SSD1306_Write_String(stringSpeed, 6); |
} |
void Draw_Step_Text(STEPPER_MICROSTEP step, uint8_t selected) { |
uint8_t stringStepping[] = "1/32"; |
if (selected) { |
SSD1306_Fill_Rect(0, 16, 52, 16, 1); |
SSD1306_Set_Text_Color(0); |
} else { |
SSD1306_Set_Text_Color(1); |
} |
SSD1306_Set_Cursor(2, 17); |
SSD1306_Write_String(stringStepping, 4); |
} |
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/Makefile-default.mk |
---|
45,17 → 45,17 |
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} |
# Source Files Quoted if spaced |
SOURCEFILES_QUOTED_IF_SPACED=main.c INTERRUPTS.c STEPPER.c IOC.c |
SOURCEFILES_QUOTED_IF_SPACED=main.c INTERRUPTS.c STEPPER.c IOC.c SPI.c OLED_SSD1306.c |
# Object Files Quoted if spaced |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/INTERRUPTS.p1.d ${OBJECTDIR}/STEPPER.p1.d ${OBJECTDIR}/IOC.p1.d |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 ${OBJECTDIR}/SPI.p1 ${OBJECTDIR}/OLED_SSD1306.p1 |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.p1.d ${OBJECTDIR}/INTERRUPTS.p1.d ${OBJECTDIR}/STEPPER.p1.d ${OBJECTDIR}/IOC.p1.d ${OBJECTDIR}/SPI.p1.d ${OBJECTDIR}/OLED_SSD1306.p1.d |
# Object Files |
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 |
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 ${OBJECTDIR}/SPI.p1 ${OBJECTDIR}/OLED_SSD1306.p1 |
# Source Files |
SOURCEFILES=main.c INTERRUPTS.c STEPPER.c IOC.c |
SOURCEFILES=main.c INTERRUPTS.c STEPPER.c IOC.c SPI.c OLED_SSD1306.c |
CFLAGS= |
82,7 → 82,7 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/main.p1.d |
@${RM} ${OBJECTDIR}/main.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/main.p1 main.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/main.p1 main.c |
@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d |
@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
90,7 → 90,7 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/INTERRUPTS.p1.d |
@${RM} ${OBJECTDIR}/INTERRUPTS.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/INTERRUPTS.p1 INTERRUPTS.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/INTERRUPTS.p1 INTERRUPTS.c |
@-${MV} ${OBJECTDIR}/INTERRUPTS.d ${OBJECTDIR}/INTERRUPTS.p1.d |
@${FIXDEPS} ${OBJECTDIR}/INTERRUPTS.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
98,7 → 98,7 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/STEPPER.p1.d |
@${RM} ${OBJECTDIR}/STEPPER.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/STEPPER.p1 STEPPER.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/STEPPER.p1 STEPPER.c |
@-${MV} ${OBJECTDIR}/STEPPER.d ${OBJECTDIR}/STEPPER.p1.d |
@${FIXDEPS} ${OBJECTDIR}/STEPPER.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
106,16 → 106,32 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/IOC.p1.d |
@${RM} ${OBJECTDIR}/IOC.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/IOC.p1 IOC.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/IOC.p1 IOC.c |
@-${MV} ${OBJECTDIR}/IOC.d ${OBJECTDIR}/IOC.p1.d |
@${FIXDEPS} ${OBJECTDIR}/IOC.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/SPI.p1: SPI.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/SPI.p1.d |
@${RM} ${OBJECTDIR}/SPI.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/SPI.p1 SPI.c |
@-${MV} ${OBJECTDIR}/SPI.d ${OBJECTDIR}/SPI.p1.d |
@${FIXDEPS} ${OBJECTDIR}/SPI.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/OLED_SSD1306.p1: OLED_SSD1306.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/OLED_SSD1306.p1.d |
@${RM} ${OBJECTDIR}/OLED_SSD1306.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/OLED_SSD1306.p1 OLED_SSD1306.c |
@-${MV} ${OBJECTDIR}/OLED_SSD1306.d ${OBJECTDIR}/OLED_SSD1306.p1.d |
@${FIXDEPS} ${OBJECTDIR}/OLED_SSD1306.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
else |
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/main.p1.d |
@${RM} ${OBJECTDIR}/main.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/main.p1 main.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/main.p1 main.c |
@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d |
@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
123,7 → 139,7 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/INTERRUPTS.p1.d |
@${RM} ${OBJECTDIR}/INTERRUPTS.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/INTERRUPTS.p1 INTERRUPTS.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/INTERRUPTS.p1 INTERRUPTS.c |
@-${MV} ${OBJECTDIR}/INTERRUPTS.d ${OBJECTDIR}/INTERRUPTS.p1.d |
@${FIXDEPS} ${OBJECTDIR}/INTERRUPTS.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
131,7 → 147,7 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/STEPPER.p1.d |
@${RM} ${OBJECTDIR}/STEPPER.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/STEPPER.p1 STEPPER.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/STEPPER.p1 STEPPER.c |
@-${MV} ${OBJECTDIR}/STEPPER.d ${OBJECTDIR}/STEPPER.p1.d |
@${FIXDEPS} ${OBJECTDIR}/STEPPER.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
139,10 → 155,26 |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/IOC.p1.d |
@${RM} ${OBJECTDIR}/IOC.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/IOC.p1 IOC.c |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/IOC.p1 IOC.c |
@-${MV} ${OBJECTDIR}/IOC.d ${OBJECTDIR}/IOC.p1.d |
@${FIXDEPS} ${OBJECTDIR}/IOC.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/SPI.p1: SPI.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/SPI.p1.d |
@${RM} ${OBJECTDIR}/SPI.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/SPI.p1 SPI.c |
@-${MV} ${OBJECTDIR}/SPI.d ${OBJECTDIR}/SPI.p1.d |
@${FIXDEPS} ${OBJECTDIR}/SPI.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
${OBJECTDIR}/OLED_SSD1306.p1: OLED_SSD1306.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/OLED_SSD1306.p1.d |
@${RM} ${OBJECTDIR}/OLED_SSD1306.p1 |
${MP_CC} --pass1 $(MP_EXTRA_CC_PRE) --chip=$(MP_PROCESSOR_OPTION) -Q -G --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -o${OBJECTDIR}/OLED_SSD1306.p1 OLED_SSD1306.c |
@-${MV} ${OBJECTDIR}/OLED_SSD1306.d ${OBJECTDIR}/OLED_SSD1306.p1.d |
@${FIXDEPS} ${OBJECTDIR}/OLED_SSD1306.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ |
endif |
# ------------------------------------------------------------------------------------ |
156,13 → 188,13 |
ifeq ($(TYPE_IMAGE), DEBUG_RUN) |
dist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} |
${MP_CC} $(MP_EXTRA_LD_PRE) --chip=$(MP_PROCESSOR_OPTION) -G -mdist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.map -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -odist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} |
${MP_CC} $(MP_EXTRA_LD_PRE) --chip=$(MP_PROCESSOR_OPTION) -G -mdist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.map -D__DEBUG=1 --debugger=pickit3 --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -odist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} |
@${RM} dist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.hex |
else |
dist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} |
${MP_CC} $(MP_EXTRA_LD_PRE) --chip=$(MP_PROCESSOR_OPTION) -G -mdist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.map --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -odist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} |
${MP_CC} $(MP_EXTRA_LD_PRE) --chip=$(MP_PROCESSOR_OPTION) -G -mdist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.map --double=24 --float=24 --opt=default,+asm,+asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -odist/${CND_CONF}/${IMAGE_TYPE}/PICX_16F1825_Stepper_Driver.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} |
endif |
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/Makefile-genesis.properties |
---|
1,8 → 1,8 |
# |
#Sun Aug 31 23:36:02 EDT 2014 |
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc8\\v1.20\\bin |
#Wed Sep 03 01:49:46 EDT 2014 |
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc8\\v1.32\\bin |
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=1f98a0eed69cb2a45c12981fa9470927 |
default.languagetoolchain.version=1.20 |
default.languagetoolchain.version=1.32 |
host.platform=windows |
conf.ids=default |
default.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=52258db7536b2d1fec300cefc7ed9230 |
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/Makefile-local-default.mk |
---|
21,7 → 21,7 |
# Path to java used to run MPLAB X when this makefile was created |
MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" |
OS_CURRENT="$(shell uname -s)" |
MP_CC="C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" |
MP_CC="C:\Program Files (x86)\Microchip\xc8\v1.32\bin\xc8.exe" |
# MP_CPPC is not defined |
# MP_BC is not defined |
# MP_AS is not defined |
28,7 → 28,7 |
# MP_LD is not defined |
# MP_AR is not defined |
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" |
MP_CC_DIR="C:\Program Files (x86)\Microchip\xc8\v1.20\bin" |
MP_CC_DIR="C:\Program Files (x86)\Microchip\xc8\v1.32\bin" |
# MP_CPPC_DIR is not defined |
# MP_BC_DIR is not defined |
# MP_AS_DIR is not defined |
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/configurations.xml |
---|
8,6 → 8,8 |
<itemPath>INTERRUPTS.h</itemPath> |
<itemPath>STEPPER.h</itemPath> |
<itemPath>IOC.h</itemPath> |
<itemPath>SPI.h</itemPath> |
<itemPath>OLED_SSD1306.h</itemPath> |
</logicalFolder> |
<logicalFolder name="LinkerScript" |
displayName="Linker Files" |
20,6 → 22,8 |
<itemPath>INTERRUPTS.c</itemPath> |
<itemPath>STEPPER.c</itemPath> |
<itemPath>IOC.c</itemPath> |
<itemPath>SPI.c</itemPath> |
<itemPath>OLED_SSD1306.c</itemPath> |
</logicalFolder> |
<logicalFolder name="ExternalFiles" |
displayName="Important Files" |
37,7 → 41,7 |
<targetPluginBoard></targetPluginBoard> |
<platformTool>PICkit3PlatformTool</platformTool> |
<languageToolchain>XC8</languageToolchain> |
<languageToolchainVersion>1.20</languageToolchainVersion> |
<languageToolchainVersion></languageToolchainVersion> |
<platform>3</platform> |
</toolsSet> |
<compileType> |
72,7 → 76,7 |
<property key="optimization-global" value="true"/> |
<property key="optimization-level" value="9"/> |
<property key="optimization-set" value="default"/> |
<property key="optimization-speed" value="false"/> |
<property key="optimization-speed" value="true"/> |
<property key="preprocess-assembler" value="true"/> |
<property key="undefine-macros" value=""/> |
<property key="use-cci" value="false"/> |
128,7 → 132,6 |
<property key="ToolFirmwareFilePath" |
value="Press to browse for a specific firmware version"/> |
<property key="ToolFirmwareOption.UseLatestFirmware" value="true"/> |
<property key="firmware.download.all" value="false"/> |
<property key="hwtoolclock.frcindebug" value="false"/> |
<property key="memories.aux" value="false"/> |
<property key="memories.bootflash" value="false"/> |
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/private/configurations.xml |
---|
5,7 → 5,7 |
<confs> |
<conf name="default" type="2"> |
<platformToolSN>:=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>900A:=<rev>0002:=<man>Microchip Technology Inc.:=<prod>PICkit 3:=<sn>BUR114189291:=<drv>x:=<xpt>h:=end</platformToolSN> |
<languageToolchainDir>C:\Program Files (x86)\Microchip\xc8\v1.20\bin</languageToolchainDir> |
<languageToolchainDir></languageToolchainDir> |
<mdbdebugger version="1"> |
<placeholder1>place holder 1</placeholder1> |
<placeholder2>place holder 2</placeholder2> |