使用DMA将数据从ADC结果寄存器移动到PWM占空比寄存器。DMA 能够将一段数据移动到多个存储器位置。
因此,ADC从Curiosity HPC上的POT读取电压电平,DMA能够将这些数据提供给三个不同频率的PWM。
当您转动电位器时,您可以看到 LED 以不同的频率闪烁,但以相同的强度变化。
而主程序几乎不用任何操作
- /**
- Generated Main Source File
- Company:
- Microchip Technology Inc.
- File Name:
- main.c
- Summary:
- This is the main file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
- Description:
- This header file provides implementations for driver APIs for all modules selected in the GUI.
- Generation Information :
- Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.77
- Device : PIC18F45K42
- Driver Version : 2.00
- */
- /*
- (c) 2018 Microchip Technology Inc. and its subsidiaries.
-
- Subject to your compliance with these terms, you may use Microchip software and any
- derivatives exclusively with Microchip products. It is your responsibility to comply with third party
- license terms applicable to your use of third party software (including open source software) that
- may accompany Microchip software.
-
- THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
- EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
- IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
- FOR A PARTICULAR PURPOSE.
-
- IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
- INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
- WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
- HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
- THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
- CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
- OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
- SOFTWARE.
- */
- #include "mcc_generated_files/mcc.h"
- /*
- Main application
- */
- void main(void)
- {
- // Initialize the device
- SYSTEM_Initialize();
- // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
- // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global Interrupts
- // Use the following macros to:
- // Enable the Global Interrupts
- //INTERRUPT_GlobalInterruptEnable();
- // Disable the Global Interrupts
- //INTERRUPT_GlobalInterruptDisable();
-
- ADCC_StartConversion(POT);
- while (1)
- {
- // Add your application code
- }
- }
- /**
- End of File
- */
|