Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 315 → Rev 316

/PIC Stuff/PICX_16F1825_Stepper_Driver/ADC.c
0,0 → 1,24
#include "defines.h"
#include "ADC.h"
 
void ADC_Init(void) {
ADCON0bits.ADON = 0; // Turn off ADC module
ADCON1bits.ADFM = 1; // Right justified data
ADCON1bits.ADCS = 0b110; // A/D conversion clock = FOSC/64
ADCON1bits.ADNREF = 0; // Negative reference is VSS
ADCON1bits.ADPREF = 0b00; // Positive reference is VDD
}
 
uint16_t ADC_Read(uint8_t channel) {
uint16_t ret;
 
ADCON0bits.CHS = channel; // Set channel
ADCON0bits.ADON = 1; // Turn ADC on
__delay_us(10); // Wait the acquisition time
ADCON0bits.GO_nDONE = 1; // Start conversion
while (ADCON0bits.GO_nDONE == 1); // Wait for conversion to finish
ret = ADRESH << 8; // Read ADC value
ret |= ADRESL;
 
return ret;
}
/PIC Stuff/PICX_16F1825_Stepper_Driver/ADC.h
0,0 → 1,9
#ifndef ADC_H
#define ADC_H
 
void ADC_Init(void);
 
uint16_t ADC_Read(uint8_t channel);
 
#endif /* ADC_H */
 
/PIC Stuff/PICX_16F1825_Stepper_Driver/INTERRUPTS.c
2,6 → 2,7
#include "INTERRUPTS.h"
#include "IOC.h"
#include "SPI.h"
#include "TIMER.h"
 
void Interrupt_Init() {
}
21,6 → 22,14
// We need to check the interrupt flag of each enabled high-priority interrupt to
// see which device generated this interrupt. Then we can call the correct handler.
 
if (PIR1bits.TMR2IF) {
 
TIMER_2_Interrupt_Handler();
PIR1bits.TMR2IF = 0;
return;
}
if (INTCONbits.IOCIF) {
// Call the handler
IOC_Interrupt_Handler();
30,38 → 39,5
return;
}
 
// // Check to see if we have an I2C interrupt
// if (PIR1bits.SSP1IF) {
//
// // Call the handler
// I2C1_Interrupt_Handler();
//
// // Clear the interrupt flag
// PIR1bits.SSP1IF = 0;
//
// return;
// }
 
// if (PIR1bits.RCIF) {
//
// // Call the handler
// UART_RX_Interrupt_Handler();
//
// // Clear the interrupt flag
// PIR1bits.RCIF = 0;
//
// return;
// }
 
// if (PIR1bits.TXIF) {
//
// // Call the handler
// UART_TX_Interrupt_Handler();
//
// // Clear the interrupt flag
// PIR1bits.TXIF = 0;
//
// return;
// }
 
}
/PIC Stuff/PICX_16F1825_Stepper_Driver/IOC.c
13,8 → 13,14
}
 
void IOC_Interrupt_Handler(void) {
STEP_LAT = 1;
STEP_LAT = 0;
if (IOCAFbits.IOCAF3) {
 
// Delay to debounce button on any edge
__delay_ms(1);
if (SW_1_PORT) {
switch (Get_Cur_Mode()) {
case SINGLE_STEP:
23,9 → 29,6
case AUTO_STEP:
STEPPER_Toggle_Auto();
break;
case SET_DELAY:
STEPPER_Set_Next_Delay();
break;
case SET_MICROSTEP:
STEPPER_Set_Next_Step();
break;
33,20 → 36,25
}
 
// Delay to debounce button on any edge
__delay_ms(200);
__delay_ms(1);
IOCAFbits.IOCAF3 = 0;
return;
}
 
if (IOCAFbits.IOCAF4) {
 
// Delay to debounce button on any edge
__delay_ms(1);
if (SW_2_PORT) {
Set_Next_Mode();
}
 
// Delay to debounce button on any edge
__delay_ms(200);
__delay_ms(1);
 
IOCAFbits.IOCAF4 = 0;
return;
}
}
/PIC Stuff/PICX_16F1825_Stepper_Driver/SPI.h
1,7 → 1,7
#ifndef SPI_H
#define SPI_H
 
#define MAX_SPI_BUFFER 16
#define MAX_SPI_BUFFER 64
#define SPI_WRITE_ONLY
 
#define SPI2_FOSC_TMR2 0b0011
/PIC Stuff/PICX_16F1825_Stepper_Driver/STEPPER.c
1,9 → 1,10
#include "defines.h"
#include "STEPPER.h"
#include "OLED_SSD1306.h"
#include "ADC.h"
#include "TIMER.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) {
65,64 → 66,25
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) {
// Turn on automatic stepping
TIMER_2_Init(STEPPER_Step);
TIMER_2_Set_Delay((ADC_Read(POT_ADC_CHANNEL) >> 4) + 1);
TIMER_2_Start();
autoOn = 1;
} else {
// Turn off automatic stepping
TIMER_2_Stop();
autoOn = 0;
}
}
 
