Search the Community

Showing results for tags 'chipkit core'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • Add-on Boards
    • Scopes & Instruments
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 2 results

  1. I am trying to come up to speed on the Wi-FIRE board and noticed that there is are two examples under the DSPI library that is included as part of the ChipKIT core hosted on the github site compared to the Digilent Core that is referenced on this page: Is there a particular reason why the DSPI_Demo sketch was not included in the Digilent core, but is part of the ChipKIT core. (Also makes me wonder what other differences may be lurking, left to be discovered.) It would appear that the two cores have not been kept "in sync". To make things even more confusing, there is also a Digilent core on GitHub!
  2. I'm playing around with timer interrupts on the DP32 using Arduino and the ChipKIT Core. I was surprised to find out that this involves register manipulation. So I can set up timers using register manipulation in Arduino, but I can't seem to do anything else with register manipulation. For example, here is some code of mine which should set up a PWM signal on pin 13 (OC4) of the DP32 using register manipulation, instead of analogWrite() function. Problem is that it doesn't work and I can't figure out why. This problem is exacerbated by the apparent lack of documentation on any of the register manipulation functions(?) that I use to set my timers up previously. I know they work, but I only found them in a tutorial that doesn't explain where they come from, or much about them at all. So I have the following questions: Am I allowed to do register manipulation for more than just timers? Where can I find more information about how ChipKIT Core uses and defines these things? What am I doing wrong with my code? /******************************** Constants ********************************/ #define T3CON_ENABLE_BIT 0x8000 #define T3CON_PRESCALER_BITS 0x0070 #define T3_SOURCE_INT 0 #define OC4_ENABLE_BIT 0x8000 #define OC4_TIMER_SEL_BIT 0x0008 #define OC4_MODE_BITS 0x0007 #define OC4_MODE_PWM_SET 0x0006 // Prescaler values // Don't change these. Set the prescaler below using these. #define T3_PRESCALE_1_1 0 #define T3_PRESCALE_1_2 1 #define T3_PRESCALE_1_4 2 #define T3_PRESCALE_1_8 3 #define T3_PRESCALE_1_16 4 #define T3_PRESCALE_1_32 5 #define T3_PRESCALE_1_64 6 #define T3_PRESCALE_1_256 7 // Set the prescaler value we want to use #define PRESCALE T3_PRESCALE_1_256 // Current it's set to 1:256 // The DP32 runs at 40 MHz // The uC32 and WF32 run at 80 MHz #define CLOCK_FREQ 40000000 // Right now we're set for the DP32 // Set our target frequency // This is the frequency that our interrupt will run at in Hz #define T3_FREQUENCY 5 void setup() { uint32_t period; uint32_t cycle; uint32_t mask; // Disable everything T3CONCLR = T3CON_ENABLE_BIT; // Turn the timer off OC4CONCLR = OC4_ENABLE_BIT; // Turn OC4 off RPB2R = 0b0101; // Calculate the period we need for our given frequency if (PRESCALE == 7) period = 256; // 1:256 is a special case else period = 1 << PRESCALE; period = period * T3_FREQUENCY; period = CLOCK_FREQ / period; // Set up our timer T3CONCLR = T3CON_PRESCALER_BITS; // Clear the old prescaler mask = PRESCALE << 4; // Shift our new prescaler mask = mask | T3CON; // Mask our prescaler T3CON = mask; // Set the prescaler TMR3 = 0; // Clear the counter PR3 = period; // Set the period // Calculate our cycle cycle = period /2; // We want a 50% duty cycle // Set up our output compare OC4CONSET = OC4_TIMER_SEL_BIT; // Select timer 3 for source OC4CONCLR = OC4_MODE_BITS; // Clear our mode pins OC4CONSET = OC4_MODE_PWM_SET; // Set our mode to PWM w/out fault pin OC4R = cycle; // Set our cycle // Enable everything T3CONSET = T3CON_ENABLE_BIT; // Turn the timer on OC4CONSET = OC4_ENABLE_BIT; // Turn OC4 on } void loop() { }