SGMKtiny: Difference between revisions

From SGMK-SSAM-WIKI
Jump to navigation Jump to search
Line 32: Line 32:


programming the attiny85 with the [http://hlt.media.mit.edu/?p=1695 arduino IDE]
programming the attiny85 with the [http://hlt.media.mit.edu/?p=1695 arduino IDE]
[http://www.obdev.at/products/crosspack/index.html CrossPack] development environment for Atmel’s AVR® microcontrollers running on Apple’s Mac OS X
[http://www.obdev.at/products/crosspack/index.html CrossPack] development environment for Atmel’s AVR® microcontrollers running on Apple’s Mac OS X



Revision as of 18:08, 17 August 2012

SGMK tiny

easy to use on breadboards with onboard connected ISP port. see general info about Hands On AVR

Pin Layout

Another proposal for the SPI connector

Personally I find the "standard" AVR 6pin ISP connector very cumbersome

  • not easy to route around it
  • very small pads
  • difficult to remember what pin is what
  • without the correct cable with molex connector you're fucked

So I started to design all my boards that need a ISP connector like this:

GND | VCC | RESET | SCK | MISO | MOSI all in one row.

The advantage is that it's the same pinout like the bigger ATMEGAs, where you can pull out the ISP just straight like this: gnusb-procreation

Mask

Code Examples

programming the attiny85 with the arduino IDE

CrossPack development environment for Atmel’s AVR® microcontrollers running on Apple’s Mac OS X

Random noise generator

first set the clock divider to 8MHz

clock divided by 8 (1Mhz, as delivered) -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

clock not divided (8Mhz) avrdude -b 19200 -c usbtiny -p t85 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

/* Pseudo-Random Bit Sequence Generator                     2009-11-25 */
/* Copyright (c) 2009 John Honniball, Dorkbot Bristol                  */

/*
 * For a discussion of PRBS generators, see The Art Of Electronics, by
 * Horowitz and Hill, Second Edition, pages 655 to 660. For more info
 * on Linear Feedback Shift Registers, see Wikipedia:
 *   http://en.wikipedia.org/wiki/Linear_feedback_shift_register
 * For the actual shift register taps, refer to this article on noise
 * generation for synthesisers:
 *   http://www.electricdruid.net/index.php?page=techniques.practicalLFSRs
 */

// Choose the same pin as the "Melody" example sketch
int speakerPin = 0;

int potiPin = 1;

unsigned int analogValue;

int samplingDelay;

unsigned long int reg;

void setup ()
{
  // Serial setup for debugging only; slows down the program far too much
  // for audible white noise
  //Serial.begin (9600);

  // Connect a piezo sounder between Ground and this pin
  pinMode (speakerPin, OUTPUT);
  
  
  // Arbitrary inital value; must not be zero
  reg = 0x551155aaL;
}


void loop ()
{
  unsigned long int newr;
  unsigned char lobit;
  unsigned char b31, b29, b25, b24;
  
  // Extract four chosen bits from the 32-bit register
  b31 = (reg & (1L << 31)) >> 31;
  b29 = (reg & (1L << 29)) >> 29;
  b25 = (reg & (1L << 25)) >> 25;
  b24 = (reg & (1L << 24)) >> 24;
  
  // EXOR the four bits together
  lobit = b31 ^ b29 ^ b25 ^ b24;
  
  // Shift and incorporate new bit at bit position 0
  newr = (reg << 1) | lobit;
  
  // Replace register with new value
  reg = newr;
  
  // Drive speaker pin from bit 0 of 'reg'
  digitalWrite (speakerPin, reg & 1);
  
  // Display 'reg' in the serial console for debugging only 
//  Serial.println (reg, HEX);
  samplingDelay = 1 + (2*(analogRead(potiPin)>>0));
  // Delay corresponds to 20kHz, but the actual frequency of updates
  // will be lower, due to computation time and loop overhead
  delayMicroseconds (samplingDelay);
  
  // If the above delay is increased to a few tens of milliseconds,
  // and the piezo sounder is replaced by an LED and a suitable series
  // resistor, a randomly flashing light will result. Several LEDs
  // could be driven from various bits of the shift register.
}


from [http://tziteras.blogspot.com/2009/11/green-noise-experiment.html John Honnibal]