STEPPER_SPEED STEPPER_Get_Auto() {
if (autoOn == 0) {
return DELAY_STOPPED;
} else {
return currSpeed;
}
}
 
void STEPPER_Step() {
// Toggle step pin
STEP_LAT = 1;
__delay_us(2);
STEP_LAT = 0;
// Set the timer delay for the next step
TIMER_2_Set_Delay((ADC_Read(POT_ADC_CHANNEL) >> 4) + 1);
}
/PIC Stuff/PICX_16F1825_Stepper_Driver/STEPPER.h
12,27 → 12,10
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_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/TIMER.c
0,0 → 1,41
#include "defines.h"
#include "TIMER.h"
 
static TIMER_DATA *timer_data_p;
 
void TIMER_Init(TIMER_DATA *data) {
timer_data_p = data;
}
 
void TIMER_2_Init(void (*callback)(void)) {
timer_data_p->timer_2_callback = callback;
timer_data_p->delay = 0;
T2CONbits.T2OUTPS = 0b0000; // 1:1 Postscaler
T2CONbits.T2CKPS = 0b10; // 1:16 Prescaler
T2CONbits.TMR2ON = 0; // Timer stopped
TMR2 = 6; // Initial value of 6 (overflows every 0.5ms)
 
PIE1bits.TMR2IE = 1; // Timer 1 overflow interrupt
}
 
void TIMER_2_Set_Delay(uint16_t delay) {
timer_data_p->delay = delay;
}
 
void TIMER_2_Start(void) {
T2CONbits.TMR2ON = 1; // Start timer
}
 
void TIMER_2_Stop(void) {
T2CONbits.TMR2ON = 0; // Stop timer
}
 
void TIMER_2_Interrupt_Handler(void) {
TMR2 = 6;
timer_data_p->counter++;
if (timer_data_p->counter > timer_data_p->delay) {
timer_data_p->timer_2_callback();
timer_data_p->counter = 0;
}
}
/PIC Stuff/PICX_16F1825_Stepper_Driver/TIMER.h
0,0 → 1,18
#ifndef TIMER_H
#define TIMER_H
 
typedef struct {
void (*timer_2_callback)(void);
uint16_t delay;
uint24_t counter;
} TIMER_DATA;
 
void TIMER_Init(TIMER_DATA *data);
void TIMER_2_Init(void (*callback)(void));
void TIMER_2_Set_Delay(uint16_t delay);
void TIMER_2_Start(void);
void TIMER_2_Stop(void);
void TIMER_2_Interrupt_Handler(void);
 
#endif /* TIMER_H */
 
/PIC Stuff/PICX_16F1825_Stepper_Driver/defines.h
9,18 → 9,18
#define CONTROL_FROM_UART
 
// <editor-fold defaultstate="collapsed" desc="I/O Pins">
 
// Stepper Driver
#define STEP_TRIS TRISAbits.TRISA5
#define STEP_LAT LATAbits.LATA5
 
#define M2_TRIS TRISCbits.TRISC3
#define M2_LAT LATCbits.LATC3
 
#define M1_TRIS TRISCbits.TRISC4
#define M1_LAT LATCbits.LATC4
 
#define M0_TRIS TRISCbits.TRISC5
#define M0_LAT LATCbits.LATC5
 
// I/O
#define SW_2_TRIS TRISAbits.TRISA4
#define SW_2_PORT PORTAbits.RA4
#define SW_2_INLVL INLVLAbits.INLVLA4
30,8 → 30,11
#define SW_1_INLVL INLVLAbits.INLVLA3
 
#define STEP_CURRENT_TRIS TRISAbits.TRISA1
#define STEP_ADC_CHANNEL 1
#define POT_CURRENT_TRIS TRISAbits.TRISA0
#define POT_ADC_CHANNEL 0
 
// SPI
#define SPI_MOSI_TRIS TRISCbits.TRISC2
#define SPI_MOSI_LAT LATCbits.LATC2
#define SPI_CLK_TRIS TRISCbits.TRISC0
48,7 → 51,6
typedef enum {
SINGLE_STEP,
AUTO_STEP,
SET_DELAY,
SET_MICROSTEP
} OPERATING_MODE;
 
