shalab shalab / Mbed 2 deprecated Tutorial04_dspic33fI2cCom

Dependencies:   Encoder_dspic33f mbed

Committer:
shalab
Date:
Thu Feb 27 02:15:35 2014 +0000
Revision:
0:72dfed48bbcd
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shalab 0:72dfed48bbcd 1 #include "mbed.h"
shalab 0:72dfed48bbcd 2 #include "common.h"
shalab 0:72dfed48bbcd 3 #include "Encoder_dspic33f.h"
shalab 0:72dfed48bbcd 4
shalab 0:72dfed48bbcd 5 using namespace std;
shalab 0:72dfed48bbcd 6
shalab 0:72dfed48bbcd 7 DigitalOut led1(LED1);
shalab 0:72dfed48bbcd 8 DigitalOut led2(LED2);
shalab 0:72dfed48bbcd 9 DigitalOut led3(LED3);
shalab 0:72dfed48bbcd 10 DigitalOut led4(LED4);
shalab 0:72dfed48bbcd 11
shalab 0:72dfed48bbcd 12 Serial pc(USBTX, USBRX);
shalab 0:72dfed48bbcd 13
shalab 0:72dfed48bbcd 14 // dspic Encoder
shalab 0:72dfed48bbcd 15 const int enc_resolution = 10000 ;
shalab 0:72dfed48bbcd 16 const int address = 0x18 ;
shalab 0:72dfed48bbcd 17 Encoder_dspic33f encoder(p9, p10, enc_resolution, address);
shalab 0:72dfed48bbcd 18 Ticker printer;
shalab 0:72dfed48bbcd 19
shalab 0:72dfed48bbcd 20 int extractInt(char *buf)
shalab 0:72dfed48bbcd 21 {
shalab 0:72dfed48bbcd 22 char tmp[10];
shalab 0:72dfed48bbcd 23 int tmpInt;
shalab 0:72dfed48bbcd 24 strcpy(tmp, buf+1),
shalab 0:72dfed48bbcd 25
shalab 0:72dfed48bbcd 26 tmpInt =atof(tmp);
shalab 0:72dfed48bbcd 27 return tmpInt;
shalab 0:72dfed48bbcd 28 }
shalab 0:72dfed48bbcd 29
shalab 0:72dfed48bbcd 30 void printdata()
shalab 0:72dfed48bbcd 31 {
shalab 0:72dfed48bbcd 32 toggle(led2);
shalab 0:72dfed48bbcd 33 double data[2];
shalab 0:72dfed48bbcd 34 encoder.read(data);
shalab 0:72dfed48bbcd 35 pc.printf("Data Read: %f | %f \r", toDegrees(data[0]), toDegrees(data[1]));
shalab 0:72dfed48bbcd 36 }
shalab 0:72dfed48bbcd 37
shalab 0:72dfed48bbcd 38
shalab 0:72dfed48bbcd 39 int main()
shalab 0:72dfed48bbcd 40 {
shalab 0:72dfed48bbcd 41 char cmd[10];
shalab 0:72dfed48bbcd 42 int i = 0;
shalab 0:72dfed48bbcd 43 pc.baud(115200);
shalab 0:72dfed48bbcd 44
shalab 0:72dfed48bbcd 45 pc.printf("\r\n\r\n\r\n");
shalab 0:72dfed48bbcd 46 pc.printf("Shalab - Tutorial004_dspic33fI2cCom\r\n");
shalab 0:72dfed48bbcd 47 encoder.set_resolution(enc_resolution);
shalab 0:72dfed48bbcd 48 encoder.reset();
shalab 0:72dfed48bbcd 49 pc.printf("Command list:\r\n"
shalab 0:72dfed48bbcd 50 "r: reset encoder\r\n"
shalab 0:72dfed48bbcd 51 "e: set encoder resolution, usage: e1024\r\n"
shalab 0:72dfed48bbcd 52 "p: print encoder values\r\n");
shalab 0:72dfed48bbcd 53 wait(1);
shalab 0:72dfed48bbcd 54 while(1) {
shalab 0:72dfed48bbcd 55 toggle(led1);
shalab 0:72dfed48bbcd 56 ++i;
shalab 0:72dfed48bbcd 57 pc.printf("[%3d]Enter command: ",i);
shalab 0:72dfed48bbcd 58 pc.scanf("%s", &cmd);
shalab 0:72dfed48bbcd 59
shalab 0:72dfed48bbcd 60 switch (cmd[0]){
shalab 0:72dfed48bbcd 61 case 'r': {
shalab 0:72dfed48bbcd 62 pc.printf("Reset encoder\r\n");
shalab 0:72dfed48bbcd 63 encoder.reset();
shalab 0:72dfed48bbcd 64 break;}
shalab 0:72dfed48bbcd 65 case 'p': { // print data until enter interrupt
shalab 0:72dfed48bbcd 66 pc.printf("Reading encoder\r\n");
shalab 0:72dfed48bbcd 67 wait(0.5);
shalab 0:72dfed48bbcd 68 printer.attach(&printdata, 0.05);
shalab 0:72dfed48bbcd 69 pc.getc();
shalab 0:72dfed48bbcd 70 pc.printf("Stopping Printing\r\n");
shalab 0:72dfed48bbcd 71 printer.detach();
shalab 0:72dfed48bbcd 72
shalab 0:72dfed48bbcd 73 break;}
shalab 0:72dfed48bbcd 74 case 'e':{
shalab 0:72dfed48bbcd 75 int enc_resolution;
shalab 0:72dfed48bbcd 76
shalab 0:72dfed48bbcd 77 enc_resolution = extractInt(cmd);
shalab 0:72dfed48bbcd 78 pc.printf("Set encoder resolution: %d\r\n", enc_resolution);
shalab 0:72dfed48bbcd 79 encoder.set_resolution(enc_resolution);
shalab 0:72dfed48bbcd 80 break;}
shalab 0:72dfed48bbcd 81 default:
shalab 0:72dfed48bbcd 82 break;
shalab 0:72dfed48bbcd 83 }
shalab 0:72dfed48bbcd 84 }
shalab 0:72dfed48bbcd 85 }