TI Robotic Systems Learning Kit (TI-RSLK) - Review

Table of contents

RoadTest: TI Robotic Systems Learning Kit (TI-RSLK)

Author: kas.lewis

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Robot Friends

What were the biggest problems encountered?: Unclear instructions and contradictory or misaligned information between the various sources.

Detailed Review:



This is not my final review, I have not been feeling well and since a review was due a while ago I thought I owed it to TI, Randy and the community to post at least my notes written while working through the kit. These are not my full notes as I hand write comments in the manual as well as I work through it. I hope this at least gives some impression of how I feel about the kits as well as maybe how I approach working through a Roadtest review.




P.s I will add a Note when I update this with a easier to read and follow review.


Lab 2

This lab was simple but informative. The basic circuits that needed to be built where easy to do and follow. The one portion uses the breadboard with a capacitor, this was not done due to the perceived issue of capacitance in the breadboard itself. The concept of how a capacitor works was not well explained. Talking with colleague, he felt some of the magic of how AC passes through a capacitor was missing. I guess there is a requirement for 2 years of electrical engineering background


Lab 3

ASM Lab - This lab was intuitive and useful. There were things that were not well explained (Loading address than value vs loading value) but this helped you earn about debugging. It also forced you to look into the ASM manual.


The Videos were helpful in working through the labs and understanding what was needed to complete the labs.


Time to complete the lab could be about an hour with most of the time going to understanding the two sample projects. Once this was done the other issue was finding what you needed in the user manual. I believe it took me closer to three hours because I spent a great deal of time working through the sampe labs and then finding what I needed in the ASM manual.


Lab 4

Lab four is uncreal in its instruction, while lack of clear instructions can be helpful in this case it leads to too much ambiguity. The center sensor will offer read more than 800mm yet this is supposed to be an error… Also with the idea to start with errors and then dangerous and then the rest seems somewhat non intuitive when the return value is preset to return that here is an error.


