• Announcements

    • bluehash

      Forum Upgrade   03/11/2017

      Hello Everyone, Thanks for being patient while the forums were being fixed and upgraded. Please see details and report issues in this thread. Thanks!


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by zeke

  1. Last night, I discovered that one of my source code repo's had been lost. Today, I confirmed that I had no backup of that repo. I am feeling poorly now because I know that it was my fault. I should have had a backup process in place to prevent this type of loss. So now I am wondering, what is your data backup process? How do you ensure your data is not lost in the worst case scenario?
  2. I was wondering if a private github repo might make sense. I don't like going offsite with my stuff so I'm not sure how to respond to my emotions just yet.
  3. I had git setup on a local linux box and I was using it. It suffered disk corruption when the power went out while I was away on Christmas Vacation. I am presently running efsck on it. It sure is taking a long time to finish.
  4. All three platforms. I have been trying to use freefilesync but it isn't automated. I have bookmarked Deltacopy because I have never heard of it before. Thanks!
  5. It was a bit of a mind bender for me at first but then I just read the I2C spec and it did not specify that the communication *had* to be at 100kHz. The way I choose to understand things is that the I2C slave device has a communication state machine inside of it. All I have to do is put in one bit and turn the crank once. Then repeat. Over and over. Then the slave device will just do its job merrily.
  6. I'm talking about both, actually. The DS28EA00 has two GPIO lines. Using 1Wire protocol, I turned them on and off in a way that looked like very slow I2C to the pressure transducer that was attached to those two GPIO lines. Essentially, using the 1Wire protocol, I spoke I2C to a slave device. Does that make sense?
  7. If it matters, I have done I2C via 1Wire over that distance and farther. If you slow the speeds down then you should be fine.
  8. For organizing cables, parts, and random stuff, I am using clear Samla Series boxes from Ikea: Small = 701.029.72 Medium = 401.029.78 Large = 801.029.76 Huge = 001.029.75 There are more sub-types that these. The benefits are: They stack on top of each other They are clear so you can see what's inside of them They all have matching lids to keep the dust out You can put slips of paper on the inside facing outwards to label the contents They are inexpensive I have created two wall mounted shelving units to hold these boxes. This is the BOM for one of the shelving units: 4x Rubbermaid 70" black twin track uprights screwed into the wall studs 16x Rubbermaid 11.5" black twin track shelf brackets - 4x per shelf 1x sheet of 4'x8' sheet of 3/4" plywood cut into four 8' strips The shelves are spaced so that two small Samla boxes can stack on top of each other comfortably. I like the results.
  9. Yes! I can see use cases for this information being extremely useful to Design Engineers. Just think, if someone embedded an MSP430 into one of their projects and wanted to do in-circuit programming then they would know the trick to getting it working! Good job @Peabody!
  10. @yyrkoon, This is a schematic of a typical programming setup. It doesn't matter what MSP430 that you use because they all can be wired up like this. To program this unit, I connect another G2 LaunchPad to this circuit using a four wire cable between P1 of this circuit and either J3 or J4 of the G2 LaunchPad board. Then program the circuit as if you were programming the G2 LaunchPad.
  11. This is my approach to state machines. Your mileage may vary. Determine all of the sub-systems that you will want to service Commands, Controls and Inputs, User Interface, and Data Setup a system tick timer that fires its interrupt on a regular consistent basis. This system doesn't have to go into LPM4. If it does then periodically wake up the system and cycle through the software service loops then go back to sleep. Setup a series of service flags that are set during the interrupt service routine and cleared after being serviced: Flag(s) for Commands, Flag(s) for Controls and Inputs, Flag(s) for User Interface, and Flag(s) for Data Setup a variable that acts like the system timer odometer. Every Odometer == (DesiredInterval%ServiceFlag_n_now) set the ServiceFlag_n Decide how often you will service the other functional blocks of your code. For example, Update the 2x20 LCD display every one second, or Update the Serial Console every 250ms, or Retrieve the Temperature from a sensor every 15 minutes. Setup an Interrupt Service Routine to catch any characters coming into the Serial Port Buffer. Stuff them into the Input Ring Buffer Set a flag that there's something to service. In the main loop, scan all of the service flags to see if any are set. Call the servicing function for each set flag. Clear the service flag at the end of that process. Configure the program to repeat continuously until Kingdom Come. I've left out significant details about setting up all of the peripherals and general variables so don't forget to do that stuff. This is just the basic gist of my state machines on a bare metal level.
  12. I've never gotten the interrupt driven I2C Master to work reliably but I have gotten the interrupt driven I2C working like a charm. I've done this working on the 2955, the 2553, and the 5529. I've used a state machine to divide up all the functionality between the I2C, the Serial IO, and the GPIO. It's weird to realize that I have never used the ADC nor the PWM yet.
  13. Hi Inscribe. I have all of them still. I will figure out a price and let you know.
  14. Hi Everybody! I have eight or nine clock ring PCBs here that I am thinking of selling. This is what they look like with the LEDs installed: This is what they look like in operation: This is what they look like in operation when installed in the Ikea Clock: Purchase options: Bare board Bare board with LEDs and Ikea clock Populated board Populated board with Ikea clock Would anyone be interested in buying one of them?
  15. I have done both of these tasks for more than one client. The 1-Wire protocol speed ends up being about 15kHz, which is slow but reliable. It's really cool to see on an scope though. I developed the I2C slave code using the sample TI code as the starting point. Here are the research materials that I referred to while writing my I2C code: http://www.nxp.com/documents/application_note/AN10216.pdf http://www.nxp.com/documents/user_manual/UM10204.pdf http://i2c.info/i2c-bus-specification http://www.ti.com/lit/an/slva704/slva704.pdf My slave code just follows the logic of the transaction.
  16. Hi EveryBody! I came across three software libraries on github that I thought I would share: pytelemetry telemetry pytelemetrycli pytelemetry provides high-level communication with any embedded device for remote control and monitoring. Specifically, pytelemetry implements a custom communication protocol, based on the PubSub (Publish/Subscribe) messaging pattern. telemetry is the C implementation of the protocol. It can run on any embedded system, along with official distributions for Arduino and ARM Mbed. pytelemetrycli is a powerful command line interface to interact with embedded devices using the protocol. It enables instant data visualization of any received data, full logging of communications, health monitoring of the serial port and much more. It looks like the libraries have been developed for the mbed and the arduino so far. I've got these on my "to play with" bucket list. YMMV
  17. @@bluehash Is this MAVLink?
  18. @@LIJsselstein, I don't have any specific reason for singling out this repository. A long time ago, in another job, I was writing C code for the Z80. The micro had to talk with the on-board metering system of a gigantic mining truck. The protocol used was called PLM2. It has since upgraded to PLM3. It turns out that it is too complex of a protocol for my tinkering. So, I went on the hunt for source code examples which demonstrated packetized communication between the PC and a micro. Specifically, I was hunting for source code examples in python that showed me how to work with structures of packets. Eventually, I would like to have a PC program that creates a SCADA like interface to my micro projects. I want to issue commands to the micro and receive back lots of data. It seemed to me that this pytelemetry was a convenient example to consider. Do you have other source code examples that you would like to share with us? I was on the hunt for source code examples which demonstrated packetized communication between the PC and a micro.
  19. I found this DSO138 oscilloscope kit on HobbyKing today. It may be of use to some people out there who do have a limited test equipment budget. From what I can tell, it looks like you have to solder in all of the through hole parts to complete the build. And I think the processor comes pre-programmed. I don't own one of these. I just thought it was a cool and inexpensive tool for only $20.
  20. @@AndyD273, Welcome! Dust off that board and get 'er running!
  21. Hi!

    Welcome @@KeithB! Please feel free to start a thread on your specific questions over in the General forum and tell us all about your thoughts and intentions.
  22. Oh, please tell us more about your circuit. Are you using a LaunchPad? Which hardware version is it? Do you about the jumpers that effect the I/O lines?
  23. Okay, I am interested in this section: #ifndef __LCD_H #define __LCD_H #define DATAREG P1OUT |= BIT4 // P2OUT |= BIT4 #define COMMANDREG P1OUT &= (~BIT4) // P2OUT |= BIT4 #define READ P1OUT |= BIT5 // P2OUT |= BIT5 #define WRITE P1OUT &= (~BIT5) // P2OUT &= (~BIT5) #define ENABLE_HIGH P1OUT |= BIT6 // P1OUT |= BIT6 #define ENABLE_LOW P1OUT &= (~BIT6) // P1OUT &= (~BIT6) These three lines look suspicious to me. #define COMMANDREG P1OUT &= (~BIT4) // P2OUT |= BIT4 #define ENABLE_HIGH P1OUT |= BIT6 // P1OUT |= BIT6 #define ENABLE_LOW P1OUT &= (~BIT6) // P1OUT &= (~BIT6) Specifically, I am looking at your commented out code which I understand is what you want to do. Should they be adapted to Port2 somehow? #define COMMANDREG P1OUT &= (~BIT4) // P2OUT |= BIT4 ^^^^ #define ENABLE_HIGH P1OUT |= BIT6 // P1OUT |= BIT6 ^^^^^ #define ENABLE_LOW P1OUT &= (~BIT6) // P1OUT &= (~BIT6) ^^^^^ I put carets underneath the characters that I think are suspicious. What do you think?
  24. I stumbled across a list of nine open source books on Hacker News today that will help people learn how to program in C. YMMV
  25. Welcome @@dutyfree! There is a lot of small details that could go wrong when you change from Port1 to Port2. Could you do use a favor and post your code so we can see what you are doing? Please use the little blue <> symbol when you are posting your code in your reply message. That will make the code look nice for us to see.