Jump to content
43oh

GeekDoc

Members
  • Content Count

    1,391
  • Joined

  • Last visited

  • Days Won

    13

Reputation Activity

  1. Like
    GeekDoc got a reaction from Fmilburn in Turn off Bright Green power LED when running MSP430 Launchpad on Battery?   
    The solution is a simple hardware one: remove the Vcc and reset jumpers. 
     
    The LED is a USB power indicator.  Powering via the (3V3) 3-pin header on the opposite corner from the USB connector will bypass the USB power.  However, unless you remove the reset and Vcc jumpers, the battery power will be used to power the (unneeded) programming side of the LaunchPad, including the power LED.
  2. Like
    GeekDoc reacted to cubeberg in [S]IV-18 VFD Clock Booster Pack   
    @@gwdeveloper - That's too bad!  I think @@bluehash is out of tubes right now, but should be getting in more (they take a while to ship from Russia).  It wouldn't be too difficult to update the library to skip one of the blinking decimals for now.  
    I've never had good luck with the temperature sensor unfortunately - I'm wondering if the electronics on the board are putting off some heat or possibly an issue with the one-wire library.  I need to do some testing to see if I can clean that up - the response I get from the assembly function contains junk data sometimes.  There's a possibility that the interrupts for the display refresh are the problem.
     
     
    @@dred - Fantastic!  The crystal is a small hurdle thankfully.  I've had several other people state that they had trouble with their crystal - not sure if a batch of LP's went out with a problem.  Seems like way too many people for coincidence. 
    That must be where all those kits went last month - hadn't seen much movement for a month and then a ton of them sold!
  3. Like
    GeekDoc reacted to cubeberg in [S]IV-18 VFD Clock Booster Pack   
    Here's a quick pic of the IV-21 tube.  I need to do some more tests on the stability of the boost circuit.  It took a few component changes (still need to identify an inductor from DigiKey - using a cheap one right now) and a new adapter board, but it's working on the same main board as the IV-18 VFD.  
     
    I ordered some other VFD tubes - hoping to come up with some other clock variations
     
    FYI - don't forget to check out @@Mybuster's VFD clock as well! - http://forum.43oh.com/topic/4572-vfd-tube-clock-with-msp430/

  4. Like
    GeekDoc reacted to cubeberg in [S]IV-18 VFD Clock Booster Pack   
    Quick teaser pics    That's not the IV-18 - it's the (much) smaller IV-21.  Still working out voltages though.  This one runs on 9-12v, but should work with the same main board, just different component values for the boost circuit.
     

     

  5. Like
    GeekDoc reacted to rampadc in Altium - free version   
    This is awesome! I love using Altium Designer, I used it in uni then bought a student license last year.
     
     
    Hehe you're way off, the student license is actually 1.5% of the cost of an individual license.
  6. Like
    GeekDoc reacted to Fred in Altium - free version   
    I'm now imagining you as the worst student ever. "Well Mr. Greeeg, I'm afraid you've failed yet again. You'll have to repeat the year. And why are you smiling?"
  7. Like
    GeekDoc reacted to greeeg in Mailbag   
    Got my uCurrent gold,
     
    Should come in very handy to measure low-power current consumption in my projects.

  8. Like
    GeekDoc reacted to Fred in Mailbag   
    I finally got my NFC implant err... implanted. I'm very happy with it. You'll find full details here but if you just want the gory details...
     

     

  9. Like
    GeekDoc reacted to cubeberg in Mailbag   
    @@t0mpr1c3 - watch out - heat will kill the magnets.  An adhesive is typically recommended.
     
    https://www.kjmagnetics.com/FAQ.asp#weld
  10. Like
    GeekDoc reacted to Rickta59 in Add more LEDs with Fading   
    Using a peripheral that can do the job is usually the best solution. I wouldn't use the code I wrote above to accomplish your task. I'd use the timer.
  11. Like
    GeekDoc reacted to RobG in WIZpix - Internet enabled pixel controller with PoE   
    WIZpix is an internet enabled RGB pixel controller with built in PoE. 
     
    WIZpix uses W5500 internet appliance to connect to internet and MSP430F5172 MCU to control RGB pixels.
    Built-in DC/DC converter allows use of PoE, which eliminates need for directly connected power supply, ability to place controller far away from the outlet, and use of only one inexpensive CAT-5 cable. 
    It




  12. Like
    GeekDoc reacted to cubeberg in New Chip Alert: The ESP8266 WiFi Module (It's $5)   
    Haven't read all of this yet - looks like they translated everything: https://nurdspace.nl/ESP8266
  13. Like
    GeekDoc reacted to jpnorair in New Chip Alert: The ESP8266 WiFi Module (It's $5)   
    On a sour note: Broadcom has patents that must be licensed in order to market WiFi devices in most of the world.  China does not have much in the way of patent law.  If you're thinking about building a product to sell, I would avoid this module for legal reasons.  If not, then buy a bunch -- they might not be available at this price forever.
  14. Like
    GeekDoc reacted to reaper7 in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
     
    good oration, congratulations!
  15. Like
    GeekDoc reacted to Rei Vilo in Listing of all booster packs?   
  16. Like
    GeekDoc reacted to Rei Vilo in Listing of all booster packs?   
    Uploading the 1.8 MB image doesn't work. A 1.3 MB image seems to work, alas difficult to read.
     
    Please visit http://embeddedcomputing.weebly.com/inter-boards-pins-compatibility-table.html and download the  7762x4172 image.
  17. Like
    GeekDoc reacted to zeke in Sparkfun just announced phant.io   
    So, I received this email from Sparkfun today:
     
    =======================================
     
    Today we are excited to announce the latest SparkFun service - the SparkFun Data Channel. We are also proud to announce Phant.io -  our modular node.js based data logging tool for collecting data.

    Why did we create this? Because we needed it and thought you might too! And it's totally free!

    Check out this post from our CEO Nate Seidle to learn more.
     
    =======================================
     
    I noticed that they have built a library for the Arduino (naturally). Now I am wondering, how long will it take for that library to be ported over to the MSP430?
     
    I am fascinated by this because you can download the source code and setup your own instance of the server on your own hardware.
     
    I wonder if this will become popular?
  18. Like
    GeekDoc reacted to Rei Vilo in Sparkfun just announced phant.io   
    I had a look at the library for Arduino hosted at https://github.com/sparkfun/phant-arduino/blob/master/Phant/Phant.cpp
     
    As it relies on the Wiring / Arduino framework just as Energia does, you can use it on all the LaunchPads supported by Energia.
  19. Like
    GeekDoc got a reaction from igor in Job offers on 43oh   
    Be sure to "Thank" them.
  20. Like
    GeekDoc reacted to grahamf72 in Vetinari's Clock   
    I've improved the code a little, so here is my updated version. Fixes include:
    1. Using a bit array instead of a byte array, dramatically reduces the amount of RAM used, so that smaller MSP430's can be used. I have been using an F2012, only because it was the cheapest DIP MSP430 my supplier had on hand. It should compile and work with pretty much any of the low end processors. I've tested with the F2012 & G2452, but it also compiles with the G2231, so I'd expect it should operate fine.
    2. Previously while the motor was turned on, it used a simple __delay_cycles loop for the timeout. This is quite heavy on power. I have changed it so it utilises TimerA so that it can go down to LPM3 while it is providing the motor pulse.
    3. The original code had a bug in that when the coil was off, both PNP transistors were turned on. PNP transistors turn on when their base is brought low, and since in the idle state the original code set those pins to 0, both transistors were turned fully on. This didn't result in current flowing through the motor, but base current was constantly flowing through the transistors - approx 3mA each.  This sapped battery life.
    With the original code, I was getting about 1 month on a pair of AA alkaline batteries. With my changes I've had a clock running for about 6 months now.
    /****************************************************************************** * * Project : Vetinari Clock * Target CPU : MSP430G2553 * Compiler : CCS 5.2.1 * Copyright : None * Version : $Revision: 1A * \file main.c * \brief The Vetinari clock is from a book series known as Discworld, where * Lord Verinari has a clock in his waiting room which has an irregular tick. The * idea of the clock is to add a sense of unease and anxiety to anyone in the waiting * room since their brain doesn't filter out the ticks like a normal clock. * * To accomplish this task on a 430, we create an array of possible time frames to * tick the clock, and parse through it at 4Hz. The array is 32 entries long, so it * equates to 32 seconds in the real world. By randomly setting 32 of the elements high, * we create a timing sequence. A high element will generate a tick of the clock. This * means a second on the clock can be as little as 250ms, or as long as 24 seconds, and * still keep accurate time. ***************************************************************************** * * Code modified by Graham Fountain to: * Use a bit array instead of byte array. This is much more RAM efficient and * allows a smaller 128B device to be used instead of needing a 256B device. * Tested with an MSP430F2012 (which at the time was the least expensive MSP430 * in DIP casing my supplier had in stock). * * The delay code that conrols how long the pulse is delivered to the motor * has been changed from a simple __delay_cycles to use TimerA. This allows us * to drop into LPM3 mode while the motor is pulsing, saving considerable power. * In my tests, a pair of AA batteries lasted about 1 month with the __delay_cycles * code, while they lasted more than 6 months with the TimerA code. * *********************************************************************** * * H Bridge Configuration. * The below code is configured for the below configuration of the * H Bridge. If you use different pins to control transistors then * use different values for COIL_OFF, COIL_ONE & COIL_TWO * * V+ ----------------+-----------+ * | | * E E The top two transistors are PNP, eg BC557 * P1.3<---RESISTOR---B B---RESISTOR--->P1.2 * C C * | | * +---MOTOR---+ * | | * C C * P1.1<---RESISTOR---B B---RESISTOR--->P1.0 * E E The bottom two transistors are NPN, eg BC547 * | | * GND ---------------+-----------+ * * * *****************************************************************************/ #include "msp430.h" #include <stdint.h> #include <stdio.h> #include <string.h> /* Defines - Too lazy to put these in a header, maybe later */ /* How many clock cycles cycles to keep the io high * This will chgange depending on the model of clock movement used */ #define ENERGISE_TIME 820 //time in 1/32768 clock cycles. 820 = 25mS /* IO Mapping */ #define COIL_OUT P1OUT #define COIL_DIR P1DIR /* H-Bridge control pins */ /* * NB: PNP Transistors are ON when low, OFF when high * NPN Transistors are OFF when low, ON when high */ #define COIL_OFF (BIT2 | BIT3) //Both PNP's high (off), Both NPN's low (off) #define COIL_ONE (BIT2 | BIT0) //B0101 PNP on P1.3 on, PNP on P1.2 off, NPN on P1.1 off, NPN on P1.0 on #define COIL_TWO (BIT3 | BIT1) //B1010 PNP on P1.3 off, PNP on P1.2 on, NPN on P1.1 on, NPN on P1.0 off /* Lazy man globals*/ static uint16_t timingSequence[8]; //8 x 16 bits = 128 bits inline uint16_t GetBit(uint16_t x) //get the current value of bit x { return (timingSequence[x>>4] >> (x & 0xF)) & 0x1; //x>>4 is our index to the array (top 3 bits). x & 0xF is the bit we want. } inline void ClearAllBits() //0 the array. This loop takes less code than memset { for(int i=0;i<8;i++) timingSequence[i]=0; } inline void SetBit(uint16_t x) //set bit x of the array { timingSequence[x>>4] |= (1<< (x & 0xF)); } inline void delay() //delay for the period specified by ENERGISE_TIME. { TA0CCR0= ENERGISE_TIME; //set what we will count to. TA0CCTL0 = CCIE; //enable CCR0 interrupt TA0CTL = TASSEL_1 | MC_1 | TACLR; //ACLK (the crystal), count up, reset any value currently in the timer LPM3; //wait until the interrupt happens. TA0CCTL0 = 0; //reset the timer TA0CTL =0; } /* * send a pulse to the clock coil */ void pulseClock(void) { /* the polarity on the coil must swap each time it ticks, so we need to keep track of it */ static uint8_t polarity; if (polarity == 0) { COIL_OUT = COIL_ONE; delay(); COIL_OUT = COIL_OFF; polarity = 1; } else { COIL_OUT = COIL_TWO; delay(); COIL_OUT = COIL_OFF; polarity = 0; } } /* * Using a LFSR, generate a "random" 16-bit number. This was snagged from wikipedia */ uint16_t get_rand(uint16_t in) { uint16_t lfsr = in; static unsigned bit; static unsigned period = 0; /* taps: 16 14 13 11; feedback polynomial: x^16 + x^14 + x^13 + x^11 + 1 */ bit = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 5) ) & 1; lfsr = (lfsr >> 1) | (bit << 15); ++period; return(lfsr); } /* * Reset the clock sequence, runs every 32 seconds */ void ResetSequence(void) { uint8_t i=32; uint8_t location; static uint16_t feedback = 0xACE1; /* Zero out all elements */ //memset(&timingSequence, 0x0, sizeof(timingSequence)); ClearAllBits(); /* The array needs to have 32 random elements set high. * To do this we generate 32 different random numbers to use as indexes for the bits that will be set high. * If the index is already set, we just discard that number and try for a new one. */ do{ /* get a new random number */ feedback = get_rand(feedback); /* We only want the lower 7 bits since it's a 128 element array * The 16-bit number is still used so that we get a longer * chain in the LFSR before it repeats */ location = 0x7F & feedback; /* If the random location has already been set high, we ignore the random number */ if(GetBit(location) == 0) { /* Other wise we set the element */ SetBit(location); /* and decrement the counter */ i--; } /* This needs to be done 32 times */ }while(i); } /* * I setup the MSP, and run the main program loop */ int main(void) { /* counter to determine when 32 seconds have past */ uint8_t counter = 0; if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { // If calibration constants erased, do not load, trap CPU!! while(1); //G_uc_SystemFailureCode = McuCalValueFail; } // Set DCOCLK to 1MHz DCOCTL = 0x00; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; /* setup watchdog for a .25s interval * WDT ISR set at watchdog_timer(void)*/ WDTCTL = WDT_ADLY_250; IE1 |= WDTIE; /* Enable Osc Fault */ IE1 |= OFIE; /* Setup IO */ COIL_DIR = COIL_ONE | COIL_TWO; COIL_OUT = COIL_OFF; /* Initialize the pulse sequence */ ResetSequence(); /* Enter LPM3 w/interrupt */ _BIS_SR(LPM3_bits + GIE); while(1) { /* If this element of the sequence is high, we need to tick the clock */ if (GetBit(counter)) { pulseClock(); } /* Increment the counter to get us closer to 32 sec */ counter++; /* The WDT runs at 4Hz, so 32sec at equates to 128 ISR firings * At the 32 sec mark, we want to reset the counter and generate a new pulse sequence */ if (counter == 128) { counter = 0; ResetSequence(); } /* Enter LPM3 w/interrupt */ _BIS_SR(LPM3_bits + GIE); /* Once the WDT interrupt fires, it will return here looping back to the start of the while loop */ } } #pragma vector=TIMER0_A0_VECTOR __interrupt void timera0 (void) { _BIC_SR_IRQ(LPM3_bits); //we don't need to do anything but make sure we are woken up. } /* * The watchdog timer is actually useful */ #pragma vector=WDT_VECTOR __interrupt void watchdog_timer (void) { /* Clear LPM3 bits from 0(SR) * This will send us back to the main while loop */ _BIC_SR_IRQ(LPM3_bits); } /* * Just in case */ #pragma vector=NMI_VECTOR __interrupt void nmi_ (void) { uint16_t i; do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFFF; i > 0; i--); // Time for flag to set } while (IFG1 & OFIFG); // OSCFault flag still set? IE1 |= OFIE; // Enable Osc Fault }
  21. Like
    GeekDoc reacted to szhao in Remotely Control Your LaunchPad with Firmata and Bluetooth   
    I just found this video on youtube. It shows creating a web server and toggling pins through the browser.
     
    I also got a SimpleLink CC3200 LaunchPad. Maybe it can do the same thing with a more compact form.
  22. Like
    GeekDoc reacted to bluehash in Job offers on 43oh   
    Ok.. Just to let everyone know I read this thread everyday.
     
    Paying members is totally out of the question. It is just not possible financially. I mean seriously. There maybe an argument that I can siphon money from the Store. Yes I can, but is is enough for maintenance work and to add new features and in emergencies. I have a little saved up right now, which will go into improvement.
    The way it is now, I have hit a good balance between  income from the store, maintenance( shipping/Label service, credit card fees, materials, licenses(3), renewal licenses, hosting fees, sponsorships, gas )... and a big one - Time, which I don't get compensated for, but it comes with a big perk - satisfaction.
    Also ad revenue from google is negligible. To put it in perspective, it is less than $20 a month. Most users run Adblock.
     
    If you notice, most of our advertisers give away stuff, instead of cash. They have a choice.
    And sorry that you hate iPboard. It still seems a good step from phpbb... yes,posts got mangled, but that was the price to pay and people figure and help out in such cases.
     
    Note that setting up this infrastructure will take time. There is a "classifieds" plugin which will support this, but it has to be heavily modified and I hate installing anything on the forum that is not vanilla.
     
    @@JonnyBoats, a member time barrier is a nice example for developer entry. @@zeke, nice points. I am adding them to my list of probabilities. Thanks all.
  23. Like
    GeekDoc reacted to HylianSavior in Robotics Boosterpack   
    Design is finished and sent to the fab! It's now been christened as "BoosterBot".




  24. Like
    GeekDoc reacted to cde in What are you working on today/this week?   
    Planning and ordering stage of trying to replicate an object from a tv show.
     

     
    So I'm ordering some EL wire, and sampling some drivers. A inductorless driver, two resistors and two caps, plus a msp430 to add some fading/pulsing, all powered from a single cr2032.
  25. Like
    GeekDoc reacted to Rei Vilo in Job offers on 43oh   
    I have mixed feelings about "job offers".
     
    Just as @@igor, I've been given hardware
×
×
  • Create New...