Thursday, June 11, 2015

My new project: Kula6

So I have started a new project... as usual for a procrastinator like me without finishing the previous one (cloudClock).

I checked my suitcase full of components to find that there were plenty of parts which I had bought and never used. I had Atmega32, DACs, PT2399 digital delay chip, ssm2164 VCA chip... so I had to do something with all that, what? definately something noisy!!!

So far my thought is doing a 6 voiced paraphonic synth with square wave oscillators and frequency dividers to get an organ type sound but with a cool 24dB/oct VCF to give it a cool synth sound. Well, that is the idea, we will see what I come up with, experimentation is the key this time. The name: Kula6, why? why not... 

Anyway, so I started with the power supply: a bipolar power supply with +/- 12V and 5V outputs and the basic circuitry for the Atmega32. I added an LED on one of the Atmega outputs for testing the usual blinky LED example. Schematic here:


And the code for the blinky LED, from hackday:

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void)
{

  //Setup the clock
  cli();            //Disable global interrupts
  TCCR1B |= 1<<CS11 | 1<<CS10;  //Divide by 64
  OCR1A = 15624;        //Count 15624 cycles for 1 second interrupt
  TCCR1B |= 1<<WGM12;     //Put Timer/Counter1 in CTC mode
  TIMSK |= 1<<OCIE1A;        //enable timer compare interrupt
  sei();            //Enable global interrupts

  //Setup the I/O for the LED

  DDRC |= (1<<0);     //Set PortC Pin0 as an output
  PORTC |= (1<<0);        //Set PortC Pin0 high to turn on LED

  while(1) { }          //Loop forever, interrupts do the rest
}

ISR(TIMER1_COMPA_vect)      //Interrupt Service Routine
{
  PORTC ^= (1<<0);        //Use xor to toggle the LED
}

And this is how my prototype board looks like: