Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: QEI mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:9f2b0ea63eac
- Child:
- 1:5c05e0d08e61
diff -r 000000000000 -r 9f2b0ea63eac main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Dec 01 23:00:51 2013 +0000 @@ -0,0 +1,92 @@ +#include "mbed.h" +#include "rtos.h" +#include "QEI.h" + +#define NR_SAMPLES 4000 + +Serial pc(USBTX, USBRX); + +QEI encoder(p29, p30, NC, 1024); +Timer T; + +// open a file for data logger +LocalFileSystem local("local"); + +float angle = 0.0; +int pulses0 = 0; +int deltaPulses; +float t0 = 0.0; +float t = 0.0, dt, vel; +int curPulses; +float conversion = 360.0/(1024.0*2.0); +float* buffer; + +int index; + +void saving(void const *args) { + index = 0; + while (true) { + //fprintf(fp, "0.0\n"); + //fprintf(fp, "%f, %f, %f\n", angle, vel, t); + //printf("Vel is: %f, dt = %f\r\n", vel, dt); + buffer[index] = angle; + buffer[index+1] = t; + index = index+2; + Thread::wait(10); + } +} + +void computing(void const *args) { + while (true) { + t = T.read(); + dt = t - t0; + curPulses = encoder.getPulses(); + angle = float(curPulses)*conversion; + + deltaPulses = curPulses - pulses0; + vel = float(deltaPulses)/dt*conversion; + + pulses0 = curPulses; + t0 = t; + Thread::wait(1); + } +} + +void saveToFile () +{ + FILE *fp = fopen("/local/data.csv", "w"); + if (!fp) { + fprintf(stderr, "File could not be openend \n\r"); + exit(1); + } + + wait(2.0); + + for (int i=0; i < index; i=i+2) { + + fprintf(fp,"%f,%f\n", buffer[i],buffer[i+1]); + } + pc.printf("closing file\n\r"); + fclose(fp); + wait(2.0);; +} + +int main() { + //allocate memory for the buffer + buffer = new float[NR_SAMPLES]; + T.start(); + Thread thrd2(computing,NULL,osPriorityRealtime); + Thread thrd3(saving,NULL,osPriorityNormal); + + pc.printf("Start!\r\n"); + pc.printf("Time: %f\r\n", t); + while (t < 10.0) + { + pc.printf("Time: %f\r\n", t); + Thread::wait(1000); + } + pc.printf("Done!\r\n"); + thrd2.terminate(); + thrd3.terminate(); + saveToFile(); +} \ No newline at end of file