Saving this from being erased:
Main Blinky . c
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11001000; //Set GP0, GP1, GP2, GP4, GP5 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void vdelay(int n)
{
int i;
for (i=0;i<n;i++)
{
__delay_ms(1);
}
}
void blink00()
// Blink 4 short pulses v
{
GPIO = 0b00000000;
vdelay(2000);
GPIO = 0b00000001;
vdelay(50);
GPIO = 0b00000000;
vdelay(2000);
GPIO = 0b00000010;
vdelay(50);
GPIO = 0b00000000;
vdelay(2000);
GPIO = 0b00000100;
vdelay(50);
GPIO = 0b00000000;
vdelay(2000);
GPIO = 0b00010000;
vdelay(50);
}
void blink01()
// Cycle through the lights from 0 to 3 v
{
int i,s,n;
s = ((rand() & 3)+1)*64;
n = 512/(s+1);
for (i=0;i<n;i++)
{
GPIO = 0b00000001;
vdelay(s);
GPIO = 0b00000010;
vdelay(s);
GPIO = 0b00000100;
vdelay(s);
GPIO = 0b00010000;
vdelay(s);
}
GPIO = 0b00000000;
vdelay(s);
}
void blink02()
// Blink light 0-3 from slow to fast v
{
int i,j,k,n;
k = 1;
for (j=0;j<4;j++)
{
for (i=0;i<10;i++)
{
GPIO = 0b00000000;
vdelay(200/(i+1));
GPIO = k;
vdelay(356/(i+1));
}
k=k<<1;
if (k==8) k=k<<1;
}
}
void blink03()
// Binary counter 0-32 (note pin 3 is input only) v
{
int i,j,k,n;
GPIO = 0b00000000;
vdelay(100);
for (i=0;i<10;i++)
{
for (j=0;j<32;j++)
{
k = j<8?j:j<<2;
GPIO = j;
vdelay(300/((i+1)*2));
}
}
GPIO = 0b00000000;
vdelay(100);
}
void blink04()
// Turn on lights 0-3 sequentially then faster v
{
int i,j,n,k;
GPIO = 0b00000000;
vdelay(100);
for (i=0;i<50;i++)
{
k=1;
for (j=0;j<4;j++)
{
GPIO = k;
vdelay(500/(i+1));
k=k<<1;
if (k==8) k=k<<1;
}
}
GPIO = 0b00000000;
vdelay(100);
}
void blink05()
// Chaser lights from 0 to 3 then 3 to 0 v
{
int i,s,n;
s = ((rand() & 3)+1)<<5;
n = 1024/(s+1);
for (i=0;i<n;i++)
{
GPIO = 0b00000001;
vdelay(s);
GPIO = 0b00000010;
vdelay(s);
GPIO = 0b00000100;
vdelay(s);
GPIO = 0b00010000;
vdelay(s);
GPIO = 0b00000100;
vdelay(s);
GPIO = 0b00000010;
vdelay(s);
}
GPIO = 0b00000000;
vdelay(s);
}
void blink06()
// Random lights constant time
{
int i,s,n,r;
s = ((rand() & 7)+1)<<6;
n = 1024/(s+1)*2;
for (i=0;i<n;i++)
{
r = rand() & 7;
switch (r)
{
case 1:
GPIO = 0b00000001;
vdelay(s);
break;
case 2:
GPIO = 0b00000010;
vdelay(s);
break;
case 3:
GPIO = 0b00000100;
vdelay(s);
break;
case 4:
GPIO = 0b00010000;
vdelay(s);
break;
case 5:
GPIO = 0b00010001;
vdelay(s);
break;
case 6:
GPIO = 0b00000110;
vdelay(s);
break;
default:
GPIO = 0b00010111;
vdelay(s);
}
}
GPIO = 0b00000000;
vdelay(s);
}
void blink07()
// Smooth panning lights
{
int i,s,n,j,k,m,p;
uint8_t sGPIO;
uint8_t aGPIO[7]={0b00000001,0b00000010,0b00000100,0b00010000,0b00000100,0b00000010,0b00000001};
s = ((rand() & 7)+1)<<3;
n = 1023/(s+1);
sGPIO = 0b00000000;
for (p=0;p<2;p++)
{
for (m=0;m<6;m++)
{
for (j=0;j<n;j++)
{
k = n-j;
for (i=0;i<n;i++)
{
if (i<k)
{
sGPIO = aGPIO[m] | sGPIO;
GPIO = sGPIO;
__delay_us(1);
}
if (i>k)
{
sGPIO = !aGPIO[m] & sGPIO;
GPIO = sGPIO;
__delay_us(1);
}
if (i<j)
{
sGPIO = aGPIO[m+1] | sGPIO;
GPIO = sGPIO;
__delay_us(1);
}
if (i>j)
{
sGPIO = !aGPIO[m+1] & sGPIO;
GPIO = sGPIO;
__delay_us(1);
}
}
}
}
}
}
void main()
{
uint8_t db_cnt;
int i, r;
init();
GPIO = 0b00000000;
while(1)
{
r = rand() & 0b00000111;
switch (r)
{
case 1:
blink01();
break;
case 2:
blink02();
break;
case 3:
blink03();
break;
case 4:
blink04();
break;
case 5:
blink05();
break;
case 6:
blink06();
break;
case 7:
blink07();
break;
default:
blink00();
}
}
}
LFO
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11001000; //Set GP0, GP1, GP3, GP4, GP5 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void vdelay(int n)
{
int i;
for (i=0;i<n;i++)
{
__delay_us(1);
}
}
void lfo_saw(int frq)
// Blink 4 short pulses v
{
int i, j, k;
uint8_t sGPIO = 0b00000000;
for (k=0;k<4;k++)
{
for (j=0;j<255;j=j+frq+1)
{
for (i=0;i<255;i++)
{
if (i<j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000001;
sGPIO = sGPIO & 0b11111101;
GPIO = sGPIO;
//__delay_us(1);
}
if (i>j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000010;
sGPIO = sGPIO & 0b11111110;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000100;
sGPIO = sGPIO & 0b11101111;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00010000;
sGPIO = sGPIO & 0b11111011;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<31)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00100000;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>31)
{
sGPIO = GPIO;
sGPIO = sGPIO & 0b11011111;
GPIO = sGPIO;
//__delay_us(1);
}
}
}
}
}
void main()
{
uint8_t db_cnt;
int i, r;
init();
GPIO = 0b00000000;
while(1)
{
r = rand() & 0b00001111;
//r = 1;
switch (r)
{
case 1:
lfo_saw(r);
break;
default:
lfo_saw(r);
}
}
}
//Motor Controller
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
//ANSEL = 0b00000001; //Configure GPIO pins as digital GP0 set to analog
ANSEL = 0b01111000; //Configure GPIO pins as digital, GP4 Analog
TRISIO = 0b11011000; //Set GP1,GP2,GP4,GP5 as outputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0b10001101; //AD Set up
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
OPTION_REGbits.nGPPU = 0;
WPU = 1<<1; //Enable weak pullups on GP1
//Configuer AD Convertor
//ADCON0 = 0x00; //AD disabled
//ADRESH = 0x00; //Init the AD Register
//Configuer AD Convertor
}
int read_v()
// Read voltage from input 0
{
int val;
ADCON0bits.GO=1;
while(ADCON0bits.nDONE);
val = (ADRESH<<2)+(ADRESL>>6);
return val;
}
void vdelay(int n)
{
int i;
for (i=0;i<n;i++)
{
__delay_us(100);
}
}
void pwgen(int pw)
// Send pulse width
{
int i, n=4;
if (pw>56)
{
pw = 255;
n=1;
}
if (pw<16)
{
n = 10;
}
for (i=0;i<255;i++)
{
if (i<pw)
{
GPIO = 0b00000010;
vdelay(n);
}
if (i>pw)
{
GPIO = 0b00000000;
vdelay(n);
}
}
}
void main()
{
uint8_t db_cnt;
int v;
init();
GPIO = 0b00000000;
while(1)
{
v = read_v();
pwgen(v<<2);
}
}
PWMC
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11101100; //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
//INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt, sPIR1,i,sCCP1CON; // ADC_result2;
init();
TRISIO = 0b11101100; //Disable IO2
PR2 = 0x00;
CCP1CON = 0b00111100;
CCPR1L = 1; // 1,4,16
sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
PIR1 = sPIR1;
T2CON = 0b00000101;
while(1)
{
for (i=0;i<4;i++)
{
if (PIR1bits.TMR2IF == 1)
{
TRISIO = 0b11101000;
//sCCP1CON = CCP1CON;
// CCP1CON = (sCCP1CON & 0b11001111) | (i<<4);
//CCP1CON = 0b11001111;
PR2 = i;
}
__delay_us(800000);
}
}
}
STOP LIGHTS
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdbool.h> /* For true/false definition */
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCCLK
#define _XTAL_FREQ 4000000
uint8_t sGPIO;
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11111000; //Set GP0, GP1, GP3 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt;
init();
GPIO = 0b00100000;
sGPIO= 0b00100000;
while(1)
{
GPIO = 0b00100000;
for (db_cnt = 0; db_cnt <= 5; db_cnt++)
{
GPIO = 0b00100001;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(40);
GPIO = 0b00100000;
}
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(10);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
GPIO = 0b00100001;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(1);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
}
}
Wednesday, July 9, 2014
Wednesday, June 4, 2014
Motor Controller Fix
//Motor Controller
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
//ANSEL = 0b00000001; //Configure GPIO pins as digital GP0 set to analog
ANSEL = 0b01111000; //Configure GPIO pins as digital, GP4 Analog
TRISIO = 0b11011000; //Set GP1,GP2,GP4,GP5 as outputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0b10001101; //AD Set up
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
OPTION_REGbits.nGPPU = 0;
WPU = 1<<1; //Enable weak pullups on GP1
//Configuer AD Convertor
//ADCON0 = 0x00; //AD disabled
//ADRESH = 0x00; //Init the AD Register
//Configuer AD Convertor
}
int read_v()
// Read voltage from input 0
{
int val;
ADCON0bits.GO=1;
while(ADCON0bits.nDONE);
val = (ADRESH<<2)+(ADRESL>>6);
return val;
}
void pwgen(int pw)
// Send pulse width
{
int i;
uint8_t sGPIO = 0b00000001;
for (i=0;i<255;i++)
{
if (i<pw)
{
GPIO = 0b00000010;
__delay_us(400);
}
if (i>pw)
{
GPIO = 0b00000000;
__delay_us(400);
}
}
}
void main()
{
uint8_t db_cnt;
int v;
init();
GPIO = 0b00000010;
while(1)
{
v = read_v();
pwgen(v<<2);
}
}
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
//ANSEL = 0b00000001; //Configure GPIO pins as digital GP0 set to analog
ANSEL = 0b01111000; //Configure GPIO pins as digital, GP4 Analog
TRISIO = 0b11011000; //Set GP1,GP2,GP4,GP5 as outputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0b10001101; //AD Set up
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
OPTION_REGbits.nGPPU = 0;
WPU = 1<<1; //Enable weak pullups on GP1
//Configuer AD Convertor
//ADCON0 = 0x00; //AD disabled
//ADRESH = 0x00; //Init the AD Register
//Configuer AD Convertor
}
int read_v()
// Read voltage from input 0
{
int val;
ADCON0bits.GO=1;
while(ADCON0bits.nDONE);
val = (ADRESH<<2)+(ADRESL>>6);
return val;
}
void pwgen(int pw)
// Send pulse width
{
int i;
uint8_t sGPIO = 0b00000001;
for (i=0;i<255;i++)
{
if (i<pw)
{
GPIO = 0b00000010;
__delay_us(400);
}
if (i>pw)
{
GPIO = 0b00000000;
__delay_us(400);
}
}
}
void main()
{
uint8_t db_cnt;
int v;
init();
GPIO = 0b00000010;
while(1)
{
v = read_v();
pwgen(v<<2);
}
}
Wednesday, May 28, 2014
Code
I'm just using this to store some PIC code so I can access it later.
// LFO (Note this does not work well as an LFO)
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11001000; //Set GP0, GP1, GP3, GP4, GP5 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void vdelay(int n)
{
int i;
for (i=0;i<n;i++)
{
__delay_us(1);
}
}
void lfo_saw(int frq)
// Blink 4 short pulses v
{
int i, j, k;
uint8_t sGPIO = 0b00000000;
for (k=0;k<4;k++)
{
for (j=0;j<255;j=j+frq+1)
{
for (i=0;i<255;i++)
{
if (i<j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000001;
sGPIO = sGPIO & 0b11111101;
GPIO = sGPIO;
//__delay_us(1);
}
if (i>j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000010;
sGPIO = sGPIO & 0b11111110;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000100;
sGPIO = sGPIO & 0b11101111;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00010000;
sGPIO = sGPIO & 0b11111011;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<31)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00100000;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>31)
{
sGPIO = GPIO;
sGPIO = sGPIO & 0b11011111;
GPIO = sGPIO;
//__delay_us(1);
}
}
}
}
}
void main()
{
uint8_t db_cnt;
int i, r;
init();
GPIO = 0b00000000;
while(1)
{
r = rand() & 0b00001111;
//r = 1;
switch (r)
{
case 1:
lfo_saw(r);
break;
default:
lfo_saw(r);
}
}
}
//Motor Controller
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000001; //Configure GPIO pins as digital GP0 set to analog
TRISIO = 0b11001001; //Set GP1,GP2,GP4,GP5 as outputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0b10110001; //AD Set up
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
int read_v()
// Read voltage from input 0
{
int val;
ADCON0bits.GO=1;
while(ADCON0bits.nDONE);
val = (ADRESH<<2)+(ADRESL>>6);
return val;
}
void pwgen(int pw)
// Send pulse width
{
int i;
uint8_t sGPIO = 0b00000001;
for (i=0;i<255;i++)
{
if (i<pw)
{
GPIO = 0b00000010;
__delay_us(200);
}
if (i>pw)
{
GPIO = 0b00000000;
__delay_us(200);
}
}
}
void main()
{
uint8_t db_cnt;
int v;
init();
GPIO = 0b00000010;
while(1)
{
v = read_v();
pwgen(v<<2);
}
}
//PWM
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11101100; //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
//INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt, sPIR1,i,sCCP1CON; // ADC_result2;
init();
TRISIO = 0b11101100; //Disable IO2
PR2 = 0x00;
CCP1CON = 0b00111100;
CCPR1L = 1; // 1,4,16
sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
PIR1 = sPIR1;
T2CON = 0b00000101;
while(1)
{
for (i=0;i<4;i++)
{
if (PIR1bits.TMR2IF == 1)
{
TRISIO = 0b11101000;
//sCCP1CON = CCP1CON;
// CCP1CON = (sCCP1CON & 0b11001111) | (i<<4);
//CCP1CON = 0b11001111;
PR2 = i;
}
__delay_us(800000);
}
}
}
//Stop lights
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdbool.h> /* For true/false definition */
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCCLK
#define _XTAL_FREQ 4000000
uint8_t sGPIO;
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11111000; //Set GP0, GP1, GP3 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt;
init();
GPIO = 0b00100000;
sGPIO= 0b00100000;
while(1)
{
GPIO = 0b00100000;
for (db_cnt = 0; db_cnt <= 5; db_cnt++)
{
GPIO = 0b00100001;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(40);
GPIO = 0b00100000;
}
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(10);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
GPIO = 0b00100001;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(1);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
}
}
// LFO (Note this does not work well as an LFO)
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11001000; //Set GP0, GP1, GP3, GP4, GP5 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void vdelay(int n)
{
int i;
for (i=0;i<n;i++)
{
__delay_us(1);
}
}
void lfo_saw(int frq)
// Blink 4 short pulses v
{
int i, j, k;
uint8_t sGPIO = 0b00000000;
for (k=0;k<4;k++)
{
for (j=0;j<255;j=j+frq+1)
{
for (i=0;i<255;i++)
{
if (i<j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000001;
sGPIO = sGPIO & 0b11111101;
GPIO = sGPIO;
//__delay_us(1);
}
if (i>j)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000010;
sGPIO = sGPIO & 0b11111110;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00000100;
sGPIO = sGPIO & 0b11101111;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>127)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00010000;
sGPIO = sGPIO & 0b11111011;
GPIO = sGPIO;
//__delay_us(1);
}
if (j<31)
{
sGPIO = GPIO;
sGPIO = sGPIO | 0b00100000;
GPIO = sGPIO;
//__delay_us(1);
}
if (j>31)
{
sGPIO = GPIO;
sGPIO = sGPIO & 0b11011111;
GPIO = sGPIO;
//__delay_us(1);
}
}
}
}
}
void main()
{
uint8_t db_cnt;
int i, r;
init();
GPIO = 0b00000000;
while(1)
{
r = rand() & 0b00001111;
//r = 1;
switch (r)
{
case 1:
lfo_saw(r);
break;
default:
lfo_saw(r);
}
}
}
//Motor Controller
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000001; //Configure GPIO pins as digital GP0 set to analog
TRISIO = 0b11001001; //Set GP1,GP2,GP4,GP5 as outputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0b10110001; //AD Set up
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
int read_v()
// Read voltage from input 0
{
int val;
ADCON0bits.GO=1;
while(ADCON0bits.nDONE);
val = (ADRESH<<2)+(ADRESL>>6);
return val;
}
void pwgen(int pw)
// Send pulse width
{
int i;
uint8_t sGPIO = 0b00000001;
for (i=0;i<255;i++)
{
if (i<pw)
{
GPIO = 0b00000010;
__delay_us(200);
}
if (i>pw)
{
GPIO = 0b00000000;
__delay_us(200);
}
}
}
void main()
{
uint8_t db_cnt;
int v;
init();
GPIO = 0b00000010;
while(1)
{
v = read_v();
pwgen(v<<2);
}
}
//PWM
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11101100; //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
//INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt, sPIR1,i,sCCP1CON; // ADC_result2;
init();
TRISIO = 0b11101100; //Disable IO2
PR2 = 0x00;
CCP1CON = 0b00111100;
CCPR1L = 1; // 1,4,16
sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
PIR1 = sPIR1;
T2CON = 0b00000101;
while(1)
{
for (i=0;i<4;i++)
{
if (PIR1bits.TMR2IF == 1)
{
TRISIO = 0b11101000;
//sCCP1CON = CCP1CON;
// CCP1CON = (sCCP1CON & 0b11001111) | (i<<4);
//CCP1CON = 0b11001111;
PR2 = i;
}
__delay_us(800000);
}
}
}
//Stop lights
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdbool.h> /* For true/false definition */
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCCLK
#define _XTAL_FREQ 4000000
uint8_t sGPIO;
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11111000; //Set GP0, GP1, GP3 as outputs and the rest as inputs
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt;
init();
GPIO = 0b00100000;
sGPIO= 0b00100000;
while(1)
{
GPIO = 0b00100000;
for (db_cnt = 0; db_cnt <= 5; db_cnt++)
{
GPIO = 0b00100001;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(40);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(40);
GPIO = 0b00100000;
}
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(10);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
GPIO = 0b00100001;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100010;
__delay_ms(1000);
GPIO = 0b00100000;
GPIO = 0b00100100;
__delay_ms(1000);
for (db_cnt = 0; db_cnt <= 10; db_cnt++)
{
__delay_ms(1);
if (GPIObits.GP5 == 1)
db_cnt = 0;
}
}
}
Thursday, March 20, 2014
PWM Code:
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11101100; //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
//INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt, sPIR1,i; // ADC_result2;
init();
TRISIO = 0b11101100; //Disable IO2
PR2 = 0xF5;
CCP1CON = 0b00111100;
CCPR1L = 1; // 1,4,16
sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
PIR1 = sPIR1;
T2CON = 0b00000101;
while(1)
{
for (i=0;i<250;i++)
{
if (PIR1bits.TMR2IF == 1)
{
TRISIO = 0b11101000;
PR2 = i;
}
__delay_us(2000);
}
}
}
#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif
#include <stdint.h> /* For uint8_t definition */
#include <stdlib.h>
//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000
void init()
{
//Configure GPIO Port
ANSEL = 0b00000000; //Configure all GPIO pins as digital
TRISIO = 0b11101100; //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
WPU = 0x00; //Disable weak pullups
//Configuer AD Convertor
ADCON0 = 0x00; //AD disabled
ADRESH = 0x00; //Init the AD Register
//Configure Comparator
CMCON0 = 0xFF; // Comparator is turned off
CMCON1 = 0x00; // Comparator is turned off
//Interrupt configuration
//INTCON = 0x00; //Disable all interrupts
}
void main()
{
uint8_t db_cnt, sPIR1,i; // ADC_result2;
init();
TRISIO = 0b11101100; //Disable IO2
PR2 = 0xF5;
CCP1CON = 0b00111100;
CCPR1L = 1; // 1,4,16
sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
PIR1 = sPIR1;
T2CON = 0b00000101;
while(1)
{
for (i=0;i<250;i++)
{
if (PIR1bits.TMR2IF == 1)
{
TRISIO = 0b11101000;
PR2 = i;
}
__delay_us(2000);
}
}
}
Thursday, August 15, 2013
More Mura Filter
Latest version of the Mura Filter includes LFO. Have not built this design yet. Increased the cap from 10p to 2n2, I'll try this when I get home and see if it works.
Monday, August 12, 2013
Monday, July 8, 2013
Electronic Kick Drum Mods
Electronic kick drum modified from Thomas Henry and the Electronic Peasant. Added a pot for attack on the volume side and a triangle to sine converter. Have not tried this one yet.
Subscribe to:
Posts (Atom)

