Believe it or not, there are variants out there that come with only one serial block and you are out of luck if your application needs it to communicate with another device. The idea is to write these debug messages to a predefined location in the RAM which the debugger can access anyway. His application polls a certain area of the memory and when it finds valid information, it reads the data and spits it out into a dedicated window.
The code is available on GitHub for you to check out if you are working the EFM8 and need a helping hand. The idea is quite simple and can be ported to other controllers in a multitude of ways like the MSP perhaps. For those of you who like the Teensy, you might want to take a look at adding debugger support to the Teensy 3. Oh God I wish that I had half of this when I was a kid.
There are so so many things going on and being done. It is so so COOL. I love it. Make your own memory mapped peripherals… the debugger after-all is a big super complicated full memory mapped device. For example, you can use this mechanism to enable functions in the C library, such as printf and scanfto use the screen and keyboard of the host instead of having a screen and keyboard on the target system.
Nordic, Renesas, apparently even some AVRs have something similar.
Worth checking out the vendor tooling before starting to write it from scratch. ARM semihosting is like a syscall mechanism, with a software breakpoint instruction replacing the software interrupt and a break triggered handler on the debugger end replacing the syscall ISR. Yes, I am aware of that — but it needs custom debugger support whereas the semi-hosting is standard.
Semihosting sucks as it interrupts the core while waiting for the debugger to catch up. Memory mapped trace is much better as you can execute the tracing code freely without being interrupted.
I use it very often — more convenient than running yet another cable to the target system and much faster than UART. Segger RTT. Simplicity Studio, their IDE, is fantastic with good code-gen tools built-in.It is recommended to download any files or other content you may need that are hosted on processors.
The site is now set to read only. The tool includes a USB-powered emulator to program and debug your application in-system and two 2. Projects may be developed and instantly deployed using the included battery expansion board and AAA batteries.
All the required software is included such as a complete Integrated Development Environment and SimpliciTIa propriety low-power star network stack, enabling robust wireless networks out of the box.
The emulator interface can be used to download and debug your target applications, and can transmit serial data to your PC while in or out of a debug session.
It features a slightly enhanced GUI, logging, and graphing capabilities. It's compatible for with the eZRF tool and includes the source code for user modification.
This simple project puts the entire system in an ultra-low power standby mode. This is a useful project to debug your power supply setup or to demonstrate ultra-low power consumption. As a first troubleshooting step, please uninstall and reinstall the application UART driver, as shown in the below image file. If you continue to see the same error please compare your device manager with Human Interface Devices and Ports entries expanded with the below image.
If they differ with the circled entries your problem is likely caused by driver issues. In an effort to better understand your issue, please consider these brief questions regarding your setup. It's not possible. The firmware for the eZ Emulator is not officially released by TI, but unsupported versions are available online.
Instructions on downloading and upgrading the emulator firmware are available online. This degradation could be a combination of degradation in output power, sensitivity, antenna gain, or just a degradation in one of them.
The environment is very important walls, floors, encapsulation, antenna orientation, What you need to keep in mind is that the antenna orientation and the antenna height above ground is very important. Thus, you need to make sure you always use the same heigth above ground. The antenna should be in the direction with the highest gain you get this from the radiation pattern.
Live Chat for Classrooms
If you want to state the typical approximate LOS, you need to measure with units that have the same sensitivity and output power as stated in the product data sheet. From Texas Instruments Wiki.
Jump to: navigationsearch. Navigation menu Personal tools Log in Request account. Namespaces Page Discussion. Views Read View source View history. This page was last edited on 7 Augustat The humble serial printf never seems to die.
That and the blinking LED routine gets old. For those familiar with the MSP Launchpad, this was a common problem and opossum came up with his popular Tiny Printf code. Fortunately for us, there is the mighty MSP now. The below picture shows you where the two jumpers are placed on the Launchpad, inside the orange circle. They should be on by default. If you use printf in your code without setting it up for channeling it through the UART, the strings will be viewable on the debug console of the IDE.
To do this, create a new file printfOveride. Printf is resource heavy, which means we also have to allocate some heap space for it. Enjoy printing over the serial port! If you liked this writeup, please subscribe in the box on the right sidebar. A nice writeup. The baud rate should be set at Great sample code.
It works well for me. Have you tried it in that scenario? Wen i dowloaded the code from git hub i am unable to find driverlib. It shows error without tat in ccs. Good article! Out of interest, what are the relative advantages and disadvantages of routing printf through UART rather than the CIO that prints to the debug console?
For devices out in the field, this comes in handy.
Sample Project Time for the sample project.For this purpose I will replace the default microcontroller that comes with the board with the MSPG UART communication can be useful when dealing with sensors: as a basic example, we could send data taken from a temperature sensor with the internal ADC to a computer, using a cheap bluetooth module connected to the UART pins on the Launchpad. In this tutorial we will see a program that waits to receive a certain character from the UART port and then transmit a response to the other device.
The communication happens in full-duplex at BPS, 8 bits of data with no parity and 1 stop bit. Enough chatter, let's start with the tutorial already! The first statements will be familiar to you:. As always, we include the header file for the microcontroller and then define some macros for better reading. Then we declare an array of chars a simple C string that will store our response to the other terminal. At last we declare a counter variable that will help us later when sending the response.
Here's the main routine: its the first line will disable the Watchdog timer. After that, we have three lines of code that will calibrate and set the internal oscillator at 1 MHz. Line 3 and 4 make sure that P1.
The last two lines simply set up the on-board LEDs. Here's the good stuff. For obvious reasons, we can't even select 9 because otherwise the baud rate will be under bps. This register in fact is in control of the "modulation": it will select the divider between 8 and 9, therefore switching baud rate during communication to contain the accumulated error. The modulator will work roughly like this:. As you can see from the device user guide at pagethere is a table that shows which dividers to use given a certain SMCLK frequency and a desired baud rate, with the expected minimum and maximum error rates for transmit and receive.
The modulation value of 5 has been taken as well from this table. With the last to lines we enable the UART module and the interrupt for the "receive event", that we will analyze soon.
The last lines of the main routine will put the microcontroller in a low-power mode and enable the global interrupt flag, as well as entering an infinite loop.
Here's the interrupt routine that will be executed when we receive something. If you have followed the tutorial series, its declaration should not be unknown to you, otherwise go back to the interrupts tutorial.
First we light up a led that will show us that we have received a byte. If the byte stored is an "a" we reset the counter and enable the transmitter interrupt that will handle the sending of the response.
This register contains the data to send. Finally we turn off the led. As we did before, we turn on a led that will tell us that we are transmitting something. Then we load the next character to send in the buffer. If there are still characters to send in the response string, we will just turn off the led and wait for the end of transmission of the current byte.
When the character is sent by the UART module, the TX interrupt will happen again and the routine will be executed for the next character. If we realize that we have reached the end of the response string array using the sizeof statement that returns how many bytes we have in the arraywe disable the TX interrupt and come back to the main cycle.
This is the last episode in our little journey with the Launchpad. I hope you have enjoyed it and that you have acquired valuable knowledge to work with the MSP microcontrollers. To post reply to a comment, click on the 'reply' button attached to each comment.This is very cool.
Even better:. Not that I am using any BoosterPacks, but that is very cool that we can keep serial writes to a computer separate from other things the MCU might be doing. On my end, the printf and adc14 examples are working individually. I changed the baud rate to and printed out an unsigned 32 bit counter to PuTTy just to get an idea of how much data I could get through. I set the debug mode to release and set the optimizer to its max level. The next step is to integrate the adc14 and printf codes.
Like Like. But with both Chrome and Firefox the code examples above are malformed, with HTML escape sequences and truncated lines. For example in the main.Understanding UART
Before I spend a lot of time divining what the missing text should be could you perhaps correct this? Hello Pete. Sorry about that, not sure why but I have run into formatting issues whenever I copy paste in code.
If you intend to work with Code Composer Studio, you might want to just start with the DriverLib examples. Thanks for the quick response. You are commenting using your WordPress. You are commenting using your Google account. You are commenting using your Twitter account. You are commenting using your Facebook account. Notify me of new comments via email. Notify me of new posts via email. Search for:. It will easily support Hz. Share this: Twitter Facebook. Like this: Like Loading Nice article and thanks for linking to us.
You still need to configure the UART module of the microcontroller to work. Take a look at the UART chapter in my tutorial:. Great stuff! Your MSP tutorial really has helped me.
It does a great job putting everything in one place for a newbie like myself…. Jason, I have used I2C for a few things.
Make sure to look at the Errata. Aside from this, do you have access to a logic analyzer or oscilloscope? A possible solution to your problem is to connect two I2C modules on the MSP together, with one of them simulating the device.
You can then write a driver to control the Master and see whether it works.
Keep up the good work. Do you have an amazon wish list or similar, else I would suggest you to make one. I think your tutorial was the easiest to follow tutorial and most informative I have read about the MSP I have a question though, about UART. I am using Linux Mint, and have installed the msp packages using dpkg. I got that all working, and I can program the mspg Because of this, the UART registers are not defined and not available.
I am using the mspf Do I need to add additional files to define these variables? Hi Issac, Can you point out which variables are not defined? You might be missing things declared in the main file. Sorry for the delay, These are the variables that were undefined: Building configuration: Tut — Debug Updating build tree… main.
Tejas, What is the issue? First you need to get the I2C running. After that you start using the sensor for your application. This one has a nice interrupt based design and shows you how to access the RX and TX parts. This page contains all the necessary information to use the I2C module. I recommend that you use the defines provided by the compiler to make the code more readable.
For example, BIT0 can be used to replace 0x FOr a list of them look at mspx16x. I read your book and have a better understanding especially the low level explanation of the code. I have recommended your book to my colleagues. I am having an issue when executing the UART code as explained in your book.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. To do so, I use Serial. Or would it be better to rewire my Bluetooth chip BlueGiga wt32 to some other pins? How does it know which UART to print to? Still, a lead. Now, this may sound like a really noob question, but where is my Serial1?? Is it somewhere on my pinout? The corresponding page in Energia manual is just a stub.
I suspect that it is assigned in this particular example, only I don't see the assignment in the code; also, I suspect that this is the backchannel, unless the switch is turned. So at least I probably have a software solution. Of course, I'd prefer hardware. The manual for the launchboard says the hardware supports up to 4 serial ports, but how? Where are the pins? If you dont need those uart pins to talk to the host you can remove the jumpers on that board that connect rxd and txd and then connect those to your bluetooth module.
Learn more. Ask Question. Asked 6 years ago. Active 3 years, 5 months ago.