Leaderboard


Popular Content

Showing most liked content since 02/24/2017 in all areas

  1. 7 likes
    Thanks @Rei Vilo. To all, the award goes to you too. Thanks for being wonderful members.
  2. 6 likes
  3. 5 likes
    This project was put on hold over the holidays. It's always a busy time, plus the club doesn't hold meets over summer. But I have just completed another 10 units. More of the same, but thought you guys might enjoy some more photos. I couldn't get the same batteries as the last batch, which were 650mAh, these have much smaller 220mAh. But this still provides about 4 hours of run time. The uBlox GPS modules are a huge improvement. Even without the SAW filter in the RF path and the sub-optimal PCB size compared to the antenna. These find more GPS satellites faster than the G.top modules, plus they also use glonass which doubles the visible satellites.
  4. 4 likes
    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.
  5. 3 likes
    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.
  6. 3 likes
    Hello Everyone, Thanks for being patient while the forums were being fixed and upgraded. One Friday morning(March 10th, 2017), the server went down. There was a memory issue, which stalled the SQL server and everything came to halt. it had been fixed by Friday night, but then went down again due to a mistake I made during the bringup. In the mean time, I also decided to try to upgrade the server(php and peripheral updates) as well as the forum software. I'm going to see how things plan out in the next couple of days. Any issues you see with the site, please reply to this thread. Thanks!
  7. 3 likes
    Clavier's Short Guide to I²C Slaves on the MSP430x2xx Family Read section 17.3.4.1 of the User's Guide, and the example code. Slave mode is somewhat easier than master mode because you do not have to care about getting the transaction sequence correct; you just react to the master's requests. The slave address is an arbitrary but unique 7-bit number. Just put it into the I2COA ("own address") register; the USCI module will automatically handle transactions to this address. You do not need to configure a clock source; the clock signal is supplied by the master. When the master has written a byte, you get an RXIFG interrupt. Your interrupt handler must read that byte from RXBUF. (You can set the TXNACK bit after reading RXBUF, this will tell the master to stop after the following byte.) When the master wants to read a byte, you get a TXIFG interrupt. Your interrupt handler must write a byte to TXBUF. If your code is slow, the USCI module will automatically stop the bus via clock stretching until you have reacted. You can get notifications when start and stop conditions happen (STTIFG and STPIFG), but that is not always necessary. The I²C protocol itself defines only byte reads and writes. If you have registers, you have to handle the register address yourself. Typically, the first write after a start condition is the register address, and all following writes (and all reads) are from/to the specified register (and often the register address automatically increments). As a slave, you have no control over what the master does; you must react to any write and read requests at any time. (If you really have nothing to read, just send the last byte again, or some garbage byte.)
  8. 3 likes
    There is a new BeagleBone out in the field. This one is the "Blue", following the "Black" and "Green" ones. Expected retail price is $80. Feature list: Processor: Octavo Systems OSD3358 1GHz ARM® Cortex-A8 • 512MB DDR3 RAM • 4GB 8-bit on-board flash storage • 2×32-bit 200-MHz programmable real-time units (PRUs) • On-board flash programmed with Linux distribution Connectivity and sensors • Battery: 2-cell LiPo support with balancing, 6-16V charger input • Wireless: 802.11bgn, Bluetooth 4.1 and BLE • Motor control: 8 6V servo out, 4 DC motor out, 4 quad enc in • Sensors: 9 axis IMU, barometer • Connectivity: HighSpeed USB 2.0 client and host • Other easy connect interfaces: GPS, DSM2 radio, UARTs, SPI, I2C, analog, buttons, LEDs Software Compatibility • Debian, ROS, Ardupilot, • Graphical programming, Cloud9 IDE on Node.js
  9. 3 likes
    Came across this while browsing. MSP430 Analog Gauge Clock
  10. 2 likes
    SUCCESS ! using Mods as above plus twi.c and twi.sw.c from this link :- http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/529036/1924562#1924562 plus adding :- Wire.setModule (0) before Wire.begin() in Void Setup() in both Master and Slave :- I have managed to send two characters from the Master to turn off the Red Led in a loop on the Slave. BIG Thanks again to B@TTO. Wouldn't it be perhaps a good idea if these files were updated and placed in the Energia GitHub Repository ? How is this process carried out ?
  11. 2 likes
    I'm attaching a link to github with Energia code examples for various sensors. I started this as a place to put examples for students in a course I was helping to develop for middle and high school level students using the MSP430F5529. Unfortunately the course was not held but I'm putting them out there in the hope they might help someone. Where the code has been tested with other LaunchPads I've noted it. Here it is: https://github.com/fmilburn3?tab=repositories You won't find anything sophisticated but many are at least somewhat unique in that I couldn't find an example for that sensor tailored specifically for the F5529, or I wanted to better document it for beginners. Essentially all are variants of work done by others, including work on 43oh, and I hope I've recognized the contribution in the code. There is a wiki associated with some that has the schematic and photographs. There is some other example code that is almost complete - e.g. using small DC motors and servos and I might add them. Here is a list of sensors and devices currently out there: CNY70 - used as a proximity switch CNY70 - used as a tachometer MCP41010 - digital pot HC-SR04 - distance sensor 3 watt high intensity LED MAX4466 -sound level I2C LCD (4x20) and (2x16) HC-SR501 - PIR movement detection SW-180xxP - vibration sensor Joystick PFatFs - compiles and runs on the F5529 Hall effect rainfall sensor TMP36 - temperature Sharp GPf1S53VJ000F - photo interrupter Using low power modes (LPM) in Energia TCS3200 Color Sensor using MSP432 *** added 8/8/15 DS1307 Real Time Clock (RTC) Module *** added 8/9/15 INA125P Instrumentation Amplifier *** added 10/9/15 MCP3008 ADC *** added 10/12/15 TLC5615 DAC *** added 11/30/15 dAISy MarineTraffic shore station w/ CC3200 ** added 12/16/15 AD9850 Frequency Generator ** added 1/20/16 FFT ** added 1/20/16 Rotary encoder ** added 1/23/16 W5500 Ethernet ** added 3/25/16 MSP430G2955 pins_energia.h ** added 3/25/16 DriverLib examples for F5529 ** added 8/16 Infrared Transmission ** added 12/16 WS2812 LEDs using SPI ** added 12/16 Battery measurement ** added 1/17 Finite State Machine - alarm system ** added 2/6/17 Using RTC module with Energia - F5529 ** added 2/24/17
  12. 2 likes
    Best way is to open the related header file and search for getTouch(). Which example are you trying to compile? Does the main sketch include #include <LCD_screen.h> #include <LCD_screen_font.h> #include <LCD_utilities.h> #include <Terminal12e.h> #include <Terminal6e.h> #include <Terminal8e.h> This is an unpleasant requirement from Arduino / Energia: all the libraries need to be listed on the main sketch.
  13. 2 likes
    Here's some more C++ magic which seems applicable to embedded programming. I think he optimized for speed instead of space (using tons of mov instead of a loop to initialize sprite bitmaps). But a lot of impressive optimization by the compiler. On the downside, I didn't understand half the constructs he was using. I guess I need to relearn C++ via embedded.fm podcast
  14. 1 like
    Cool concept to adding boards to the Raspberry Pi. Atomo is a complete system for building electronic things with four parts: Control, IO, Power, and Connector. https://www.indiegogo.com/projects/atomo-modular-electronics-system-arduino--2#/ https://youtu.be/0uOsLvB1of0
  15. 1 like
    Am I reading correctly that this is with the LM35 not connected to the input pin? In other words, there is nothing connected to the input pin? If this is the case, then the potential on the pin will float, generally to about half of the power supply, give or take (depends on the device) and, being configured as an input, it will have very high impedance, so it will pick up noise. You would be measuring more the properties of the multimeter and its interaction with the floating input than a real potential.
  16. 1 like
    Welcome to 43oh. lcd_send_string(enum2str(haltIn)); What is the "haltIn" type. Can you type type cast or initialize it to the enum. The below works for me. Try to use typedef, to avoid tping "enum IOChannel" everytime. typedef enum {V1 = 11, I1 = 101, V2 = 12, I2 = 102}IOchannel; char *enum2str(IOchannel enumVariable) { switch(enumVariable) { case V1: return "V1"; default: return "I1"; } } /** * Main program. */ int main(void) { IOchannel haltIn = V1; enum2str(haltIn); }
  17. 1 like
    @ykaradana I will upload an EAGLE library for the CC1310 here to help anyone who needs this in the future. Specifically, it is the 128RHB version, but obviously it will work with any of the RHB variations. Hope it helps you. Cameron CC1310F128RHB.lbr
  18. 1 like
    the problem is the example code there @fmilburn ... move the #include <SPI.h> ahead of the include <Enrf24.h> ... #include <SPI.h> #include <Enrf24.h> #include <nRF24L01.h> Enrf24 radio(P2_0, P2_1, P2_2); // CE, CSN, IRQ pins ...
  19. 1 like
    A few questions: What is your power supply? What was the temperature of the environment? The lm35 needs at least a 4V supply. Its output is 10mV/degree C, so at 20 degrees C, the output should be 200 mV.
  20. 1 like
    More upgrades: PHP5.4 -> 5.6 Memcache support for forums. Added 12GB more to disc size.
  21. 1 like
    Most of his talk was not about C++, but about how to social engineer others into adopting in a non-supportive environment. It was a religious rather than technical exposition, as many Java talks, for example, also are. As to the data, I buy it. The technical points made are that strong typing reduces run time bugs is true, under the umbrella that only certain flavours of bug are caught, but these flavours lead indirectly to bugs of kinds not caught directly. Another advantage of strong typing is that, properly used, it can let the compiler do better optimization. His test case, a lightweight class, is probably where the advantages are greatest, but this is where, for many embedded applications, the other benefits to C++ are most available. I am not convinced that many of the 'more advanced' C++ tools and abstractions will give the same benefits, other than, with proper design, reduced debugging.With improper design (as one of the questioners put it, 'naive') there are likely to be losses. Some tools impose run time penalties that are unavoidable (often space rather than time) even with strong typing, but many of the standard tools (vector, for example) minimize this hit and save enough in other ways to be a net gain. Well designed standard tools pretty much always beat implementation specific, since they are designed (usually) by a specialist whose sole point is to get the best performance (by some metric) on the specific hardware. C++ provides a LOT of these tools. There are cases where a special purpose tool is better, but these are often brittle when changes are required, and the next revision has a net loss, either in performance (time or space) or in increased debugging. For reference, I tend to be a 'well written C is valid C++' kind of programmer, and use the C++ tools sparingly, especially in embedded work, and am NOT a C++ guru. I am, in fact, quite out of date with regards to the state of the C++ art. I still use the tools as they are appropriate, though. As for the social engineering aspects of the talk, nothing new. Read Dale Carnagie for the same. It is an effective model for understanding others and working with them. Nothing that hasn't been in writing for a good century, and known much longer, though in this case there is the extra fancy four quadrant graph of belief presentation.
  22. 1 like
    So in interest of full disclosure. I *will* be purchasing the two board I'm about to mention. Soon. The ODROID XU4: http://ameridroid.com/products/odroid-xu4 The ODROID C2 : http://ameridroid.com/products/odroid-c2 I've done a lot of reading over the last several months. In hopes of finding an embedded Linux SBC(ARM) that can be used as a desktop, as well as a work station for ARM board development. To come straight to the point. For that purpose, and in the same price range. Nothing comes close to the ODROID XU4. The things that "sinched" the deal for me was the quad A15's( quad A7's too ! ), the inclusion of USB 3.0, and true GbE networking( not shared with the USB buses ). A friend of mine has one and has demonstrated it for me a couple times. This thing is a beast ! Passed all that, one can run Android on this hardware, and I've been considering tinkering around with Android development as well, The ODROID C2 is very much like the Raspberry PI 3, but at a higher price point, and added performance / features. I think I paid $35 for my rPI including a power supply, and free shipping. That's a really good price for the hardware. The C2 on the other hand, like stated above has very similar hardware with a few key differences. First, for all intents and purposes they use the same processor type. An A53 quad core. However the C2 is clocked at 2Ghz. Secondly, the C2 has true GbE networking. Potentially very useful for many applications. Lastly, the C2 has twice the memory - 2G versus 1G. We actually have a project involved using a C2 in a professional capacity. No, this project is nothing like a NAS, SAN, or anything of that nature . . .Although it would perform that type of job very well I think. I am very anxious to get my hands on one. Very anxious to get my hands on an XU4 as well, but the XU4 will be more of a toy for a while. As well as handling any kernel, or debian package compiling I need done in the future. What boards are all you interested in ?
  23. 1 like
    Compared to the Raspberry Pi, The BeagleBone offers two PRUs for time-critical and deterministic tasks. However, developing against those PRUs isn't exactly easy. I went for alternatives. Very similar to the Arduino Yun, the Mediatek LinkIt Smart 7688 Duo features two cores: the processor MT7688AN runs on Linux for WiFi, and the ATmega32U4 micro-controller is compatible with Arduino. The Arduino Tian is an updated Arduino Yun with an Atheros AR9342 as CPU for WiFi (dual band WiFi), Ethernet (1000 Mbit/s Ethernet) and Bluetooth, and a Cortex-M0+ SAMD21G18 as MCU with 256 KB of Flash and 32 KB of RAM. The Intel Edison was very promising with a combined MPU + MCU + WiFi + BLE on a single SoC. Unfortunately, programming the MCU requires the reboot of the whole board MCU, and the MCU tick time is 10 ms. The SDK and API aren't mature yet but haven't been updated for a while. Dead project? Last and best choice, the UDOO Neo board combines a Cortex-A9 MPU with a Cortex-M4 MCU on the Freescale i.MX 6SoloX. The Cortex-M4 can be programmed on the fly. The board features Ethernet + WiFi + BLE.
  24. 1 like
    The closest I've come to on SBCs are RasPis and BBB. They suffice most of my needs. With real time requirements on specific processes, the choice is towards any of the ARM Cortexs running bare metal or RTOS code.
  25. 1 like
    Sure, I get it. Like you, I guess I am just more used to using C most of the time, but I still like many aspects of C++, as well as other languages. It's kind of funny, I was watching a youtube video the other day before bed, and I forget the speakers name( He's pretty well known, I should remember his name, but I dont - I'm not a "fanboy" that way ), where he was explaining why C++ was what he considered the better choice for embedded software development. Then he showed a chart from the last 10-15 years. Which showed C graphing upwards, while C++ was trending downwards . . . Ah right, Dan Saks, but his contention is that C++ is better than C, and I completely disagree with that. I think every language has it's place, and for different people, that will skew one direction or another. But there is a reason why you will never, at least within the near future, see any C++ code in the Linux kernel.
  26. 1 like
    I don't try to convince anybody. I'm way too busy myself to unlearn bare metal C. But I thought the video will be relevant for people that venture down the rabbit hole.
  27. 1 like
    Didn't know you posted, heh been super busy with the day job building a monitoring system for the company, in addition to building an update system( for our own software )from scratch . . . pretty interesting stuff, and I learned A LOT about systemd services + timers, but without actually getting into the architecture of it all. It's a nightmare trying to visualize all this in your head. Chicken, I've come to realize that that for myself, C is the only real way to go with embedded design. I personally find C++ good for when you need to use a lot of strings, and perhaps other various constructs, it can be ok to work with. But when you need all out performance, C will usually be the best option. Unless you're super proficient with C++, and you write all of, or at least all of the important code from scratch. Same goes for C though really. An example would be my two process application where I needed to share a file between the two halves, and I wrote my own binary file lock. Because the C std API calls were all way too slow. EDIT: Oh, and you can bet I will eventually get around to watching the video.
  28. 1 like
    Yeah, pretty cool little board. I was offered a chance to get a "beta" board in exchange for developing open source software for this specific board. Unfortunately, I was hired full time just a week prior by a person whom was contracting some work out to me . . . So I was, and am still busy doing work for my "day job". I think one of the neatest things about this board, is the Octavo SoM. Which is pretty much an AM335x processor, with internal memory( no need to worry about getting DDR traces exactly right ), and from what I was told around 6 months ago from one of the team members of the SoM is that many of the processors "pins"( balls ) can be brought out and used. Where the beaglebone does have many I/O / peripheral options, but from memory, less than half of the pins are used( if memory serves correctly ).
  29. 1 like
    Texas Instruments has standard shipping for $3.14 and 10% off selected tools through March 19th: http://www.ti.com/lsds/ti/store/march-ti-store-pi-week-promotion.page?HQS=ecm-tistore-promo-piweek17-bti-lp-null-wwe
  30. 1 like
    Pinning topic. Thanks for keeping the repo updated. @Fmilburn
  31. 1 like
    There is no connection from VBUS to any of the pins on the chip. What I would recommend is to tap ICDI_VBUS through a resistor divider to end up with 3.3V and then connect that to one of the pins. You might also be able to just directly connect ICDI_VBUS to the switching regulator control pin either through a resistor divider or directly if it is 5 Volt tolerant.
  32. 1 like
    Solved. I have included all the libraries. The problem was in calling the getTouch function. I declared x,y,z as variables of type unsigned short and called the getTouch with x,y,z as parameters. The compilation was successful and the getTouch returns true on touching the screen and fills in the x,y,z values.
  33. 1 like
    Actually, the I²C implementation for the ESP8266 differs from the Arduino standard. Energia complies with the Arduino standard. I'm using I²C extensively on LaunchPads and I've never experienced any issues. The MSP430F5538 is not officially supported by Energia. Have you tried with a LaunchPad officially supported by Energia, e.g. MSP430G2553 or MSP430F5529? I don't have any MPL3115A2 at hand, so I can't proceed with tests. Does its data-sheet mention some non-standard usage of I²C protocol? Finally, have you tried to add a delay and change your code to Wire.beginTransmission(MPL3115A2_ADDRESS); Wire.write(regAddr); Wire.endTransmission(); // modified delay(100); // added Wire.requestFrom(MPL3115A2_ADDRESS, 1); return Wire.read();
  34. 1 like
    You might also explore the software for one of TI's older experimenter boards which had the ability to record and play back audio for both specs and firmware. Not energia-friendly, but still instructive.
  35. 1 like
    Hi @jBrizzle and welcome to 43oh... Maybe use a little module? Depending on your needs in terms of recording length and number of recordings that might work. I have used these although not from this vendor: https://www.amazon.com/Sound-Voice-Recording-Playback-module/dp/B018Q6TAEQ/ref=sr_1_2?ie=UTF8&qid=1489447073&sr=8-2&keywords=isd1820 They are cheap and work for a single recording but the amplification and quality isn't great. They can be controlled with a microcontroller. Maybe this: http://processors.wiki.ti.com/index.php/Audio_Capacitive_Touch_BoosterPack_Hardware I don't have experience with it but it looks interesting. I usually have a look at what Sparkfun and Adafruit are doing as well, even if I decide to make it myself.
  36. 1 like
    It seems that there is a data type mismatch between whatever code is calling the SPI API's and the SPI library. Where did the ZBooster library come from?
  37. 1 like
    @bluehash Thank you for the hard work. I've had enough experience with running sites to know how time-consuming, and frustratiing, it can be. Bob
  38. 1 like
    Via Hackster.io MultiTasking ultrasonic and color sensor with Texas Instruments MSP-EXP432 and Energia.
  39. 1 like
    Ah. I went through the log and saw that I had added the site as an exception on one machine (one I generally use for such) in 2015. Tried accessing from the shop machine today. I am surprised I haven't noticed before, but, then again, the shop machine has all of three bookmarks in the browser, since it is generally used only for the shop gear.
  40. 1 like
    It appears that 43oh is rejecting https connections (browser: mozilla, system windoze8, urls tested: https://www.43oh.com/ https://forum.43oh.com/ )
  41. 1 like
    Nice surprise! It’s here! Get your Wi-Fi® SensorTag today Get data from 10 sensors to the cloud in minutes Connect to the cloud in minutes with this ready-to-use demo platform Run applications on 2 AAA batteries Learn more
  42. 1 like
    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
  43. 1 like
    I will add that, I do not know of the others, they look like they'd be good reads, but the Beej guide to( anything ) is not what I'd consider a good "book". I've read through several of his online books, relating to interprocess communications, and networking. Neither of those two topics were very well written, and the content is old. e.g. the content is outdated. I will also add that LDD( Linux Device drivers ) while in hard copy format is a paid book. The author felt compelled to make the book available free online: http://www.xml.com/ldd/chapter/book/ The third edition I believe is also available for free online here: https://lwn.net/Kernel/LDD3/. free electrons also seems to have a single pdf file version, but i have not looked into it. Anyway LDD2 is a very good book if you need to understand Linux device driver, I paid for a hard copy and have not regretted it. For C++, these are supposed to be pretty good as well: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html, but they are dated.
  44. 1 like
    Energia and Arduino users eventually get to the point where they need more direct access to the hardware if they take on more complicated projects. In addition to the direct access of registers using the provided header files, TI offers DriverLib which contains abstractions for accessing the peripherals. To better understand the peripherals, and to check out DriverLib, I recently created 20+ short examples for my own edification. All of them were written for the MSP430F5529 LaunchPad and most of the peripherals are covered. In some cases pushbuttons, LEDs, resistors, potentiometer, etc. are required that you probably have on hand. A multimeter is required, and in some cases an oscilloscope and logic analyzer are instructive but not necessary. DriverLib SPI Example 13A_USCI_B_SPI_MCP41010_digiPot All of the examples are located here: https://github.com/fmilburn3/MSP430F5529_driverlib_examples It is necessary to have some understanding of the registers before using DriverLib because the DriverLib documentation doesn't describe how the peripherals and their registers work. The documentation for registers is located in the User