58,7 → 60,8
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);
void Draw_Stepper_Current(void);
void Draw_Pot_Value(void);
 
#endif /* DEFINES_H */
/PIC Stuff/PICX_16F1825_Stepper_Driver/funclist
1,49 → 1,65
___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
___awdiv: CODE, 5299 0 84
_TIMER_2_Init: CODE, 4280 0 29
_TIMER_2_Stop: CODE, 8075 0 3
_IOC_Interrupt_Handler: CODE, 5383 0 85
_Update_OLED: CODE, 5468 0 85
_TIMER_2_Start: CODE, 8072 0 3
_Set_Next_Mode: CODE, 2024 0 24
__stringdata: STRCODE, 1541 0 10
_Draw_Auto_Text: CODE, 5068 0 76
_SSD1306_Set_Cursor: CODE, 4115 0 20
_Draw_Pot_Value: CODE, 4732 0 51
___ftpack: CODE, 5553 0 97
_IOC_Init: CODE, 8082 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
_dpowers: STRCODE, 1531 0 10
_memset: CODE, 4369 0 30
_STEPPER_Set_Microstep: CODE, 4835 0 54
_main: CODE, 4684 0 48
_Interrupt_Enable: CODE, 4096 0 3
___lwtoft: CODE, 4155 0 21
_TIMER_2_Set_Delay: CODE, 8096 0 11
_SSD1306_Draw_Fast_VLine: CODE, 4944 0 59
_SSD1306_Abs: CODE, 8142 0 15
_SSD1306_Set_Text_Color: CODE, 4135 0 20
_InterruptHandler: CODE, 4 0 23
_SSD1306_Swap: CODE, 4253 0 27
_SSD1306_Init: CODE, 2048 0 95
_SPI_Write: CODE, 4431 0 34
_Draw_Manual_Text: CODE, 5144 0 76
_Get_Cur_Mode: CODE, 8069 0 3
_SSD1306_Write: CODE, 2627 0 261
_SSD1306_Begin: CODE, 5650 0 126
_STEPPER_Set_Next_Step: CODE, 4399 0 32
_Interrupt_Init: CODE, 3 0 1
__initialization: CODE, 29 0 51
_SSD1306_Write_String: CODE, 4176 0 25
___lwdiv: CODE, 4889 0 55
_SSD1306_Draw_Line: CODE, 2367 0 260
_TIMER_2_Interrupt_Handler: CODE, 5220 0 79
_SSD1306_Draw_Char: CODE, 1551 0 473
_STEPPER_Step: CODE, 4309 0 30
_Draw_Stepper_Current: CODE, 5956 0 188
_SSD1306_Fill_Rect: CODE, 5003 0 65
_SPI_Init: CODE, 4465 0 40
_isdigit: CODE, 8157 0 15
_sprintf: CODE, 3186 0 398
_Draw_Step_Text: CODE, 2888 0 298
_SSD1306_Set_Text_Size: CODE, 4227 0 26
___lwmod: CODE, 4637 0 47
_SSD1306_Clear_Display: CODE, 4099 0 16
___ftmul: CODE, 5776 0 180
_TIMER_Init: CODE, 8089 0 7
_ADC_Read: CODE, 4783 0 52
_SSD1306_Command: CODE, 8172 0 20
_SSD1306_Draw_Pixel: CODE, 2143 0 224
___wmul: CODE, 4339 0 30
_ADC_Init: CODE, 8107 0 11
_SSD1306_Display: CODE, 4201 0 26
_SSD1306_Set_Text_Wrap: CODE, 8118 0 12
_STEPPER_Toggle_Auto: CODE, 4548 0 44
___fttol: CODE, 84 0 135
_Pins_Init: CODE, 4505 0 43
i1_ADC_Read: CODE, 4592 0 45
_STEPPER_Get_Cur_Step: CODE, 253 0 3
Total: 5696
/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
26,7 → 26,10
#include "STEPPER.h"
#include "IOC.h"
#include "SPI.h"
#include "ADC.h"
#include "OLED_SSD1306.h"
#include "TIMER.h"
#include <stdio.h>
 
