Published 07 Feb 2010, by
Gary Trimble

No tags
00001 #include "mbed.h"
00002
00003 SPI spi(p5,p6,p7);
00004 DigitalOut cs(p8);
00005 InterruptIn Max3140Data(p9);
00006
00007 Serial pc(USBTX, USBRX);
00008
00009 int ret = 0;
00010 char input_character = 0;
00011 char output_character = 0;
00012 char input_buffer[16384];
00013 int input_buffer_pointer = 0;
00014 int output_buffer_pointer = 0;
00015
00016 void gotit() {
00017
00018 cs = 0;
00019 ret = 0;
00020 ret = spi.write(0x0000);
00021 cs = 1;
00022 input_character = char(ret & 0x7F);
00023 input_buffer[input_buffer_pointer++] = input_character;
00024
00025 }
00026
00027 void Max3140_Write(char output_byte){
00028 ret = 0;
00029 cs = 0;
00030 ret = spi.write(0x8000 | output_byte);
00031 cs = 1;
00032 wait(0.0001);
00033 }
00034
00035
00036 int main(){
00037
00038 spi.format(16,0);
00039 spi.frequency(1000000);
00040
00041 Max3140Data.mode(PullUp);
00042 Max3140Data.fall(&gotit);
00043
00044 wait(0.5);
00045
00046 Max3140_Write('H');
00047 Max3140_Write('e');
00048 Max3140_Write('l');
00049 Max3140_Write('l');
00050 Max3140_Write('o');
00051 Max3140_Write('\r');
00052 Max3140_Write('\n');
00053
00054 ret = 0;
00055 cs = 0;
00056 ret = spi.write(0xC400);
00057 cs = 1;
00058 wait(0.1);
00059
00060
00061 cs = 0;
00062 ret = spi.write(0x4000);
00063 cs = 1;
00064
00065 wait(0.1);
00066
00067
00068
00069 ret = 0;
00070 cs = 0;
00071 ret = spi.write(0x8600);
00072 cs = 1;
00073
00074 wait(0.1);
00075
00076
00077
00078
00079
00080 pc.printf("at loop\r\n");
00081 input_buffer_pointer = output_buffer_pointer = 0;
00082 for(;;){
00083 if(input_buffer_pointer > output_buffer_pointer){
00084
00085 output_character = input_buffer[output_buffer_pointer++];
00086 pc.printf("%c", output_character);
00087 }
00088 }
00089
00090 }