Close
0%
0%

FLUX capacitor trinket

emancipating this project from my blinking stuff project

Similar projects worth following

There's also a "four stage, more resistor, better backside art" version by @Bastiaan - #Mini flux capacitor prop PCB

attiny45.sch

sch - 289.42 kB - 07/13/2017 at 12:50

Download

attiny45.brd

brd - 73.99 kB - 07/13/2017 at 12:50

Download

  • So I've made myself an AVR resetter then

    davedarko07/16/2017 at 18:37 5 comments

    to fix almost all my tiny13a's I had to build this, but it definitely fixed all 10 boards :) for the tinies you don't need any parallel connections, so it's basically SPI + 12V on reset. I've hooked up a boost converter, added a button and "some" LEDs (bicolor), worked them in the code and now basically have a "power on and fix" stand alone fuse resetter for soic Attinies. That's not highly specialised at all. BUT IT WORKS AND THEY WORK! Now I need to clean up my desk.


    http://www.engbedded.com/fusecalc/
    https://arduinodiy.wordpress.com/2015/05/16/high-voltage-programmingunbricking-for-attiny/



    // AVR High-voltage Serial Fuse Reprogrammer
    // Adapted from code and design by Paul Willoughby 03/20/2010
    // http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/
    // Fuse Calc:
    //   http://www.engbedded.com/fusecalc/
    // slightly edited by davedarko in 2017
    
    #define  RST     13    // Output to level shifter for !RESET from transistor
    #define  SCI     12    // Target Clock Input
    #define  SDO     11    // Target Data Output
    #define  SII     10    // Target Instruction Input
    #define  SDI      9    // Target Data Input
    #define  VCC      8    // Target VCC
    
    #define  BUTTON   3    // Target VCC
    #define  LED_RED  7    // Target VCC
    #define  LED_GRN  5    // Target VCC
    
    #define  HFUSE  0x747C
    #define  LFUSE  0x646C
    #define  EFUSE  0x666E
    
    // Define ATTiny series signatures
    #define  ATTINY13   0x9007  // L: 0x6A, H: 0xFF             8 pin
    #define  ATTINY24   0x910B  // L: 0x62, H: 0xDF, E: 0xFF   14 pin
    #define  ATTINY25   0x9108  // L: 0x62, H: 0xDF, E: 0xFF    8 pin
    #define  ATTINY44   0x9207  // L: 0x62, H: 0xDF, E: 0xFFF  14 pin
    #define  ATTINY45   0x9206  // L: 0x62, H: 0xDF, E: 0xFF    8 pin
    #define  ATTINY84   0x930C  // L: 0x62, H: 0xDF, E: 0xFFF  14 pin
    #define  ATTINY85   0x930B  // L: 0x62, H: 0xDF, E: 0xFF    8 pin
    
    void setup() {
      pinMode(BUTTON, INPUT_PULLUP);
      pinMode(LED_GRN, OUTPUT);
      pinMode(LED_RED, OUTPUT);
      
      pinMode(VCC, OUTPUT);
      pinMode(RST, OUTPUT);
      pinMode(SDI, OUTPUT);
      pinMode(SII, OUTPUT);
      pinMode(SCI, OUTPUT);
      pinMode(SDO, OUTPUT);     // Configured as input when in programming mode
      digitalWrite(RST, HIGH);  // Level shifter is inverting, this shuts off 12V
      Serial.begin(19200);
    }
    
    void loop() {
      digitalWrite(LED_GRN, HIGH);
      digitalWrite(LED_RED, LOW);
      
      if (digitalRead(BUTTON) == LOW)
      {
        digitalWrite(LED_GRN, LOW);
        digitalWrite(LED_RED, HIGH);
        
        pinMode(SDO, OUTPUT);     // Set SDO to output
        digitalWrite(SDI, LOW);
        digitalWrite(SII, LOW);
        digitalWrite(SDO, LOW);
        digitalWrite(RST, HIGH);  // 12v Off
        digitalWrite(VCC, HIGH);  // Vcc On
        delayMicroseconds(20);
        digitalWrite(RST, LOW);   // 12v On
        delayMicroseconds(10);
        pinMode(SDO, INPUT);      // Set SDO to input
        delayMicroseconds(300);
        unsigned int sig = readSignature();
        Serial.print("Signature is: ");
        Serial.println(sig, HEX);
        readFuses();
        if (sig == ATTINY13) {
          writeFuse(LFUSE, 0x6A);
          writeFuse(HFUSE, 0xFF);
        } else if (sig == ATTINY24 || sig == ATTINY44 || sig == ATTINY84 ||
                   sig == ATTINY25 || sig == ATTINY45 || sig == ATTINY85) {
          writeFuse(LFUSE, 0x62);
          writeFuse(HFUSE, 0xDF);
          writeFuse(EFUSE, 0xFF);
        }
        readFuses();
        digitalWrite(SCI, LOW);
        digitalWrite(VCC, LOW);    // Vcc Off
        digitalWrite(RST, HIGH);   // 12v Off
        delay(1000);
      }
    }
    
    byte shiftOut (byte val1, byte val2) {
      int inBits = 0;
      //Wait until SDO goes high
      while (!digitalRead(SDO))
        ;
      unsigned int dout = (unsigned int) val1 << 2;
      unsigned int iout = (unsigned int) val2 << 2;
       for (int ii = 10; ii >= 0; ii--)  {
        digitalWrite(SDI, !!(dout & (1 << ii)));
        digitalWrite(SII, !!(iout & (1 << ii)));
        inBits <<= 1;         inBits |= digitalRead(SDO);
         digitalWrite(SCI, HIGH);
         digitalWrite(SCI, LOW);
       } 
       return inBits >> 2;
    }
    
    void writeFuse (unsigned int fuse, byte val) {
      shiftOut(0x40, 0x4C);
      shiftOut( val, 0x2C);
      shiftOut(0x00, (byte) (fuse >> 8));
      shiftOut(0x00, (byte) fuse);
    }
    
    void readFuses () {
      byte val;
            shiftOut(0x04, 0x4C);  // LFuse
            shiftOut(0x00, 0x68);
      val = shiftOut(0x00, 0x6C);
      Serial.print("LFuse "); // this line may show up corrupted in some browsers it is a Serial.print("LFuse: ");
     Serial.print(val,...
    Read more »

  • Attiny13 woes

    davedarko07/13/2017 at 20:01 0 comments

    Okay, here we go:

    Left OSHPark board: attiny13a SSU - working

    Right OSHPark board: attiny45 - working

    all 10 green boards: attiny13a SU - not working

    Red board: attiny13a SSU - not working (but same badge as left OP board - weird)

    USB cable tester: attiny13a SSU - working

    small OSHPark board: attiny13a SSU - no idea


    out of 15 attiny13a boards I know that two are working :( meh. At first I thought The smaller tinies are definitely fake, but the datasheet says they're a possibility.


View all 2 project logs

Enjoy this project?

Share

Discussions

thelogicofpi wrote 05/11/2018 at 16:58 point

Hi,

I was wondering if you could share the code on the attiny as well? I have the board and have soldered most parts on, but then realized that I don't have a program or a way to program the attiny, but I can give digikey the code to load on it if you are ok with sharing that as well. 

Thanks!!

  Are you sure? yes | no

Stefan-Xp wrote 08/05/2017 at 19:48 point

Awesome project ;)
At least one of us keeps on creating ;-)

https://hackaday.io/page/1295-projects-coming-soon-or-later

P.S.: Have you got inspired by my Page? ;)

Best regards!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates