SKds40A + dsPIC30F4013 Library

SKds40A + dsPIC30F4013 Library

Hi guys, which do you prefer between 5V logic or 3.3V logic microcontroller? I believe that 5V logic is much more popular among students, beginner and hobbyist. However when you want to go with advance microcontroller, it doesn't support 5V logic microcontroller. So, what is the most advance microcontroller with 5V logic? In PIC series, 16-bit dsPIC30F family is a most advance for 5V logic microcontroller. We also sell SKds40A as a starter kit for 16-bit 40 pins. You can program the PIC chip using UIC00B. Since it is lack of library and hard to start, I have decided to develop a basic function for dsPIC30F4013 (with CIKU function style), and today I want to share with you. :)

List of dsPIC30F4013 pins

Before we proceed to the library function, you should know the pin arrangement first.

dsPIC30F4013

For all digital function, you can use all the available pins (yellow font) on the picture above. Please note, there have two style to write, either you enter the pin number OR pin name, for example pinMode(2, OUTPUT); or pinMode(B0, OUTPUT);.

Analog Pins

You can use these pins with analogRead function. 1. B0 - 2 2. B1 - 3 3. B2 - 4 4. B3 - 5 5. B4 - 6 6. B5 - 7 7. B6 - 8 8. B7 - 9 9. B8 - 10 10. B9 - 11 11. B10 - 12 12. B11 - 13 13. B12 - 14

PWM Pins

You can use these pins with analogWrite function. 1. D0 - 34 2. D1 - 33 3. D2 - 22 4. D3 - 19

Serial Pins

You can use these pins with Serial function. 1. F2 - 26 (Receive) 2. F3 - 25 (Transmit)

Serial2 Pins

You can use these pins with Serial2 function. 1. F4 - 28 (Receive) 2. F5 - 27 (Transmit)

User Interface Pins

In SKds40A, there have 2 programmable LEDs and 2 switches. You can use the following name to program (refer to example section). 1. LED1 - 22 2. LED2 - 19 3. SW1 - 17 4. SW2 - 23

List of function

This is the list of basic function. If you're familiar with CIKU library, then it is easy for you. The concept is same.

// mode: INPUT or OUTPUT
pinMode(pin, mode);

// value: HIGH or LOW
digitalWrite(pin, value);

// return: HIGH or LOW
digitalRead(pin);

// Toggle the pin state
digitalToggle(pin);

// value: 0 to 100
analogWrite(pin, value);

// return: 0 to 4096
analogRead(pin);

// return: current milliseconds
millis();

// return: current microseconds
micros();

// ms: number of milliseconds to pause
delay(ms);

// us: number of microseconds to pause
delayMicroseconds(us);

// frequency: tone's frequency in hertz
// duration: tone's duration
tone(pin, frequency, duration);

// baudrate: baudrate speed, e.g 9600
Serial_begin(baudrate);

// return: number of serial data available to read
Serial_available();

// return: 1 byte serial data
Serial_read();

// value: 1 byte serial data
Serial_write(value);

// string: e.g "Hello World"
Serial_printString(string);

// value: number to be displayed
// base: BIN, OCT, DEC, HEX
Serial_printNumber(value, base);

For the 2nd serial pin function, you can replace the Serial to Serial2 (Serial2_begin). **You can use both serial function at the same time.

Example

This is example provided in template.c file. User can edit this file.

#include "Arduino.h"

void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
}

void loop()
{
if(digitalRead(SW1) == LOW) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
while(digitalRead(SW1) == LOW);
delay(100);
}
else if(digitalRead(SW2) == LOW) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
while(digitalRead(SW2) == LOW);
delay(100);
}
}

Download

You can download the library HERE.

Thank you

Hope this tutorial can help your project development, and don't forget to share your project with us!