Version:0.9 StartHTML:0000000105 EndHTML:0000219480 StartFragment:0000001499 EndFragment:0000219464
#include "internal_adc.h"
unsigned int test_count;
//control variables
unsigned int POT_delay_time;
unsigned int POT_mod_speed;
unsigned int POT_mod_depth;
unsigned int POT_direction;
unsigned int POT_confusion;
unsigned int direction_pulse_count;
unsigned long POT_temp1;
unsigned long POT_temp2;
unsigned int POT_ring_speed=1024;
unsigned int POT_ring_depth=0;
unsigned int POT_ring_depth_i=511;
signed int ring_table_int;
unsigned int POT_degrade=0;
unsigned int degrade_count=0;
bit BOOL_can_record;
bit BOOL_changed_range;
signed char SENS_ring_sens;
//sbit PIN_ring_sens at RF0_bit; //because reasons, this won't work anymore
signed char PIN_ring_sens; //OMG HACK
sbit PIN_relay_1 at RF1_bit;
sbit PIN_relay_2 at RE2_bit;
sbit PIN_bypass at RE3_bit;
unsigned int bypass_count=0;
unsigned int bypass_state=1;
unsigned int bypass_state_change=1;
sbit PIN_modsw at RE4_bit;
sbit PIN_range_1 at RB14_bit;
sbit PIN_range_2 at RB15_bit;
sbit PIN_range_3 at RF4_bit;
//sbit PIN_range_4 at RF5_bit;
sbit PIN_softsw at RD8_bit;
sbit PIN_hold at RE0_bit;
unsigned int hold_count=0;
unsigned int hold_state=0;
unsigned int hold_state_change=0;
unsigned int hold_enabled=0;
unsigned int fade_state=0;
unsigned int fade_event_count=200;
unsigned long int fade_amount=100;
unsigned int rev_fade_event_count=200;
unsigned long int rev_fade_amount=100;
sbit PIN_bypassled at RD5_bit;
sbit PIN_softled at RD11_bit;
sbit PIN_modled_1 at RE6_bit;
sbit PIN_modled_2 at RE7_bit;
//unsigned char modled_state=0;
//unsigned char modled_state_count=0;
unsigned int BOOL_mod_mode;
//unsigned int BOOL_mod_changed=0;
//sampling variables
unsigned int adc_sample;
signed int adc_value;
signed int dac_value;
//signed int current_sample;
//signed long int audio_sample_long;
//signed int audio_sample;
char MEM_WE=6;
unsigned long MEM_address;
unsigned long MEM_address_dac;
unsigned long MEM_address_range;
//modulation
unsigned char sine_table[256] = {128,131,134,137,140,143,146,149,152,156,159,162,165,168,171,174,176,179,182,185,188,191,193,196,199,201,204,206,209,211,213,216,218,220,222,224,226,228,230,232,234,236,237,239,240,242,243,245,246,247,248,249,250,251,252,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,254,254,253,252,252,251,250,249,248,247,246,245,243,242,240,239,237,236,234,232,230,228,226,224,222,220,218,216,213,211,209,206,204,201,199,196,193,191,188,185,182,179,176,174,171,168,165,162,159,156,152,149,146,143,140,137,134,131,128,124,121,118,115,112,109,106,103,99,96,93,90,87,84,81,79,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,19,18,16,15,13,12,10,9,8,7,6,5,4,3,3,2,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,2,3,3,4,5,6,7,8,9,10,12,13,15,16,18,19,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,79,81,84,87,90,93,96,99,103,106,109,112,115,118,121,124};
unsigned char sine_table_count;
unsigned char sine_table_count2;
unsigned int sine_table_int;
unsigned char sine_table_current;
unsigned long int sine_table_long;
unsigned int modulation=0;
signed long int dac_value_long;
signed long int dac_value_long_dry;
signed long int adc_value_long;
//output pins
sbit Chip_Select_DAC at LATD10_bit;
sbit Chip_Select_ADC at LATE5_bit;
sbit RAM1_CS at LATD4_bit;
//misc
char buffer;
//sbit LED at LATG9_bit;
//sbit LED2 at LATE7_bit;
//signed int temp_headroom_high;
char ADC_turn=0;
unsigned int temp_count=0;
unsigned long temp_long;
//unsigned long temp_long_count=0;
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//sample audio from external ADC
void ADC_Input() {
DisableInterrupts();
Chip_Select_ADC = 1;
//delay_us(1); //needed?
Chip_Select_ADC = 0;
delay_us(2); //needed?
adc_sample = SPI2BUF; //actual read
SPI2BUF = adc_sample; //refresh
adc_sample.F15 = 0;
adc_sample.F14 = 0;
adc_sample.F13 = 0;
adc_value = adc_sample - 4096; //0 bias /4075
adc_value = adc_value << 3;
//if (adc_value > 32000) {LED = 1;}
//if (adc_value < -32000) {LED2 = 1;}
EnableInterrupts();
}
//output audio to external DAC
void DAC_Output(unsigned int valueDAC) {
DisableInterrupts();
Chip_Select_DAC = 0;
SPI3_Write(valueDAC);
Chip_Select_DAC = 1;
EnableInterrupts();
}
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//write to mem
//262,144 possible samples
void MEM_Write(unsigned long MEM_address, signed int MEM_sample) {
unsigned int MEM_cmd_add_1, MEM_cmd_add_2;
MEM_address <<= 1; //double address for int sample length
MEM_cmd_add_1 = MEM_address >> 16; //isolate address lsb
MEM_cmd_add_1.F8 = 0; //sequential write command
MEM_cmd_add_1.F9 = 1;
MEM_cmd_add_2 = MEM_address; //address middle and msb
DisableInterrupts();
RAM1_CS = 0;
SPI3_Write(MEM_cmd_add_1);
SPI3_Write(MEM_cmd_add_2);
SPI3_Write(MEM_sample);
RAM1_CS = 1;
EnableInterrupts();
}
//read mem
unsigned int MEM_Read(unsigned long MEM_address) {
unsigned int MEM_cmd_add_1, MEM_cmd_add_2;
signed int MEM_value;
MEM_address <<= 1; //double address for int sample length
MEM_cmd_add_1 = MEM_address >> 16; //isolate address lsb
MEM_cmd_add_1.F8 = 1; //sequential read command
MEM_cmd_add_1.F9 = 1;
MEM_cmd_add_2 = MEM_address; //address middle and msb
DisableInterrupts();
RAM1_CS = 0;
SPI3_Write(MEM_cmd_add_1);
SPI3_Write(MEM_cmd_add_2);
MEM_value = SPI3_Read(buffer);
MEM_value <<= 1;
RAM1_CS = 1;
EnableInterrupts();
return MEM_value;
}
//clear memory
void MEM_Clear(unsigned long MEM_address) {
unsigned int MEM_cmd_add_1, MEM_cmd_add_2;
unsigned long MEM_address_count;
MEM_address_count = 0;
MEM_cmd_add_1 = 0;
MEM_cmd_add_1.F9 = 1; //sequential write command
MEM_cmd_add_2 = 0;
DisableInterrupts();
RAM1_CS = 0;
SPI3_Write(MEM_cmd_add_1);
SPI3_Write(MEM_cmd_add_2);
while (MEM_address_count < MEM_address) {
SPI3_Write(0);
MEM_address_count++;
}
RAM1_CS = 1;
EnableInterrupts();
}
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
void Sampling_loop() iv IVT_TIMER_1 ilevel 7 ics ICS_SRS {
DisableInterrupts();
T1IF_bit = 0; // reset timer
//bidirectional address counter
if (SENS_ring_sens == 1) { //if sens is forward
if (MEM_address >= MEM_address_range) {
MEM_address = 0;
} else {
MEM_address = MEM_address + SENS_ring_sens;
}
MEM_address_dac = MEM_address + SENS_ring_sens;
if (MEM_address_dac > MEM_address_range) {
MEM_address_dac = 0;
}
} else { //if sens is backward
if (MEM_address == 1) {
MEM_address = MEM_address_range;
} else {
MEM_address = MEM_address + SENS_ring_sens;
}
MEM_address_dac = MEM_address + SENS_ring_sens;
if (MEM_address_dac == 0) {
MEM_address_dac = MEM_address_range;
}
}
//sampling
ADC_Input();
//moving into hold mode
if (fade_state == 1) {
if (fade_event_count > 100) { //fade out event
adc_value_long = adc_value;
adc_value_long = adc_value_long * fade_amount;
adc_value_long = adc_value_long / 100;
adc_value = adc_value_long;
MEM_Write(MEM_address, adc_value);
fade_amount--;
} else if (fade_event_count == 100) { //hold point event
adc_value = 0;
MEM_Write(MEM_address, adc_value);
} else if (fade_event_count < 100 && fade_event_count > 0) { //fade in event
adc_value = MEM_Read(MEM_address);
adc_value_long = adc_value;
adc_value_long = adc_value_long * fade_amount;
adc_value_long = adc_value_long / 100;
adc_value = adc_value_long;
MEM_Write(MEM_address, adc_value);
fade_amount++;
} else if (fade_event_count == 0) { //end event
fade_state = 0;
fade_amount = 100;
fade_event_count = 200;
hold_enabled = 1;
}
fade_event_count--;
}
//moving out of hold mode
if (fade_state == 2) {
if (fade_event_count > 100) { //fade out event
adc_value_long = dac_value;
adc_value_long = adc_value_long * fade_amount;
adc_value_long = adc_value_long / 100;
dac_value = adc_value_long;
MEM_Write(MEM_address, dac_value);
fade_amount--;
} else if (fade_event_count == 100) { //hold point event
dac_value = 0;
MEM_Write(MEM_address, dac_value);
} else if (fade_event_count < 100 && fade_event_count > 0) { //fade in event
adc_value_long = adc_value;
adc_value_long = adc_value_long * fade_amount;
adc_value_long = adc_value_long / 100;
adc_value = adc_value_long;
MEM_Write(MEM_address, adc_value);
fade_amount++;
} else if (fade_event_count == 0) { //end event
fade_state = 0;
fade_amount = 100;
fade_event_count = 200;
hold_enabled = 0;
}
fade_event_count--;
}
//if not in hold mode, write to memory
if (hold_enabled == 0) {
MEM_Write(MEM_address, adc_value);
}
//memory read / degrade
if (degrade_count >= POT_degrade) {
dac_value = MEM_Read(MEM_address_dac);
degrade_count = 0;
} else {
degrade_count = degrade_count + 1;
}
//variable prep
ring_table_int = sine_table_current - 128; //turn unsigned osc value into signed
dac_value_long = dac_value; //move audio to 32bit integer for ring modulation
dac_value_long_dry = dac_value; //move audio to another 32bit integer for blend
//ring modulation
dac_value_long = dac_value_long * ring_table_int; //multiply audio by osc value (-128 to 128)
dac_value_long = dac_value_long / 256; //divide result by 256
//blending
dac_value_long_dry = ((dac_value_long_dry * POT_ring_depth_i) / 1023); //digitally crossfade dry with wet
dac_value_long = ((dac_value_long * POT_ring_depth) / 511); //511
dac_value_long = dac_value_long + dac_value_long_dry;
//dac_value = dac_value_long << 1; //????? must have been drunk
dac_value = dac_value_long;
//confusion/direction fade events
if (fade_state == 3) {
if (rev_fade_event_count > 100) { //fade out event
adc_value_long = dac_value;
adc_value_long = adc_value_long * rev_fade_amount;
adc_value_long = adc_value_long / 100;
dac_value = adc_value_long;
rev_fade_amount--;
} else if (rev_fade_event_count == 100) { //mid point event
dac_value = 0;
if (PIN_ring_sens == 1) {
if (SENS_ring_sens == -1) {
MEM_address = MEM_address + 1;
}
SENS_ring_sens = 1;
} else {
if (SENS_ring_sens == 1) {
MEM_address = MEM_address - 1;
}
SENS_ring_sens = -1;
}
} else if (rev_fade_event_count < 100 && rev_fade_event_count > 0) { //fade in event
adc_value_long = dac_value;
adc_value_long = adc_value_long * rev_fade_amount;
adc_value_long = adc_value_long / 100;
dac_value = adc_value_long;
rev_fade_amount++;
} else if (rev_fade_event_count == 0) { //end event
fade_state = 0;
rev_fade_amount = 100;
rev_fade_event_count = 200;
}
rev_fade_event_count--;
}
//playback
DAC_Output(dac_value);
//need audio-rate timer control/modulation for some inane reason
PR1 = POT_delay_time + modulation;
EnableInterrupts();
}
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//low speed timer - 2ms
void UI_Functions() iv IVT_TIMER_2 ilevel 7 ics ICS_SRS {
DisableInterrupts();
T2IF_bit = 0; // reset timer
if (PIN_ring_sens == 1) {
if (SENS_ring_sens == -1 && fade_state == 0) {
fade_state = 3;
}
} else {
if (SENS_ring_sens == 1 && fade_state == 0) {
fade_state = 3;
}
}
//####################################################################################################################################################################
//ridiculous ADC turn thing to compensate for ADC slowness
if (ADC_turn == 0) {
InitADC(2);
} else if (ADC_turn == 1) {
temp_long = GetADC(void);
temp_long = temp_long * 326;
temp_long = temp_long / 100;
POT_delay_time = temp_long + 1110;
} else if (ADC_turn == 2) {
InitADC(3);
} else if (ADC_turn == 3) {
POT_degrade = GetADC(void);
POT_degrade = POT_degrade >> 4;
} else if (ADC_turn == 4) {
InitADC(4);
} else if (ADC_turn == 5) {
if (BOOL_mod_mode == 0) {
POT_mod_speed = GetADC(void);
POT_mod_speed = POT_mod_speed << 1;
PR3 = POT_mod_speed + 256;
} else {
POT_ring_speed = GetADC(void);
POT_ring_speed = POT_ring_speed + 60;
PR5 = POT_ring_speed << 2;
}
} else if (ADC_turn == 6) {
InitADC(5);
} else if (ADC_turn == 7) {
if (BOOL_mod_mode == 0) { //if modulation mode
POT_mod_depth = GetADC(void);
POT_mod_depth = POT_mod_depth >> 2;
POT_ring_depth = 0;
POT_ring_depth_i = 1023;
} else { //if ringmod mode
POT_ring_depth = GetADC(void);
POT_ring_depth_i = 1023 - POT_ring_depth;
POT_ring_depth >> 3;
POT_ring_depth_i >> 3;
POT_mod_depth = 0;
}
} else if (ADC_turn == 8) {
InitADC(0);
} else if (ADC_turn == 9) {
POT_direction = GetADC(void);
POT_direction = POT_direction - 32;
if (POT_direction > 60000) {POT_direction = 0;}
if (POT_direction > 960) {POT_direction = 960;}
} else if (ADC_turn == 10) {
InitADC(1);
} else if (ADC_turn == 11) {
POT_confusion = GetADC(void);
POT_confusion = POT_confusion * 19;
POT_confusion = POT_confusion + 1200;
}
//ADC turn thing continued
if (ADC_turn == 12) {
ADC_turn = 0;
} else {
ADC_turn++;
}
//####################################################################################################################################################################
/*
//range switching
if (PIN_range_1 == 1) {
if (MEM_address_range != 3924) {
MEM_address_range = 3924;
BOOL_changed_range = 1;
}
} else if (PIN_range_2 == 1) {
if (MEM_address_range != 15750) {
MEM_address_range = 15750;
BOOL_changed_range = 1;
}
} else if (PIN_range_3 == 1) {
if (MEM_address_range != 63000) {
MEM_address_range = 63000;
BOOL_changed_range = 1;
}
} else if (PIN_range_4 == 1) {
if (MEM_address_range != 252000) {
MEM_address_range = 252000;
BOOL_changed_range = 1;
}
}
*/
//range switching
if (PIN_range_1 == 1) {
if (MEM_address_range != 3924) {
MEM_address_range = 3924;
BOOL_changed_range = 1;
}
}
if (PIN_range_2 == 1) {
if (MEM_address_range != 15750) {
MEM_address_range = 15750;
BOOL_changed_range = 1;
}
}
if (PIN_range_3 == 1) {
if (MEM_address_range != 63000) {
MEM_address_range = 63000;
BOOL_changed_range = 1;
}
}
if (PIN_range_1 == 0 && PIN_range_2 == 0 && PIN_range_3 == 0) {
if (MEM_address_range != 252000) {
MEM_address_range = 252000;
BOOL_changed_range = 1;
}
}
if (BOOL_changed_range == 1) {
MEM_Clear(MEM_address_range);
BOOL_changed_range = 0;
}
//####################################################################################################################################################################
//bypass debounce
if (PIN_bypass == 1) { //check if button pressed
if (bypass_count == 16) {
if (bypass_state == 0) { //toggle bypass
bypass_state = 1;
} else {
bypass_state = 0;
}
bypass_state_change = 1;
}
bypass_count++;
} else {
bypass_count = 0; //reset if button depressed
}
//bypass toggle
if (bypass_state_change == 1) {
if (bypass_state == 1) {
PIN_bypassled = 1;
PIN_relay_1 = 1;
PIN_relay_2 = 0;
delay_ms(20);
PIN_relay_1 = 0;
PIN_relay_2 = 0;
} else {
PIN_bypassled = 0;
PIN_relay_1 = 0;
PIN_relay_2 = 1;
delay_ms(20);
PIN_relay_1 = 0;
PIN_relay_2 = 0;
}
bypass_state_change = 0;
}
//####################################################################################################################################################################
//soft debounce
if (PIN_hold == 1) { //check if button pressed
if (hold_count == 16) {
if (hold_state == 0) { //toggle bypass
hold_state = 1;
} else {
hold_state = 0;
}
hold_state_change = 1;
}
hold_count++;
} else {
hold_count = 0; //reset if button depressed
}
//hold toggle
if (hold_state_change == 1) {
if (hold_state == 1) {
PIN_softled = 1;
//hold_enabled = 1;
fade_state = 1;
} else {
PIN_softled = 0;
//hold_enabled = 0;
fade_state = 2;
}
hold_state_change = 0;
}
//####################################################################################################################################################################
if (PIN_modsw == 0) {
BOOL_mod_mode = 0;
PIN_modled_1 = 1;
PIN_modled_2 = 0;
} else {
BOOL_mod_mode = 1;
PIN_modled_1 = 0;
PIN_modled_2 = 1;
}
/*
//temp
if (PIN_softsw == 1) {
PIN_modled_1 = 1;
PIN_modled_2 = 0;
} else {
PIN_modled_1 = 0;
PIN_modled_2 = 1;
}
*/
//####################################################################################################################################################################
//reset watchdog timer
//WDTCLR_bit = 1;
EnableInterrupts();
}
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//modulation
void modulation_timer() iv IVT_TIMER_3 ilevel 7 ics ICS_SRS {
DisableInterrupts();
T3IF_bit = 0;
sine_table_long = sine_table[sine_table_count];
sine_table_count = sine_table_count + 1;
sine_table_long = sine_table_long * POT_mod_depth;
sine_table_long = sine_table_long / 256;
modulation = sine_table_long;
EnableInterrupts();
}
void carrier_timer() iv IVT_TIMER_5 ilevel 7 ics ICS_SRS {
DisableInterrupts();
T5IF_bit = 0;
sine_table_current = sine_table[sine_table_count2];
sine_table_count2 = sine_table_count2 + 4;
EnableInterrupts();
}
//direction pulse timer
void direction_pulse_timer() iv IVT_TIMER_4 ilevel 7 ics ICS_SRS {
T4IF_bit = 0;
DisableInterrupts();
if (direction_pulse_count < POT_direction) {
//PIN_bypassled = 1;
PIN_ring_sens = 1;
} else {
//PIN_bypassled = 0;
PIN_ring_sens = 0;
}
if (direction_pulse_count == 959) {
direction_pulse_count = 0;
} else {
direction_pulse_count++;
}
PR4 = POT_confusion;
EnableInterrupts();
}
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
void main() {
//UART3_Init(57600);
SPI2_Init_Advanced(_SPI_MASTER, _SPI_16_BIT, 32, _SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH, _SPI_ACTIVE_2_IDLE);
SPI3_Init_Advanced(_SPI_MASTER, _SPI_16_BIT, 2, _SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH, _SPI_ACTIVE_2_IDLE);
DDPCONbits.JTAGEN = 0;
//analog pins
AD1PCFG = 0xFCCF; //11111100 11001111;
TRISB3_bit = 1; //pot ADC as input
TRISB5_bit = 1; //pot ADC as input
TRISD10_bit = 0; //DAC CS as output
TRISE5_bit = 0; //ADC CS as output
//TRISG9_bit = 0; //LED
//TRISE7_bit = 0; //LED
TRISD4_bit = 0; //RAM CS as output
TRISG6_bit = 0;
//mod led
TRISE6_bit = 0;
TRISE7_bit = 0;
//PIN_modled_1 = 0;
//PIN_modled_2 = 0;
//bypass led
TRISD5_bit = 0;
PIN_bypassled = 0;
//soft led
TRISD11_bit = 0;
PIN_softled = 0;
//relay
TRISE2_bit = 0;
TRISF1_bit = 0;
Chip_Select_DAC = 1;
Chip_Select_ADC = 1;
RAM1_CS = 1;
//default bypassed
PIN_relay_1 = 1;
PIN_relay_2 = 0;
delay_ms(20);
PIN_relay_1 = 0;
PIN_relay_2 = 0;
/*
//sampling timer
ON__T1CON_bit = 0; // disable Timer1
TMR1 = 0; // reset timer value to zero
//PR1 = 1110; // 13.9us 72khz
PR1 = 4440;
T1IP0_bit = 1; // set interrupt
T1IP1_bit = 1; // priority
T1IP2_bit = 1; // to 7
TCKPS0_bit = 0; // Set Timer Input Clock
TCKPS1_bit = 0; // Prescale value to 1:1
T1IE_bit = 1; // Enable Timer1 Interrupt
ON__T1CON_bit = 1; // Enable Timer1
*/
T1CON = 0x8000;
T1IE_bit = 1;
T1IF_bit = 0;
T1IP0_bit = 1;
T1IP1_bit = 1;
T1IP2_bit = 1;
PR1 = 4440;
TMR1 = 0;
//low speed timer
T2CON = 0x8010;
T2IE_bit = 1;
T2IF_bit = 0;
T2IP0_bit = 1;
T2IP1_bit = 1;
T2IP2_bit = 1;
PR2 = 40000;
TMR2 = 0;
//modulation timer
T3CON = 0x8070;
T3IE_bit = 1;
T3IF_bit = 0;
T3IP0_bit = 1;
T3IP1_bit = 1;
T3IP2_bit = 1;
PR3 = 62500; //62500
TMR3 = 0;
//direction pulse timer
T4CON = 0x8000;
T4IE_bit = 1;
T4IF_bit = 0;
T4IP0_bit = 1;
T4IP1_bit = 1;
T4IP2_bit = 1;
PR4 = 1200; //1200-20800
TMR4 = 0;
//sine ringmod timer
T5CON = 0x8000;
T5IE_bit = 1;
T5IF_bit = 0;
T5IP0_bit = 1;
T5IP1_bit = 1;
T5IP2_bit = 1;
PR5 = 1000;
TMR5 = 0;
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//defaults and setup
delay_ms(10);
//RAM write-enable
RAM1_CS = 0;
SPI3_Write(MEM_WE << 8);
RAM1_CS = 1;
//control variables
POT_delay_time = 1024;
POT_mod_speed = 1024;
POT_mod_depth = 0;
//POT_ring_speed = 1024;
//POT_ring_depth = 0;
if (PIN_modsw == 0) {
BOOL_mod_mode = 0;
PIN_modled_1 = 1;
PIN_modled_2 = 0;
} else {
BOOL_mod_mode = 1;
PIN_modled_1 = 0;
PIN_modled_2 = 1;
}
MEM_address_range = 252000;
MEM_address = 1;
//MEM_address_offset = 0;
BOOL_changed_range = 0;
BOOL_can_record = 1; //rec enabled
SENS_ring_sens = 1; //forward
PIN_ring_sens = 1;
EnableInterrupts(); // Enable all interrupts
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
//####################################################################################################################################################################
/*
while (1) {
//do nothing
PIN_bypassled = ~PIN_bypassled;
PIN_softled = ~PIN_softled;
//LED = ~LED;
delay_ms(500);
}
*/
}