Search Code
About rs485

Published 07 Feb 2010.

Last change message: N/A

Import this program

rs485

Published 07 Feb 2010, by   user Gary Trimble   tag No tags
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

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    //pc.printf("%c",input_character);
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     //pc.printf("\r\nWRITE CONFIGURATION register = 0x%04X\r\n ", ret);
00060 
00061     cs = 0;
00062     ret = spi.write(0x4000);
00063     cs = 1;
00064     //pc.printf("\r\nREAD CONFIGURATION register = 0x%04X\r\n", ret);
00065     wait(0.1);
00066 
00067     // Try to read some data
00068 
00069     ret = 0;
00070     cs = 0;
00071     ret = spi.write(0x8600);
00072     cs = 1;
00073     
00074     wait(0.1);
00075     
00076      //cs = 0;
00077     //ret = spi.write(0x0000);
00078     // cs = 1;
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             //pc.printf("%d %d\r\n", input_buffer_pointer, output_buffer_pointer);
00085             output_character = input_buffer[output_buffer_pointer++];
00086             pc.printf("%c", output_character);
00087         }
00088     }
00089  
00090 }