AN0821 S I MP L I C I T Y S T U D I O C8051F85 X W ALKTHROUGH 1. Introduction This document provides a step-by-step walkthrough that shows how to develop a basic embedded project using Simplicity Studio (IDE and Configurator) to run on the C8051F850 ToolStick Daughter Card (TOOLSTICK850-DC). The same steps can be applied to develop a project to run on the C8051F850 UDP MCU card (UPMU-F850 MCU).
AN0821 2. Relevant Documents IDE Guide—In Simplicity IDE, select HelpHelp Contents to display the Simplicity IDE Guide as well as any installed documentation, including data sheets and user’s guides. Simplicity Configurator Guide—In the Simplicity IDE, select HelpHelp Contents to display this guide. AN0822: Simplicity Studio User’s Guide—In addition to the documentation within the tool itself, this document provides a discussion of the Simplicity Studio tool. Application Notes are available on www.
AN0821 4. Hardware Setup Setup the C8051F850 ToolStick hardware: Figure 3. Hardware Setup Diagram 1. Verify that the shorting block on JP1 is installed on the TOOLSTICK850-DC daughter card. 2. Connect the daughter card to the ToolStick Base Adapter. 3. Connect one end of the USB extension cable to the ToolStick Base Adapter and connect the other end to a PC. The USB connection provides power to the ToolStick Debug Adapter and daughter card.
AN0821 Create a new Silicon Labs MCU Project called F85x_PWM_LED: 1. Create a new project by selecting FileNewSilicon Labs MCU Project from the menu bar. 2. Complete the New Silicon Labs MCU Project wizard: a. In the Project setup step, select C8051F850 Development Kit from the Kit combo box. This will automatically select the C8051F850 part in the Part combo box. b. Select Si8051 SDK (v2.0.0) from the SDK combo box. c. Click the Next button. d.
AN0821 Some peripherals provide calculators such as baud rate calculators, timer overflow rate calculators, and SPI clock rate calculators that can be used to automatically calculate the necessary reload register value to generate the clock rate specified by the user. Configurator also provides real-time validation of properties to ensure that a configuration is valid before downloading code to the MCU.
AN0821 1. After creating a new MCU project using Simplicity Configurator, Studio will automatically switch to the Configuration perspective. This perspective is tailored specifically for use with Configurator to initialize MCU peripherals. Special views will automatically be displayed in this perspective that allow peripheral registers to be configured. The default tab in a new Configurator project is the Port I/O tab. 2.
AN0821 3. Confirm that the MCU system clock is configured as SYSCLK / 8 or 3.0625 MHz: a. Select the Peripherals tab, if it’s not already selected. b. Select the Clock Control box from the Clocking group to display the properties in the Properties view. c. Verify that the Clock Source Divider property is set to SYSCLK / 8 and SYSCLK is set to 3062500. 3b 3c 3a Rev. 0.
AN0821 4. Next, configure Timer 2 to overflow at 1 kHz. This timer will serve as the ADC start-of-conversion source. a. Select TIMER 2 from the Timers group. b. Set the Run Control property to Start. c. Set the Timer Overflow Frequency properties to 1000 for 1 kHz. This will change the read-only Timer Reload Overflow Frequency to ~1 kHz. d. Check the TIMER Setup check box to enable code generation and remove the error. e. Timer 2 is now clocked from the 3.
AN0821 5. Configure PCA 0 to output an 8-bit PWM signal on P1.0 at 1 kHz: a. Select PCA 0 from the Timers group. b. Set the Channel 0 Capture/Compare Mode property to Predefined 8~11-bit pulse modulator. c. Set the PCA Counter/Timer Run Control property to Start. 5b 5a 5c Rev. 0.
AN0821 6. Next, configure ADC 0 to acquire 8-bit samples on P1.2, the potentiometer pin, on Timer 2 overflow: a. Select ADC 0 from the Analog group. b. Set the Enable ADC property to Enabled. c. Set the Start of Conversion property to Timer 2 overflow. d. Set the Positive Input Selection property to ADC0.10 (P1.2). e. Set the Resolution property to 8-bit. f. Set the Enable 8-bit Mode property to 8-bit mode. g. Set the Gain Control property to 1x gain. 6a 6b 6c 6d 6e 6f 10 Rev. 0.
AN0821 7. Configure the voltage reference for the ADC to use VDD: a. Select Voltage Reference from the Analog group. b. Set the Select Voltage Reference property to VDD pin. 7a 7b Rev. 0.
AN0821 8. Enable ADC 0 conversion complete interrupts and enable the global interrupt enable flag: a. Select Interrupts from the Core group. b. Set the Enable ADC0 Conversion Complete Interrupt property to Enabled. c. Set the Enable All Interrupts property to Enabled. 8a 8b 8c 12 Rev. 0.
AN0821 9. Enable the PCA0_CEX0 pin on the crossbar: a. Switch to the Port I/O tab. b. Click CROSSBAR0 from the Outline view. c. Switch to the Peripheral Mapping view, if it’s not already open. d. Check only the PCA0_CEX0 check box. 9b 9c 9a 9d Rev. 0.
AN0821 10. Place PCA0_CEX0 on the P1.0 LED pin by skipping P0.0 through P0.7 on the crossbar: a. Click P0.2 in the Port I/O editor. b. Holding the Ctrl key, click each pin from P0.0 through P0.7 to select all 8 pins. c. Set the Skip property to Skipped or right-click on the pins and select Skip Selected Pins. 10a 10b 10c 14 Rev. 0.
AN0821 11. Configure PCA_CEX0 / P1.0 (LED) for push-pull output mode: a. Select PCA0_CEX0 / P1.0 or pin 18. b. Set the IOMode property to Digital Push-Pull Output. 11a 11b Rev. 0.
AN0821 12. Configure ADC0.10 / P1.2 (Potentiometer) for analog mode and skipped on the crossbar: a. Select ADC_IN / P1.2 or pin 16. b. Set the IOMode property to Analog I/O. c. Set the Skip property to Skipped. 12a 12b 12c 16 Rev. 0.
AN0821 13. Enable the crossbar to enable the port pin drivers and weak pullup resistors: a. Select Port I/O from the Outline view to display the Port Config properties. b. Set the Enable Crossbar property to Enabled. 13a 13b Rev. 0.
AN0821 14. After configuring peripheral properties, save the F85x_PWM_LED.hwconf file to generate InitDevice.c, InitDevice.h, and Interrupts.c: a. Select the F85x_PWM_LED.hwconf editor tab. b. Click the Save button from the tool bar. The save file operation is context sensitive and will only save the currently active document in the editor. c. Configurator generates InitDevice.c, which contains source code to initialize the peripherals as configured in the GUI. d. Configurator also generates InitDevice.
AN0821 After generating hardware initialization functions using Simplicity Configurator, edit the source code to copy the ADC reading into the PCA PWM output. The Eclipse framework provides a very powerful editor with rich features, such as C++ syntax error highlighting, code completion, and source browse information to quickly locate symbol declarations. Edit the F85x_PWM_LED project source code to change the PWM duty cycle based on the ADC sample to change the LED brightness: 1.
AN0821 2. Enter the following code into the ADC ISR and save the document: ADC0CN0_ADINT = 0; PCA0CPH0 = (U8)(ADC0 >> 2); 2 20 Rev. 0.
AN0821 3. Build the project and make sure that there are no errors or warnings: a. Select the F85x_PWM_LED project in the Project Explorer. b. Select ProjectBuild Project from the menu bar or use the Build button on the tool bar. The Project menu is context sensitive, which means that an active project must be selected before building the project. c. The compiler and linker build output will be displayed in the Console view. d. Check the Problems tab to see if there are any errors or warnings. e.
AN0821 4. Simplicity IDE supports many modern code editing features. For example, the IDE will automatically index all code within the project to support symbol lookup. The code does not have to build completely for the indexer to work. However certain features may not be available if for example, the main() routine is not declared. Next, use the Open Declaration feature to quickly find symbol declarations: a. If not already open, open the Interrupts.c document by double clicking Interrupts.
AN0821 5. Simplicity IDE also supports code completion, a feature called Content Assist. The user can type the first few letters of a symbol or include file and press Ctrl+Space to display a list of symbols that match the letters types. Next, use Content Assist to display a list of symbols starting with the characters P1: a. In Interrupts.c, type ADC0 at the end of the ADC0_ISR function. b. Press Ctrl+Space to display the Content Assist list. c.
AN0821 Once an MCU project builds, start a debug session. If a single USB Debug Adapter or ToolStick Debug Adapter is available, the IDE will automatically download the code to the MCU. If more than one debug adapter is available, the IDE will prompt the user to select a debugger. The Silicon Labs 8051 products support non-intrusive, on-chip debug that provides hardware breakpoints, single stepping, and register/memory view. 1. Start a new debug session: a. Select F85x_PWM_LED from the Project Explorer. b.
AN0821 3. Use a breakpoint to halt the CPU just prior to executing the statement to read the ADC sample and update the PWM duty cycle: a. Open Interrupts.c in the editor. If Interrupts.c is not shown in the tabbed list of files, then quickly switch to the Development perspective and use the Project Explorer to open the Interrupts.c file. Next, switch back to the Debug perspective. The debug session is still active when switching perspectives.
AN0821 4. Use the Registers view to view/modify register values: a. Select the Registers tab. b. Scroll down the register list and expand the ADC registers. c. The ADC0 sample value is displayed in the ADC0 row under the Value column. d. The register description is displayed in the Description column. e. Registers with bitfields will be split into individual fields with the enumeration value decoded. f. Registers that have changed between breakpoints will be highlighted in yellow. 4a 4f 4b 4c 4e 26 Rev.
AN0821 5. Use the Expressions view to display the current value of code expressions: a. Select the Expressions tab. b. Highlight the expression, ADC0, in main.c. c. Drag the highlighted expression to the line just below the Add new expression button in the Expressions view. d. If possible, Studio will evaluate the expression and display its current value when the MCU is halted.
AN0821 6. Use the Memory view to display the contents of the CODE, RAM, and XRAM memory: a. Select the Memory tab in the bottom-left hand. b. Click the Add Memory Monitor button. The Monitor Memory dialog will appear. c. Select the Enter memory space and address radio button. d. Select the CODE memory space from the combo box. e. Enter an address to view, such as 0x0000. Press OK. f.
AN0821 CONTACT INFORMATION Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 Tel: 1+(512) 416-8500 Fax: 1+(512) 416-9669 Toll Free: 1+(877) 444-3032 Please visit the Silicon Labs Technical Support web page: https://www.silabs.com/support/pages/contacttechnicalsupport.aspx and register to submit a technical support request.