void Pins_Init(void) {
// RA0 and RA1 pins as analog input
39,21 → 42,19
// SDO1 on RC2
APFCON0bits.SDOSEL = 0;
 
// Stepper Driver
STEP_TRIS = 0;
STEP_LAT = 0;
 
M0_TRIS = 0;
M0_LAT = 0;
 
M1_TRIS = 0;
M1_LAT = 0;
 
M2_TRIS = 0;
M2_LAT = 0;
 
// I/O
SW_1_TRIS = 1;
SW_1_INLVL = 1;
 
SW_2_TRIS = 1;
SW_2_INLVL = 1;
 
60,6 → 61,7
STEP_CURRENT_TRIS = 1;
POT_CURRENT_TRIS = 1;
 
// SPI
SPI_MOSI_TRIS = 0;
SPI_CLK_TRIS = 0;
SPI_DC_SELECT_TRIS = 0;
81,6 → 83,11
 
IOC_Init();
 
ADC_Init();
 
TIMER_DATA timer_data;
TIMER_Init(&timer_data);
SPI_DATA spi_data;
SPI_Init(&spi_data, SPI2_FOSC_16);
 
95,53 → 102,8
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;
}
// __delay_ms(1);
}
}
 
151,9 → 113,6
currMode = AUTO_STEP;
break;
case AUTO_STEP:
currMode = SET_DELAY;
break;
case SET_DELAY:
currMode = SET_MICROSTEP;
break;
case SET_MICROSTEP:
176,31 → 135,25
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 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 SET_DELAY:
case SET_MICROSTEP:
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 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;
}
Draw_Stepper_Current();
Draw_Pot_Value();
SSD1306_Display();
}
 
void Draw_Manual_Text(uint8_t selected) {
// Draw and/or highlight the stepping mode in the top left corner
uint8_t stringManual[] = "MANUAL";
if (selected) {
SSD1306_Fill_Rect(0, 0, 75, 16, 1);
213,6 → 166,7
}
 
void Draw_Auto_Text(uint8_t selected) {
// Draw and/or highlight the stepping mode in the top right corner
uint8_t stringAuto[] = "AUTO";
if (selected) {
SSD1306_Fill_Rect(76, 0, 53, 16, 1);
224,20 → 178,34
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_Stepper_Current() {
// Draw the stepper motor current draw in the bottom right corner
uint8_t buffer[6] = {0};
uint16_t potVoltage = ADC_Read(STEP_ADC_CHANNEL);
// Compute current from voltage reading (2x)
uint16_t current = potVoltage * 0.3222 * 2;
uint8_t preDecimal = current / 100;
uint8_t postDecimal = current % 100;
sprintf(buffer, "%1d.%02dA", preDecimal, postDecimal);
SSD1306_Set_Text_Color(1);
SSD1306_Set_Cursor(67, 17);
SSD1306_Write_String(buffer, 5);
}
 
void Draw_Pot_Value() {
// Draw a line indicating auto rotation delay
uint8_t potVoltage = ADC_Read(POT_ADC_CHANNEL) >> 4;
SSD1306_Draw_Line(127, 31, 127 - potVoltage, 31, 1);
}
 
void Draw_Step_Text(STEPPER_MICROSTEP step, uint8_t selected) {
uint8_t stringStepping[] = "1/32";
// Draw and/or highlight the stepping in the bottom left corner
uint8_t stringStepping32[] = "1/32";
uint8_t stringStepping16[] = "1/16";
uint8_t stringStepping8[] = "1/8";
uint8_t stringStepping4[] = "1/4";
uint8_t stringStepping2[] = "1/2";
uint8_t stringStepping1[] = "1/1";
if (selected) {
SSD1306_Fill_Rect(0, 16, 52, 16, 1);
SSD1306_Set_Text_Color(0);
244,6 → 212,23
} else {
SSD1306_Set_Text_Color(1);
}
SSD1306_Set_Cursor(2, 17);
SSD1306_Write_String(stringStepping, 4);
if (step == STEP_1_32) {
SSD1306_Set_Cursor(2, 17);
SSD1306_Write_String(stringStepping32, 4);
} else if (step == STEP_1_16) {
SSD1306_Set_Cursor(2, 17);
SSD1306_Write_String(stringStepping16, 4);
} else if (step == STEP_1_8) {
SSD1306_Set_Cursor(8, 17);
SSD1306_Write_String(stringStepping8, 3);
} else if (step == STEP_1_4) {
SSD1306_Set_Cursor(8, 17);
SSD1306_Write_String(stringStepping4, 3);
} else if (step == STEP_1_2) {
SSD1306_Set_Cursor(8, 17);
SSD1306_Write_String(stringStepping2, 3);
} else if (step == STEP_1_1) {
SSD1306_Set_Cursor(8, 17);
SSD1306_Write_String(stringStepping1, 3);
}
}
/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 SPI.c OLED_SSD1306.c
SOURCEFILES_QUOTED_IF_SPACED=main.c INTERRUPTS.c STEPPER.c IOC.c SPI.c OLED_SSD1306.c ADC.c TIMER.c
 
# Object Files Quoted if spaced
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
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 ${OBJECTDIR}/SPI.p1 ${OBJECTDIR}/OLED_SSD1306.p1 ${OBJECTDIR}/ADC.p1 ${OBJECTDIR}/TIMER.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 ${OBJECTDIR}/ADC.p1.d ${OBJECTDIR}/TIMER.p1.d
 
# Object Files
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 ${OBJECTDIR}/SPI.p1 ${OBJECTDIR}/OLED_SSD1306.p1
OBJECTFILES=${OBJECTDIR}/main.p1 ${OBJECTDIR}/INTERRUPTS.p1 ${OBJECTDIR}/STEPPER.p1 ${OBJECTDIR}/IOC.p1 ${OBJECTDIR}/SPI.p1 ${OBJECTDIR}/OLED_SSD1306.p1 ${OBJECTDIR}/ADC.p1 ${OBJECTDIR}/TIMER.p1
 
# Source Files
SOURCEFILES=main.c INTERRUPTS.c STEPPER.c IOC.c SPI.c OLED_SSD1306.c
SOURCEFILES=main.c INTERRUPTS.c STEPPER.c IOC.c SPI.c OLED_SSD1306.c ADC.c TIMER.c
 
 
CFLAGS=
126,6 → 126,22
@-${MV} ${OBJECTDIR}/OLED_SSD1306.d ${OBJECTDIR}/OLED_SSD1306.p1.d
@${FIXDEPS} ${OBJECTDIR}/OLED_SSD1306.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/ADC.p1: ADC.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/ADC.p1.d
@${RM} ${OBJECTDIR}/ADC.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}/ADC.p1 ADC.c
@-${MV} ${OBJECTDIR}/ADC.d ${OBJECTDIR}/ADC.p1.d
@${FIXDEPS} ${OBJECTDIR}/ADC.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/TIMER.p1: TIMER.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/TIMER.p1.d
@${RM} ${OBJECTDIR}/TIMER.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}/TIMER.p1 TIMER.c
@-${MV} ${OBJECTDIR}/TIMER.d ${OBJECTDIR}/TIMER.p1.d
@${FIXDEPS} ${OBJECTDIR}/TIMER.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
else
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
175,6 → 191,22
@-${MV} ${OBJECTDIR}/OLED_SSD1306.d ${OBJECTDIR}/OLED_SSD1306.p1.d
@${FIXDEPS} ${OBJECTDIR}/OLED_SSD1306.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/ADC.p1: ADC.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/ADC.p1.d
@${RM} ${OBJECTDIR}/ADC.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}/ADC.p1 ADC.c
@-${MV} ${OBJECTDIR}/ADC.d ${OBJECTDIR}/ADC.p1.d
@${FIXDEPS} ${OBJECTDIR}/ADC.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/TIMER.p1: TIMER.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}
@${RM} ${OBJECTDIR}/TIMER.p1.d
@${RM} ${OBJECTDIR}/TIMER.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}/TIMER.p1 TIMER.c
@-${MV} ${OBJECTDIR}/TIMER.d ${OBJECTDIR}/TIMER.p1.d
@${FIXDEPS} ${OBJECTDIR}/TIMER.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
endif
 
