Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <SPI.h>
- byte x = 0;
- #define ADDRESS (0x2A)
- #define AGC (0x01)
- #define SYS (0x02)
- #define VID (0x03)
- #define OEM (0x08)
- #define GET (0x00)
- #define SET (0x01)
- #define RUN (0x02)
- #define VOSPI_FRAME_SIZE (164)
- byte lepton_frame_packet[VOSPI_FRAME_SIZE];
- int image_index;
- #define image_x (80)
- #define image_y (60)
- word image[image_x][image_y];
- byte tst[VOSPI_FRAME_SIZE];
- void setup()
- {
- // pinMode(pin, INPUT); // set pin to input
- //digitalWrite(pin, HIGH);
- Wire.begin();
- Serial.begin(9600);
- pinMode(10, OUTPUT);
- SPI.setDataMode(SPI_MODE3);
- SPI.setClockDivider(1);
- SPI.begin();
- Serial.println("setup complete");
- delay(2500);
- lepton_sync();
- delay(2500);
- for (int i = 0; i < (VOSPI_FRAME_SIZE ); i++)
- {
- tst[i] = SPI.transfer(0x00);
- //Serial.println(SPI.transfer(0x00));
- }
- Serial.println(" ");
- //read_lepton_frame();
- for (int i = 0; i < (VOSPI_FRAME_SIZE); i++)
- {
- Serial.print(i);
- Serial.print(" " );
- Serial.print(tst[i]);
- Serial.println("");
- }
- }
- inline void digitalWriteDirect(int pin, boolean val){
- if(val) g_APinDescription[pin].pPort -> PIO_SODR = g_APinDescription[pin].ulPin;
- else g_APinDescription[pin].pPort -> PIO_CODR = g_APinDescription[pin].ulPin;
- }
- inline int digitalReadDirect(int pin){
- return !!(g_APinDescription[pin].pPort -> PIO_PDSR & g_APinDescription[pin].ulPin);
- }
- void read_lepton_frame(void)
- {
- int i;
- for (i = 0; i < (VOSPI_FRAME_SIZE ); i++)
- {
- Serial.println(SPI.transfer(0x00));
- }
- return;
- for (i = 0; i < (VOSPI_FRAME_SIZE / 2); i++)
- {
- digitalWriteDirect(10, LOW);
- // send in the address and value via SPI:
- lepton_frame_packet[2 * i] = SPI.transfer(0x00);
- lepton_frame_packet[2 * i + 1] = SPI.transfer(0x00);
- // take the SS pin high to de-select the chip:
- digitalWriteDirect(10, HIGH);
- // Serial.print(lepton_frame_packet[2 * i]);
- // Serial.print(" ");
- // Serial.print(lepton_frame_packet[2 * i + 1]);
- // Serial.println("");
- }
- }
- void buffer_image(void)
- {
- int j = lepton_frame_packet[1];
- for (int i = 0; i < image_x; i++)
- {
- image[i][j] = ((lepton_frame_packet[2*i+4] << 8) + lepton_frame_packet[2*i+5]);//-0x1000;
- }
- if (j == 0x3B) print_image();
- }
- void print_image(void)
- {
- for (int j = 0; j < image_y; j++)
- {
- for (int i = 0; i < image_x; i++)
- {
- Serial.print(image[i][j],HEX);
- Serial.print(",");
- }
- }
- Serial.println(" ");
- }
- void lepton_sync(void)
- {
- int i;
- int data = 0x0f;
- digitalWriteDirect(10, HIGH);
- delay(185);
- while (data & 0x0f == 0x0f)
- {
- digitalWriteDirect(10, LOW);
- data = SPI.transfer(0x00) << 8;
- data |= SPI.transfer(0x00);
- digitalWriteDirect(10, HIGH);
- for (i = 0; i < ((VOSPI_FRAME_SIZE - 2) / 2); i++)
- {
- digitalWriteDirect(10, LOW);
- SPI.transfer(0x00);
- SPI.transfer(0x00);
- digitalWriteDirect(10, HIGH);
- }
- }
- }
- void print_lepton_frame(void)
- {
- int i;
- for (i = 0; i < (VOSPI_FRAME_SIZE); i++)
- {
- Serial.print(lepton_frame_packet[i], HEX);
- Serial.print(",");
- }
- Serial.println(" ");
- }
- void loop()
- {
- return;
- int i;
- int reading = 0;
- String debugString;
- Serial.println("beginTransmission");
- while (1)
- {
- // lepton_sync();
- read_lepton_frame();
- // if(lepton_frame_packet[0]&0x0f == 0x0f )
- {
- //print_lepton_frame();
- // Serial.print(lepton_frame_packet[1],DEC);
- // Serial.print(lepton_frame_packet[0],DEC);
- // Serial.println(" ");
- // buffer_image();
- }
- }
- x++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement