Please share your suggestions, comments, and criticisms in the box below. Every message is read and receives a response. Thank you for taking time to improve the tool!
This project demonstrates how to create the custom protocol needed for controlling the WS2812 LEDs using the new PIC18FxxK42 microcontroller. This application also uses the 2 DMA modules on this device to drive the LEDs and also generate a set of waveforms without any CPU intervention.
To control these LEDs we use the PWM, SPI and the CLC module. The PWM and SPI module are timed using the Timer2 as base. The PWM and the SPI modules are used to generate the logic '1' and '0' for the LEDs.The CLC module is used to create the custom protocol needed for these LEDs.
One of the DMA modules is used to feed data into the SPI module. This is the pattern data needed for the LEDs. The DMA module has built in capabilities to work with the SPI module without any intervention from the CPU. Once the pattern is created in memory, the DMA module can be used to export it to the SPI module.
The other DMA module is used to read a look up table stored in the flash memory and load the DAC module. The timing for this is controlled by the Timer0 module. Every time the timer overflows, the DMA will transfer a new value from the look up table into the DAC register.
All the peripherals in this application are initialized using the MPLAB Code Configurator (MCC).
The PIC18FxxK42 showcases Peripheral Pin Select (PPS). This allows the user to reconfigure digital inputs and outputs to multiple pins on the device.
The PIC18FxxK42 family of devices have 2 DMA modules. These DMA modules can read data from any memory on the device and write data only to the RAM. The source and destination addresses are configurable individually. The size of the DMA transaction is also progrmmable.
One of the most interesting features of the DMA module is internal hardware based triggers for transfers or abort conditions. A full list of the DMA triggers can be found in the device datasheet.
In this example as mentioned earlier, DMA1 is used to feed the data into the SPI buffer for the LEDs. You can observe in the dma1.c file that in the DMA1_Intialize() routine, we have set DMA1SIRQ = 21. This means that every time a byte has been transmitted out of the SPI transmit buffer, the SPI module will automatically trigger the DMA to transfer the next byte from memory into the transmit buffer. This eliminates the need for the CPU to monitor the SPI buffers and move data when it is empty.
Similarly DMA2 is used to transfer the data from a look up table stored in the flash memory to the DAC data register. The frequency of this transfer determines the frequency of the output waveform. In this case, we are using Timer0 to trigger the DMA module. Everytime Timer0 rolls over, it will automatically trigger DMA2 to transfer a byte into the DAC. You can notice this in the dma2.c file under the DMA2_Initialize() routine. Here DMA2SIRQ = 31 which is the code for Timer0. This eliminates the need for the CPU to keep track of the timing and transfer data.
The 8x32 NeoPixel panel should have the text scrolling. Note that the DMA module is being used to transmit the data to the LEDs and the CPU is idle during that period.
The oscilloscope connected to pin RA2 should cycle through the sine, triangular and sawtooth wave form every 5 seconds. Note that these waveforms are also being generated without any CPU interference.
MPLAB Xpress IDE shall mean the online integrated development environment (hereinafter “MPLAB Xpress”) operated by or on behalf of Microchip Technology Incorporated (hereinafter "Microchip") for your use, whether as a guest or a registered user. Microchip is a Delaware corporation with its principal office at 2355 W. Chandler Boulevard, Chandler, AZ 85224.
Access to MPLAB Xpress is permitted on a temporary basis, and Microchip reserves the right to withdraw or amend the information provided on MPLAB Xpress without notice. Microchip will not be liable if for any reason MPLAB Xpress is unavailable at any time or for any period. From time to time, Microchip may restrict access to some or all of MPLAB Xpress.
Material on MPLAB Xpress may be out of date or include omissions, inaccuracies or other errors at any given time, and Microchip is under no obligation to update such material. Commentary and other materials posted on MPLAB Xpress are not intended to amount to advice on which reliance should be placed. Microchip disclaims all liability and responsibility arising from any reliance placed on such materials by any user of MPLAB Xpress, or by anyone who may be informed of any of its contents. Microchip owns or has the rights to the materials and information it posts on MPBLAB Xpress, but does not and cannot warrant or guaranty any information or materials posted by others.
EXCEPT WHERE EXPRESSLY PROVIDED OTHERWISE IN AN AGREEMENT BETWEEN YOU AND MICROCHIP, ALL INFORMATION PROVIDED DIRECTLY ON MPLAB XPRESS OR INDIRECTLY THROUGH MPLAB XPRESS BY HYPERTEXT LINK OR OTHERWISE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROCHIP HEREBY DISCLAIMS ALL WARRANTIES WITH RESPECT TO THIS INFORMATION, WHETHER EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROCHIP BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM YOUR ACCESS TO, USE OF, OR RELIANCE UPON INFORMATION OBTAINED FROM OR THROUGH MPLAB XPRESS. MICROCHIP RESERVES THE RIGHT TO MAKE CHANGES, UPDATES OR CORRECTIONS TO THE INFORMATION ON MPLAB XPRESS AT ANY TIME WITHOUT NOTICE.
Contracts for the supply of goods, services or information formed through the use of the MPLAB Xpress site or as a result of visits made by you to the MPLAB Xpress site are governed by these terms and conditions.
MPLAB Xpress may contain links to other sites and resources provided by third parties. Any such links are provided for your information only. Microchip has no control over the contents of those sites or resources, and accepts no responsibility for them or for any loss or damage that may arise from your use of them.
How is Customer Information Obtained by Microchip and How is it Used?
We receive and store information you give us, anonymously. Most of the information you give us is collected when you buy products on-line, request literature/ information, participate in a contest, fill out a questionnaire/survey, participate in an on-line discussion, or complete your Customer Profile. You may give us information such as your name, address, phone numbers, e-mail addresses, financial information, employment information, application information, ideas for new projects or applications, and your buying interests. The information that you provide us is used to respond to your requests, notify you of products being shipped to you, customize your interactions with us, improve our offerings, provide materials or offers to you, allow you to participate in contests, and communicate with you. It is your choice whether or not to provide us with certain information. However, you may be unable to take advantage of many of our offers and features if we do not receive your customer information.
We also receive and store certain types of information through use of “cookies.” Some examples of information gathered this way are the Internet Protocol (IP) address used to connect your computer to the Internet, log-in, e-mail address, computer and connection information such as browser type and version, operating system, platform, and the full Uniform Resource Locator (URL) used to, through, and from access of MPLAB Xpress. We use the information gathered by “cookies” to manage and customize your on-line experience and to improve our services.
You may also submit technical information to Microchip such as designs, ideas or data, that you transmit to or post on MPLAB Xpress example section (a "Submission") for purposes not limited to community development participation. By posting a Submission, you understand that you give Microchip and the community a nonexclusive, royalty-free, perpetual, irrevocable, sublicensable right to disseminate, display, use, modify, copy, adapt, and translate the Submission for any purpose whatsoever, whether commercial or noncommercial, throughout the world in any media. The Submission is not confidential or proprietary. Providing the Submission, grants the right to use the name you submit in connection with your Submission. You represent and warrant in making the Submission that you own or control all rights to the Submission, and that use of your Submission will not cause injury to any person or entity, including Microchip. You will indemnify Microchip for all claims resulting from your Submission.
How can I manage the information Microchip has about me?
You can always choose not to give Microchip information. However, certain information is necessary in order for you to take advantage of MPLAB Xpress, any change notifications, literature, updates, etc.
If you want to add/update your information or preferences, please modify your MPLAB Xpress account profile. When you update your information, we may keep a copy of your earlier information for our records.
You can avoid certain "cookies" by indicating in your account profile that you do not want us to remember you. Your browser may also have options to prevent acceptance of new “cookies.” There are also utilities available allowing you to visit MPLAB Xpress anonymously. Unfortunately, certain features and offerings available through MPLAB XPress may not be available to anonymous users.
Who does Microchip share Customer Information With?
Customer information is important for Microchip to be able to offer products and services to you. We are not in the business of selling customer information to others. We do share customer information with our subsidiaries and with others as described below. Such third parties may be based in the United States, Europe or Thailand. We are not responsible for the privacy practices of third parties to whom your information may be transferred. If you do not wish us to share your information as described below, you may opt out by not supplying information to us when entering information into your account profile, or by not placing orders through MPLAB Xpress.
Agents: We use other companies and persons to perform tasks on our behalf. Examples are not limited to web hosting of MPLAB Xpress, delivering packages, processing credit card payments, checking for export compliance, and providing customer service. They have access to customer information to perform their jobs, but may not use it for other purposes. Microchip may share your customer information with third parties and receive information from credit bureaus and other companies to help prevent and detect fraud, and to offer credit or financial services to some customers. Microchip cannot guaranty the security of such agent services provided on its behalf. As such, Microchip makes no representations or warranties regarding any third party services and has no responsibility or liability whatsoever for any such third party services and is not responsible for the content or privacy practices of such third parties
Third Parties: Except for information transmitted to Microchip through the on-line support system at http://support.microchip.com, any other Submission to Microchip such as designs, ideas or data that you transmit to or post on MPLAB Xpress by any means for any purpose including but not limited to contest participation is considered and treated by Microchip as nonconfidential and nonproprietary.
Conformance with the Law: We release account and other customer information when we believe it is appropriate to comply with the laws of Arizona.
Protection of Microchip and Others: Microchip will release customer information necessary to enforce or apply our MPLAB Xpress IDE Terms and Conditions, and other agreements. Microchip will, at its discretion, release customer information necessary to protect the rights, property and safety of Microchip or others in accordance with the laws of Arizona.
We use 256-bit encryption to secure the financial information you enter. Only the last five digits of your credit card number are listed in your Order Acknowledgement. However, your entire credit card number is transmitted to your credit card company during order processing, and your identifying and credit information is transmitted to companies that process your credit card transactions and review them for export control violations.
Law and Jurisdiction
If you have any concern about our treatment of your customer information, please send us an e-mail at email@example.com.