Overview
In this tutorial, we will learn How to Blink an LED with DSPIC33FJ64GS606 Microcontroller using MPAB XC16 Compiler.
Product Overview
The DSPIC33FJ64GS606-I/PT is a 16-bit Digital Signal Controller with high-speed PWM, ADC and comparators. The PGECx and PGEDx pins are used for In-circuit Serial Programming™ (ICSP™) and debugging purposes. It is recommended to keep the trace length between the ICSP connector and the ICSP pins on the device as short as possible. The CPU module has a 16-bit (data) modified Harvard architecture with an enhanced instruction set, including significant support for DSP. The CPU has a 24-bit instruction word with a variable length opcode field. The Program Counter (PC) is 23-bit wide and addresses up to 4M x 24 bits of user program memory space.
Product Category: Digital Signal Processors & Controllers – DSP, DSC Number of Cores: 1 Core Maximum Clock Frequency: 40MHz Flash Memory Size: 64KB No. of I/O’s: 58I/O’s No. of Pins: 64Pins Core Size 16-Bit Oscillator Type Internal Core Supply Voltage: 2.75V Voltage – Supply (Vcc/Vdd) 3V to 3.6V Embedded Interface Type: ECAN, I2C, SPI, UART Operating Temperature Min & Max -40°C to 85o C
Components required table
Software Requirments
MPLAB X IDE
MPLAB X X16 Compailer
Circuit Diagram
Pin Description
PORT Direction Register Number of Pins Alternative Function PORTB RB0-RB15 16 bidirectional I/O port PORTC RC12-RB15 4 bidirectional I/O port PORTD RD0-RD11 12 bidirectional I/O port PORTE RE0-RD7 8 bidirectional I/O port PORTF RF0-RF6 7 bidirectional I/O port PORTG RG2-RG9 8 bidirectional I/O port
PIC I/O Register Configurations
Register Description TRISx Used to configure the respective PORT as output/input PORTx Used to Read/Write the data from/to the Port pins LATx Used to Read/Write the data from/to the Port pins
Source Code
/*
* File: main.c
* Author: Admin
*
* Created on March, 2023,
*/
// DSPIC33FJ64GS606 Configuration Bit Settings
// 'C' source line config statements
// FBS
#pragma config BWRP = WRPROTECT_OFF // Boot Segment Write Protect (Boot Segment may be written)
#pragma config BSS = NO_FLASH // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
// FGS
#pragma config GWRP = OFF // General Code Segment Write Protect (General Segment may be written)
#pragma config GSS = OFF // General Segment Code Protection (General Segment Code protect is disabled)
// FOSCSEL
#pragma config FNOSC = FRCDIVN // Oscillator Source Selection (Internal Fast RC (FRC) Oscillator with postscaler)
#pragma config IESO = ON // Internal External Switch Over Mode (Start up device with FRC, then switch to user-selected oscillator source)
// FOSC
#pragma config POSCMD = NONE // Primary Oscillator Source (Primary Oscillator disabled)
#pragma config OSCIOFNC = OFF // OSC2 Pin Function (OSC2 is clock output)
#pragma config FCKSM = CSDCMD // Clock Switching Mode bits (Both Clock switching and Fail-safe Clock Monitor are disabled)
// FWDT
#pragma config WDTPOST = PS32768 // Watchdog Timer Postscaler (1:32,768)
#pragma config WDTPRE = PR128 // WDT Prescaler (1:128)
#pragma config WINDIS = OFF // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
#pragma config FWDTEN = OFF // Watchdog Timer Enable (Watchdog timer enabled/disabled by user software)
// FPOR
#pragma config FPWRT = PWR128 // POR Timer Value (128ms)
#pragma config ALTSS1 = ON // Enable Alternate SS1 pin bit (SS1A is selected as the I/O pin for SPI1)
#pragma config ALTQIO = OFF // Enable Alternate QEI1 pin bit (QEA1, QEB1, INDX1 are selected as inputs to QEI1)
// FICD
#pragma config ICS = PGD1 // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
#pragma config JTAGEN = OFF // JTAG Port Enable (JTAG is disabled)
// FCMP
#pragma config HYST0 = HYST45 // Even Comparator Hysteresis Select (45 mV Hysteresis)
#pragma config CMPPOL0 = POL_FALL // Comparator Hysteresis Polarity (for even numbered comparators) (Hysteresis is applied to falling edge)
#pragma config HYST1 = HYST45 // Odd Comparator Hysteresis Select (45 mV Hysteresis)
#pragma config CMPPOL1 = POL_FALL // Comparator Hysteresis Polarity (for odd numbered comparators) (Hysteresis is applied to falling edge)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#include "p33FJ64GS606.h"
#include "dsp.h"
#include "libpic30.h"
int main(void) {
// select output pin
TRISGbits.TRISG3 = 0; // 0 as a Ouput 1 as a Input
TRISGbits.TRISG2 = 0; // 0 as a Ouput 1 as a Input
TRISDbits.TRISD2 = 0; // 0 as a Ouput 1 as a Input
while(1)
{
LATGbits.LATG3 = 1;// led high
LATGbits.LATG2 = 1; // led high
LATDbits.LATD2 = 1; // led high
__delay32(900000);
LATGbits.LATG3 = 0;// led Low
LATGbits.LATG2 = 0; // led Low
LATDbits.LATD2 = 0; // led Low
__delay32(900000);
}
}
VIDEO
Like this: Like Loading...
Related
Post navigation