Also with the enums used it requires that 7 danger cases be checked instead of three separate cases that can then return only those of which are positive and then combined to make up the 7 possible cases. (result = result + LeftTooClose; //preferd, instead of result = RightTooClose+ LeftTooClose;)


Getting LOTS of incorrect answers because the boundaries are not well defined (<, <=, >, >=) Sides are 212-354, inclusive or not… Center is 150 -600, inclusive or not… ??


Small nuances made this lab take A LOT longer than it needed too.


Lab 5

BOM is inaccurate and missing components

Incorrectly labeled parts on the list

Kit didn't have the nylon screws

Some of the soldering is beyond the abilities of general students leading to potential board damage

Instructions are inconsistent between video and manual (SLP L= R) should also be cut

Labels in pictures are cut off making the instructions more complex to follow

Pictures are crowded making it hard to get useful information

Drill holes are incorrectly sized calling for ¼” holes when screw threads are 2.3mm (0.0905”)

Instructions explain to follow charge instructions from charger but no charger is provided

Order of instructions could lead to students following exactly along to damage their robots


Lab 6

After assembling in Lab 5 we need to take things apart to be able to connect the line sensor, would have been better to add a header in lab 5 to be used in this lab to prevent the need for disassembly and then reassembly…

No clear information how the sensor is connected to the robot even from the picture provided

Again the bom is missing the


Not clear what functions need to be written when and under what section….

Capacitor discharge does not behave at all as the notes show

Main file has main, main2 and program6_1, only after finishing does it explain that maybe I should have used 6_1 and not main….

Some functions an outline exists (reflectance_read) but notes say create a new C function…

Reference.h is not visible from CCS… I needed to do a search in the directory to get it

We are told to initialize the clock assumably in the Reflectance.c function… this is clearly not correct (page 75 step 1)

Not clear how the sensor is mounted… no nylon standoff… no BOM for this or position

Would be better if the functions had a section number attached…. 6.4.3 or 6.4.2 etc

Had issue getting line sensor to respond correctly…. Will try rewiring

Overall so far I have found this to be the most complex and hard to follow module, possibly because of week vacation and looking at another kit in the middle


Under required instruments was listed logic analyzer… but this was not used nore would a 4 channel help much, 8 would be better and still uncreal where this would be used.


Lab 7

Lecture slides using the table instead of a graph, the columns are not labeled leading to misunderstanding or s lack of understanding as to what the to binary values mean (00, 01, 10, 11) It turns out that they represent cars present in each direction.


The first lecture video has distractions in the background, the computer is pinging, windows are opening and there seems to be construction in the background….

Could be from personal recordings. Check actual video for artifacts


Time for running the FSM changes from the middle of the lecture to the end. Initaly its stated to run the FSM at 50 ms and the slides and “handwritten notes” suggest this. Later the Slides suggest 10ms


Demo (PointerTrafficFSM) needs external components, but nothing is said about connections or what is needed for this. The parts are also not provided making the use of this demo not practical.


Demo (LineFollowFSM) appears to be exactly the same as the lab, then why add it as a separate project?


This lab can be confusing because negative logic is used and so when the input is stated at 0x11 it means both buttons are pressed but really the input is 0x00.


Overall this lab is easier to follow than Lab 6, the steps make sense and follow one to the next. The only issue that seems to be recurring is that the lab is finished before getting to the lab section. This is because its not clear when the action starts and when it's just providing information. In this lab I completed everything by following the prerequisites and then got to the hands on section but I had already completed the lab.


Lab 8

Lecture slides label the cathode with a “k” instead of a c… The anode is correctly labeled with an “a”


Labs flow easily till section 8.3.3. At this point you are asked to write a function but there is no outline (Signature) but the program outline that should be run Program8_4 already has a Clock_Delay1ms() that is being called… This is confusing regarding what we should do… Just run it or write our own function ??


Lab 9

Lab video (2) mentions the use of 33k Ohm resistor while the manual mentions a 470 Ohm resistor...


Mislabeling is abound in this lab.


This lab flows relatively nicely although there is still some confusion as to what needs to be filled ina dwhat does not. Also the potential to copy code from the demo code is large. By simply copying and pasting code most of the lab can be completed without much thought. This point also means the main objective, learning and understanding Systick can easily be negated by simply copying and pasting code.



RETURN TO THE LAST PART OF THIS LAB, I could not get the waveforms or the relationship DAC Output (Voltage) and Duty Cycle.

Lab 10

Lecture I - 9:38, the bit banding equation does not yield the same results for me…

0x42000000 + 32 * 0x4C03 + 4 * 2 = 0x42098068 (it does work out, note the 32 is decimal not hex)


Interrupt Program Status Register (IPSR)


Bit banding:

#define LED (*((volatile uint8_t *)(0x42098040)) <- used to point to a specific pin within a port


Lab Part One

The instructions for calling functions with in a ISR are not congruent with general programing practices. It's also unclear why you would read a value in a function called from the ISR and then store that value in a global variable in the ISR and not in that other function… Why pass the value around when it will just be stored in a global anyways.


Code for part one should be written in file Reflectance.c, there is however no mention of this in the lab notes, this leads to wasted time trying to understand why some functions have already been defined….


Time wasted trying to figure out why the code would not compile. Leading to frustration causing a loss of ability to focus on the problem intended to be solved.


Note: on page 5, use P8.7-P8.3 and P8.0 if will be doing WiFi lab and use P4.7 - P4.2 if doing edge trigger lab. What if the plan is to do both, is there no port not used by WiFi and still has the edge trigger available (Ports 1 - 6 are all triggerable, but nothing on P2, P3 or P5 is available ?). Possibly some bad choices made for pin selections causing this issue.


Again we have been asked to write a function Bump_Init() with no mention that this has already been declared in a file called bump.c. This leaves the student wondering why there are two declarations of the samne function


Bump_Read() is said in the notes to return an 8 bit number and that an 8 bit number should be stored when doing the dump. The issue here is that there are only 6 bump sensors and as such there can only be at most a 6 bit number. Added to this, the c file with the actual function declaration mentions that a 6 bit number should be returned.


The pin selection for the bump sensors is a bit inconsistent as seen from various sections mentioned below:

Notes say to use pins P8.7-P8.3, P8.0 or P4.7-P4.2 (positive or negative logic). The lab.c file mentions to use negative logic on P8.7-P8.3, P8.0.

Bump.h ~ P8.7-P8.3, P8.0 OR P4.7-P4.5,P4.3,P4.2,P4.0

Bump.c ~ Negative logic bump sensors P4.7-4.5, P4.3, P4.2, P4.0


Lack of concrete bit-banding example, calculations are there but cant find where to get the needed info in the datasheet and therefore could not duplicate the feature.


What goes under each of these functions:

Debug_Init(void), Debug_Dump(uint8_t x, uint8_t y), Debug_FlashInit(void), Debug_FlashRecord(uint16_t *pt) - With no information in the lab manual and no outline here it's not clear what is expected in each function.


Again if you follow the manual you should complete the ab before getting to the real hands on portion. If you do wait you can get confused because you forgot that the information needed was in the previous section. Over all this method of outline that's more than an outline and a hands on portion that's less than what you need leads to a lot of confusion and a decent amount of wasted time.


No function for SysTick_Init() or Interrupts_Init()... what sets these up ??


Lab video shows holding down RST and then powering up to clear ROM memory… This does not appear to be part of the lab… What is the cause of the miss match. This is mentioned in the video s a REQUIREMENT of the lab…


Possibly show us how to debug using battery power… Remove jumpers or something ??



RETURN TO THE LAST PART OF THIS LAB!!! Did not implement writes to ROM as the process was taking to long. Also did not implement a RST + SW1 Flash erase as this wasn't in the Lab ,manual. Lastly Interrupts have not been enabled as this is not mentioned anywhere and this needs to be done on the side with my own time and energy invested.


Lab 11

Video mentions that he LCD is included in the kit yet this is not the case, even with the advanced kit.


There is no mention as to hoe the function Nokia5110_setCursor() works and no easy to find information from the datasheet. Therefore it’s unclear how this speeds up the write time for just updating the distance values.


Figures in this section are incorrectly labeled or not labeled at all. While not hard to figure out what is intended this oversight leads to the overall feeling that this course has been put together quickly by various people with not much attention to detail and leaves the student feeling frustrated.


This lab could not be done in actuality due to a lack of hardware provided. While this may have been explained somewhere at the beginning


Prerequisite for WiFI lab, as well as referenced in a number of other labs as an addition or a tool to be used for debugging… This is not only unprofessional but also lacks insight into its usefulness for the student.


Preface mentions it explicitly (page 4), flow diagram on page 6 suggest that LCD is not a prerequisite for WiFI as the WiFi module says it is…


Shows how the kit was assembled in a haphazard way, labs and lectures as well as supplied materials don't necessarily match up as might be expected.


Lab 12

Complexity of darlington transistors are somewhat explained yet caps are explained in depth in lab 3(?) as are resistors. The level of explanation is not aimed at a set level, it keeps fluctuating .


Note animations greatly lag the lecture, leading to confusion in the lecure and missing the understandings.


2:27 in the video mentions current is complex issue and will be discussed later on… but its not that complex as current in the motor in constant as long as the forward voltage is constant. So the power in the motor during one period CAN be calculated.


Removing the motor control board is complex, wit the need to remove the battery springs etc through the chassis. It would have been a lot easier to have done this way back in the original lab assembly.


No clear instructions on how to mount the encoders. Also the headers are not specified what holes to use or how to mount the right angle headers in the encoder pcb. Possibly this is mentioned in the Pololu manual of which I have not seen or been referenced to.


No instruction or mention to install the rear (not sure it should be in the rear) wheel.


Since this lab has a large hardware component (building up the robot) it would be helpful to have checklist to work through to ensure everything is done correctly and in the right order.


Images are constantly blurry, low quality due to resolution, situational lighting or angle of picture.


Two parts on the BOM are listed but unclear as to where they are to be used. 0.187in 4-40 metal nut (2) and 0.5in 4-40 Nylon machine screw (6). The last one is not part of the kit. There are no nylon screws only metal…


No mention of Lab12_motors or where the code should be written, that it should be in MotorSimple.c


There is no information regarding PH, should it be high for forward motion or should it be low. The Pololu product sheet has no information regarding this, its just a picture and a schematic.


Not an Issue (time scale was incorrect) Issues using the provided SysTick, when not running in step mode the Systick keep freezing at “while(( SysTick->CTRL&0x00010000) == 0){};” have not looked at his exact code in depth but this is always where the code stops. Trying to debug why reveals no results.


Not an issue (rework and understand) If SysTick = 0xF617A5 and were looking for delay of 0x12C0 then we get an issue.

(0xF617A5 - 0x12C0) & 0xFFFFFF = 0xF604E5 which is > 0x12C0 so the system does not register


Lab 13

Terminology is confusing, interrupt enable - arm, interrupt flag - trigger


Scaling and how its done (the various registers) are glossed over quickly. There is no explanation that there are multiple prescaling registers


For someone who hasn't used a uC before this would very confusing and lacking in genuine explanations. The fast pace of the slides do not help explain anything either. There is a decent amount of hand waving but no in depth explanations.


Again completing the lab is easy to fudge your way through without any real understanding. This gives a false sense of understanding and completion when in fact there is no understanding and completion is honestly done by the sample code.


Lab manual mentions lab 10 as a prerequisite because it deals with SysTick periodic interrupts. The issue is that interrupts have not been dealt with as of yet. Therefore the use of lab 10 for its information on interrupts is not helpful or accurate.


Notes help to confuse by using the term SysTick ISR, we did not directly use the ISR like you might in an MSP430. Here you use the SysTick_Handler(). While these are the same thing the name can lead to confusion.


Note on page 148 states that I can’t run PeriodicTimerA0Ints on the robot because that timer is need by the robot… If I’m running this demo code I will not be running the robot code, so what is this note really about ? Something is not clear here. Should the user always have a second MSP432 around ?


First goal does not explain which timer should be used Timer_A0/1 (page 149)


Starter project PeriodicTimerA0Ints is not available in the project explorer… does it even exist ??


Explanation of where to find data to set pwm pins… how to read data sheets..


No clear information regarding the registers to be used and how to set them up. Yes you could copy from demo code, but that's not learning.


Code examples are more confusing than helpful… Sets two submodules not just one or so it seams...


TIMER_A0->CCR[0] is not explained, there is the assumption that the [0] is refering to bit 0 in that regeister but then,


  TIMER_A0->CCTL[1] = 0x0040;      // CCR1 toggle/reset

  TIMER_A0->CCR[1] = duty1;        // CCR1 duty cycle is duty1/period

  TIMER_A0->CCTL[2] = 0x0040;      // CCR2 toggle/reset

  TIMER_A0->CCR[2] = duty2;        // CCR2 duty cycle is duty2/period


Makes it seem that [1] and [2] are referring to the different submodules and not the bits.


What is this code used for, why do we need to set submodule 0 when we are not using it. It appears this is setting the period but there is no explanation as to why submodule zero sets the period (notes Up/Down Mode)

  TIMER_A0->CCTL[0] = 0x0080;      // CCI0 toggle

  TIMER_A0->CCR[0] = 1500;       // Period is 2*period*8*83.33ns is 1.333*period


Using the setup of timers division recommended I could not get the values decided. If the max duty value is 14999 then the period should be 15000 but with the CTL set to 0x2F0 this will not work. We need a value of 0x2B0 or 0x2D0. This is not well explained or shown. This took time to work out but did not increase learning, only frustration.


Mismatch between video and actual file as can be seen below…




There is no NVIC_IPRS or Priority bits to be selected…


Can’t find datasheet information regarding setting these...

    NVIC->IP[3] = (NVIC->IP[3]&0xFFFFFF00)|0x00000040; // priority 2

    NVIC->ISER[0] = 0x00000400;   // enable interrupt 12 in NVIC


Looks like the goal here is to just copy the slides but to not really understand how to do this for yourself… How would one use this on a separate project without an instructor feeding the information


Toggling of the LEDs is in correct P2.1 is the green but the blue is toggles (P2.2).


Like past labs, this one could be done quickly be simply using the copy paste fix method, but resulted in little learning. It could also be done properly but with much more work. The second method is MUCH harder and requires an incredibly large input of time. It also leads to dead end when you try find answers such as how and where to set the IP as well as the ISER.


There is a file PWM.c that has mentioned that some sections should be completed as part of Lab 13. However, lab 13 has no mention of this file of its functions in what needs to be completed. As such when you arrive at Lab 14 or other later labs and these functions may be used (it does not appear to be so but it's unclear) there is no code in the functions that is executed because at no point was there information explaining that this needs to be done.

  • Open call hierarchy shows that these functions are only used by PWMSine.c program anits submodules. This leaves the question why do some functions say “write this as part of Lab 13”  if they are never used and why is this file referenced in a number of subsequent programs if it is fact not used.

Lab 14

Video once again has a delay in what is written by John (you can hear it) and when it shows up by the video editor.


The electrical circuit shown to connect the 6 bump sensors differs from that mentioned in bump.c and bump.h


There is little explanation on how to write the high level strategy loop… while having to think it through is great this course ems lopsided in that some aspects require lots of work to get through while others are simply cut and paste.


From reading the example code (EdgeInterrupt.c) it's unclear how to clear the Interrupt flags. In that code the IV register is read and the value used. In our case the value does not necessarily need to be used, as such how would the flag be reset without needing to be read.


Over all this lab was relatively easy to complete. There wa still no information on where to get the information to setup the NVIC registers (IP and ISER) and what values they should be set to. Also once this information was obtained (were to look) it was not clear how to know what interrupt number was being used. While it could be inferred it was not clear from anyone location.


Lab 15

In this lab we find yourself trying to squeeze the IR sensor brackets under the bump sensors or, we can remove them, mount the IR sensors and start over. The idea of back and forth gets frustrating and opens the labs for errors.


When you get to mounting the IR sensors, it appears there are not enough screws in the kit to accomplish this. There are a total of 22 screws and 20 nuts included with the kit (not including those that come with other parts such as the Motor Driver board, 2 screws and 2 nuts). Once we have reached this lab, 22 screws have been used and 14 nuts, this means we are 6 screws, the ones needed to mount the IR brackets, short.


Again there is no clear information as to where the IR sensors should be mounted. This leads to the guessing game that inevitably leads to the operation being done multiple times until a suitable solution is achieved, wasting lots of valuable time.


Sadly Lab 14 Page 159 has the best image of how to mount the IR sensors while there is no information at all in lab 15.


The BOM for this lab is missing arts and inconsistent with previous labs. Previously even parts that seemed obvious (the chassis, the motor driver, etc.) were included in the lab BOM. In this lab not only are these missing but some parts that are needed, screws and nuts to mount the brackets to the chassis are not included.


The Screws needed to mount the IR sensor brackets to the chassis are missing from the kit. More likely is that the 8 nylon screws that should have been supplied and used in previous labs where not available and as such these metal machine screws were used. Therefore at arrival of this lab the user finds that they are short the screws needed to mount the brackets to the chassis


The sample code ADCSWTrigger.c uses code that will be written in lab 15, how then can this be used as a demo when it has not yet been completed…. Non issue, code that needs completion is not called by demo code.


Once gain functions need to be completed (LeftConvert, CenterConvert and RightConvert) but there is no information as to where these function outlines are to be found.


There is talk of building a low pass filter. While some detail is given there is not enough to either know what should be done or where to look for more information. There is mention of needing an Op-amp but no explanation as to why, this is especially confusing since the filters built in lab 9 only used a capacitor and a resistor (note: I didn’t get it to work as it should have)

We are instructed to use P4.7 to test the ADC yet we have already connected the bump sensor to this pin…


Also there is mention to connect to putty but no mention of how this is done, do we need to use the backchannel or someothet method, what is the baud rate and other settings. If this is a course for beginners this should be explained. This information can be found in Lab 20… if the student knows what they are looking for. If they remember it can also be found way back in lab 1…


Using this demo (on black board) the output format in the terminal is not well done. Looking at the code this is because there is only a newline and no return. This has the effect of creating a step effect with the output data. Adding a “/r” or changing putty to “implicit CR every LF” resolves this issue.


The output from the terminal is not well explained, what is the information in the data and count columns. With thinking about it we can see the data are the x-coordinate values and the count would be the y-coordinate values.  



FIR_Digital_LowPassFilter.xls this file does not exist in the downloaded zip file. Also the file that does exist (incase its what we should be looking at) IRDistance does not have any values highlighted in yellow or any of the other things mentions that the other file should have.


Program 15.1 does what ?? it's supposed to be a demo of something but not much explains what I’m supposed to do with it… Where can i see the output ? It's supposed to be like ADCSWTrigger but using channel 12… but I still don’t see an output… Maybe use watch window but no information to do so or what  variables should be watched. I ended watching ADCvalue and LPFSum.


No mention in the experiment part or the setup part of the lab that the functions LeftConvert() CenterConvert() and RightConvert() need to be filled in. It is only mentioned in the outline of the lab, under design requirements that these functions need to be done. In previous labs if you followed this section you missed some aspects that were explained later on or you would complete the lab before reaching the actual hands on sections.


The lab manual talks about celebrating the sensors but gives no usable information on how this is to be done. It also provides an equation X = A / (n + B) of which only X and n are explained. A and B are simply mentioned as coefficients of celebration with no information as to how to derive them.


Need to do empirical testing where we measure at least to distances for each sensor to determine the values of A and B.

X = A / (n + B)

X(n + B) = A

Xn + XB = A

Xn = A / XB <- of which both X and n and deterministic, using two measurements both A and B can be solved for.


Section 15.4.6 does not mention the functions that need to be written by name, only that calibration needs to be done. There is an excel sheet IRDistance.xmls but there is no information as to how it should or can be used.


Working through the code you find a decent number of orphaned functions that help to confuse the student working through the code.


The function:

void LPF_Init2(uint32_t initial, uint32_t size){ int i;

  if(size>512) size=512; // max

Is called three times, each having a different max 512 or 1024 but because the 512 is called after the 1024 it will always be capped at 512. Using 1024 will cause the system to enter a default handler “void Default_Handler(void)” probably due to an overrun or carry error.


Found the IR sensors to be very noisy to the extent that the various between readings even with the averaging didn't keep them within a tolerable amount of each other.


Lab 16

In the first video we are introduced as to how we should be using the datasheet to reverse engineer the code provided. Sadly this was a skill we were asked to use back in lab 15.


Why are we explaining resolution now when we needed it in lab 15 ADCs.


We are also getting an explanation of TAx.y that x if the module and y is the submodule. Again this was needed many labs ago, why bring it up here.


Lab manual mentions that the starter code cannot be run on the LP because that timer is already being used. 1) what is the point if we cant run it 2) why can't it be run if were not running the robot code at that time. Section 16.4.1 then recommends running the code. Can it or can this code not be run ?


BOM mentions nylon screws once again. These are not part of the kit.


BOM is not consistent across labs. This lab mentions more of what is already build than lab 15.


Goals in lab 15 where in bold so it was easy to know where and what each goal was, this is not so in this lab. The amount of inconsistency between labs, formatting, layout, presentation is astounding


Image included “motor driver header location suggestion” would lead to incorrect placement of headers. If the “low profile female headers” were to be placed as recommended the motors would not fit in the robot. The 6 pin redbox and the 2 pin yellow box should be switched to allow for proper operation. Placement like this could prevent proper seating of the motor header into the control board headers.




Working through this lab there is once again difficulty finding the functions that need to be filled in. There is no information as to which file those functions are to be found.


There is also the easy to which code can be copied across from the demo to the project. While you can work through this to understand what should be done, in a class/lab environment where time is of the essence the average student would take the easy route and just get the lab completed. For the self learner this is helpful because they want to put in the effort but for the student no so much


More information regarding setting the interrupt priority and the interrupt enable,  where the regestarts are found and how to set them correctly 


Page 184, the demo code in the blue box has lines of code making the flow of the code not work. There is a missing start of a function.


Would be helpful if an outline of what functions need to be written in each lab and where those functions are to be found. This would reduce confusion and ambiguity for the average student.


The attached excel file (Tachometer.xls) should have its final units as RPM and not “step/second”. Just by working out the units at they have done would give this.


16.4.3 takes us from following small incremental steps to having the student take a leap. We are now asked to write some functions but no outline of the function is given in the project or in the manual. We are then asked to write a test program. We are also asked to include data logging and bumper interrupts. From previously working on bitesize tasks to writing a decent amount of code this is asking a lot from a student in a time frame that would have been based on previous labs.


Lab 17

Prerequisites for this lab are incorrectly listed. Again there is inconsistency and lack of attention to details in preparing this document and overall course ware.


The explanation of control systems and the variables involved is very high level. This is contradiction to the material so far. While before the content seemed aimed at lower level students we have suddenly stepped up the level to that of 3rd or 4th year students ho have done some control theory.

General Notes

CORTEX_M4_0: GEL Output: Memory Map Initialization Complete

CORTEX_M4_0: GEL Output: Halting Watchdog Timer

CORTEX_M4_0: WARNING   : On MSP432P401R hitting a breakpoint cannot be detected by the debugger when the device is in low power mode.

                         Click the pause button during debug to check if the device is held at the breakpoint.

CORTEX_M4_0: Your pre-production XMS432P401R silicon is no longer supported.

CORTEX_M4_0: While XMS silicon development is possible today, you are recommended to order production material at www.ti.com/product/MSP432P401R to gain access to new silicon features outlined www.ti.com/lit/pdf/slaa700.

CORTEX_M4_0: Pre-production silicon support will be phased out in the future, more details available here www.ti.com/XMS432Support.


Mounting the line sensor: when mounted correctly using what is assumed to be the correct hardware _ ½ inch standoffs the sensor is well above the optimum 3mm from the sensing surface.


Its nice that when you write a new function that's more “correct” than a past one, you don't overwrite the old one but instead create a new function. This allows for better review of old methods and how they evolved over the course.



Should go through all modules and check all pin mappings and fill in a chart. It should be possible to use BLE/WiFi and still have the bump sensors work on an edge triggered interrupt. This really is something that should have been done by the course creators.

Side Question, What is set/clear interrupt pending registers used for and how are they used. Same with active bit register

Lab 15 - Calibrate distance measurements done using the IR sensor




  • Agree the message is with the black PCBs - I did not get the message with the production red Board supplied in the kit.

  • Good review.


    I actually provided a bunch of feedback both on the TI Community site and via the Feedback link for the videos.  There were instances where the transcripts were mixed up and other inconsistencies that were encountered while viewing the vids.  Having an option to speed them up would be nice.


    The good thing about these RoadTest reviews is that it provides the vendor with real world feedback regarding their product.  I believe the folks at TI are looking at these and I am certain they are taking note to make the necessary changes to the program.


    Regarding the "Your pre-production XMS432P401R" message you seen during debugging, I'll have to go back and see if these occur in my config, but do remember seeing similar messages with the original MSP432 Black Board. I don't remember seeing these with the Red board but I may not have been looking or became immune to them.

  • Thanks for publishing your preliminary review as even in raw form there is much to be learned from it.


    I encountered some of the same frustrations.  It does not appear from some errors that the course was run through a test group first and feedback incorporated.   I am sure they are intentionally wanting students to work through some of the problems and in a university course with a teaching assistant and lab instructor, plus interactions with other students, these matters could be learning opportunities. But for a person working through new material by themselves it can be frustrating as it takes time to determine the problem or missing information is not of your own making. The next version of the kit should address the sensor mounting hardware deficiencies which we all seemed to experience.


    Nonetheless much of the material available these days seems to be cookbook stuff with little attempt to give a deeper understanding.  On that matter I give the course high marks although as you point out it is inconsistent in places.  I still recommend it as the material is much more comprehensive and educational than anything else I have seen. 

  • a K for cathode is not uncommon in schematic and pcb symbol.