# ------------------------------------------------------------------------------------
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/Makefile-genesis.properties
1,5 → 1,5
#
#Wed Sep 03 01:49:46 EDT 2014
#Thu Sep 04 00:52:07 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.32
/PIC Stuff/PICX_16F1825_Stepper_Driver/nbproject/configurations.xml
10,6 → 10,8
<itemPath>IOC.h</itemPath>
<itemPath>SPI.h</itemPath>
<itemPath>OLED_SSD1306.h</itemPath>
<itemPath>ADC.h</itemPath>
<itemPath>TIMER.h</itemPath>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
24,6 → 26,8
<itemPath>IOC.c</itemPath>
<itemPath>SPI.c</itemPath>
<itemPath>OLED_SSD1306.c</itemPath>
<itemPath>ADC.c</itemPath>
<itemPath>TIMER.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
41,7 → 45,7
<targetPluginBoard></targetPluginBoard>
<platformTool>PICkit3PlatformTool</platformTool>
<languageToolchain>XC8</languageToolchain>
<languageToolchainVersion></languageToolchainVersion>
<languageToolchainVersion>1.32</languageToolchainVersion>
<platform>3</platform>
</toolsSet>
<compileType>
132,6 → 136,7
<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:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>BUR114189291:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
<languageToolchainDir></languageToolchainDir>
<languageToolchainDir>C:\Program Files (x86)\Microchip\xc8\v1.32\bin</languageToolchainDir>
<mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1>
<placeholder2>place holder 2</placeholder2>