Advertisement
Guest User

FlirLepton4

a guest
Sep 20th, 2015
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.67 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <SPI.h>
  3.  
  4. byte x = 0;
  5. #define ADDRESS  (0x2A)
  6.  
  7. #define AGC (0x01)
  8. #define SYS (0x02)
  9. #define VID (0x03)
  10. #define OEM (0x08)
  11.  
  12. #define GET (0x00)
  13. #define SET (0x01)
  14. #define RUN (0x02)
  15.  
  16. #define VOSPI_FRAME_SIZE (164)
  17. byte lepton_frame_packet[VOSPI_FRAME_SIZE];
  18.  
  19. int image_index;
  20. #define image_x (80)
  21. #define image_y (60)
  22. word image[image_x][image_y];
  23.  
  24.  
  25. byte tst[VOSPI_FRAME_SIZE];
  26.  
  27. void setup()
  28. {
  29. //  pinMode(pin, INPUT);           // set pin to input
  30.   //digitalWrite(pin, HIGH);
  31.  
  32.   Wire.begin();
  33.   Serial.begin(9600);
  34.  
  35.   pinMode(10, OUTPUT);
  36.   SPI.setDataMode(SPI_MODE3);
  37.   SPI.setClockDivider(1);
  38.  
  39.   SPI.begin();
  40.  
  41.   Serial.println("setup complete");
  42.  
  43.  delay(2500);
  44.  lepton_sync();
  45.  delay(2500);
  46.  
  47.   for (int i = 0; i < (VOSPI_FRAME_SIZE ); i++)
  48.   {
  49.   tst[i] = SPI.transfer(0x00);
  50.   //Serial.println(SPI.transfer(0x00));
  51.   }
  52.  
  53.    Serial.println(" ");
  54. //read_lepton_frame();
  55.  
  56.   for (int i = 0; i < (VOSPI_FRAME_SIZE); i++)
  57.   {
  58.     Serial.print(i);
  59.     Serial.print(" " );
  60.     Serial.print(tst[i]);
  61.     Serial.println("");
  62.   }
  63.  
  64. }
  65.  
  66. inline void digitalWriteDirect(int pin, boolean val){
  67.   if(val) g_APinDescription[pin].pPort -> PIO_SODR = g_APinDescription[pin].ulPin;
  68.   else    g_APinDescription[pin].pPort -> PIO_CODR = g_APinDescription[pin].ulPin;
  69. }
  70.  
  71. inline int digitalReadDirect(int pin){
  72.   return !!(g_APinDescription[pin].pPort -> PIO_PDSR & g_APinDescription[pin].ulPin);
  73. }
  74.  
  75.  
  76.  
  77.  
  78. void read_lepton_frame(void)
  79. {
  80.   int i;
  81.  
  82.   for (i = 0; i < (VOSPI_FRAME_SIZE ); i++)
  83.   {
  84.   Serial.println(SPI.transfer(0x00));
  85.   }
  86.   return;
  87.  
  88.   for (i = 0; i < (VOSPI_FRAME_SIZE / 2); i++)
  89.   {
  90.     digitalWriteDirect(10, LOW);
  91.     //  send in the address and value via SPI:
  92.     lepton_frame_packet[2 * i] = SPI.transfer(0x00);
  93.     lepton_frame_packet[2 * i + 1] = SPI.transfer(0x00);
  94.     // take the SS pin high to de-select the chip:
  95.     digitalWriteDirect(10, HIGH);
  96.  //   Serial.print(lepton_frame_packet[2 * i]);
  97.  //   Serial.print(" ");
  98.  //    Serial.print(lepton_frame_packet[2 * i + 1]);
  99.  //     Serial.println("");
  100.   }
  101. }
  102.  
  103. void buffer_image(void)
  104. {
  105.   int j = lepton_frame_packet[1];
  106.   for (int i = 0; i < image_x; i++)
  107.   {
  108.     image[i][j] = ((lepton_frame_packet[2*i+4] << 8) + lepton_frame_packet[2*i+5]);//-0x1000;
  109.   }
  110.   if (j == 0x3B) print_image();
  111. }
  112.  
  113. void print_image(void)
  114. {
  115.   for (int j = 0; j < image_y; j++)
  116.   {
  117.     for (int i = 0; i < image_x; i++)
  118.     {
  119.       Serial.print(image[i][j],HEX);
  120.       Serial.print(",");
  121.     }
  122.   }
  123.   Serial.println(" ");
  124. }
  125.  
  126.  
  127. void lepton_sync(void)
  128. {
  129.   int i;
  130.   int data = 0x0f;
  131.  
  132.   digitalWriteDirect(10, HIGH);
  133.   delay(185);
  134.   while (data & 0x0f == 0x0f)
  135.   {
  136.     digitalWriteDirect(10, LOW);
  137.     data = SPI.transfer(0x00) << 8;
  138.     data |= SPI.transfer(0x00);
  139.     digitalWriteDirect(10, HIGH);
  140.  
  141.     for (i = 0; i < ((VOSPI_FRAME_SIZE - 2) / 2); i++)
  142.     {
  143.       digitalWriteDirect(10, LOW);
  144.       SPI.transfer(0x00);
  145.       SPI.transfer(0x00);
  146.       digitalWriteDirect(10, HIGH);
  147.     }
  148.   }
  149. }
  150.  
  151. void print_lepton_frame(void)
  152. {
  153.   int i;
  154.   for (i = 0; i < (VOSPI_FRAME_SIZE); i++)
  155.   {
  156.     Serial.print(lepton_frame_packet[i], HEX);
  157.     Serial.print(",");
  158.   }
  159.   Serial.println(" ");
  160. }
  161.  
  162.  
  163.  
  164.  
  165. void loop()
  166. {
  167.   return;
  168.   int i;
  169.   int reading = 0;
  170.   String debugString;
  171.   Serial.println("beginTransmission");
  172.  
  173.  
  174.   while (1)
  175.   {
  176.   //  lepton_sync();
  177.     read_lepton_frame();
  178.    // if(lepton_frame_packet[0]&0x0f == 0x0f )
  179.     {
  180.   //print_lepton_frame();
  181.     //  Serial.print(lepton_frame_packet[1],DEC);  
  182.     //  Serial.print(lepton_frame_packet[0],DEC);  
  183.     //  Serial.println(" ");
  184.     //  buffer_image();
  185.     }
  186.  
  187.   }
  188.  
  189.   x++;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement