mirror of https://github.com/ArduPilot/ardupilot
uncrustify libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080_APM2.cpp
This commit is contained in:
parent
8f5c22d448
commit
dcee71d442
|
@ -1,27 +1,27 @@
|
||||||
/*
|
/*
|
||||||
AP_OpticalFlow_ADNS3080.cpp - ADNS3080 OpticalFlow Library for Ardupilot Mega
|
* AP_OpticalFlow_ADNS3080.cpp - ADNS3080 OpticalFlow Library for Ardupilot Mega
|
||||||
Code by Randy Mackay. DIYDrones.com
|
* Code by Randy Mackay. DIYDrones.com
|
||||||
|
*
|
||||||
This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
* License as published by the Free Software Foundation; either
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
External ADNS3080 OpticalFlow is connected via Serial port 2 (in SPI mode)
|
* External ADNS3080 OpticalFlow is connected via Serial port 2 (in SPI mode)
|
||||||
TXD2 = MOSI = pin PH1
|
* TXD2 = MOSI = pin PH1
|
||||||
RXD2 = MISO = pin PH0
|
* RXD2 = MISO = pin PH0
|
||||||
XCK2 = SCK = pin PH2
|
* XCK2 = SCK = pin PH2
|
||||||
Chip Select pin is PC4 (33) [PH6 (9)]
|
* Chip Select pin is PC4 (33) [PH6 (9)]
|
||||||
We are using the 16 clocks per conversion timming to increase efficiency (fast)
|
* We are using the 16 clocks per conversion timming to increase efficiency (fast)
|
||||||
The sampling frequency is 400Hz (Timer2 overflow interrupt)
|
* The sampling frequency is 400Hz (Timer2 overflow interrupt)
|
||||||
So if our loop is at 50Hz, our needed sampling freq should be 100Hz, so
|
* So if our loop is at 50Hz, our needed sampling freq should be 100Hz, so
|
||||||
we have an 4x oversampling and averaging.
|
* we have an 4x oversampling and averaging.
|
||||||
|
*
|
||||||
Methods:
|
* Methods:
|
||||||
Init() : Initialization of interrupts an Timers (Timer2 overflow interrupt)
|
* Init() : Initialization of interrupts an Timers (Timer2 overflow interrupt)
|
||||||
Read() : Read latest values from OpticalFlow and store to x,y, surface_quality parameters
|
* Read() : Read latest values from OpticalFlow and store to x,y, surface_quality parameters
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AP_OpticalFlow_ADNS3080.h"
|
#include "AP_OpticalFlow_ADNS3080.h"
|
||||||
#include "SPI.h"
|
#include "SPI.h"
|
||||||
|
@ -73,7 +73,7 @@ union NumericIntType
|
||||||
byte byteValue[2];
|
byte byteValue[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
// Constructors ////////////////////////////////////////////////////////////////
|
// Constructors ////////////////////////////////////////////////////////////////
|
||||||
AP_OpticalFlow_ADNS3080_APM2::AP_OpticalFlow_ADNS3080_APM2(int cs_pin, int reset_pin) : _cs_pin(cs_pin), _reset_pin(reset_pin)
|
AP_OpticalFlow_ADNS3080_APM2::AP_OpticalFlow_ADNS3080_APM2(int cs_pin, int reset_pin) : _cs_pin(cs_pin), _reset_pin(reset_pin)
|
||||||
{
|
{
|
||||||
num_pixels = ADNS3080_PIXELS_X;
|
num_pixels = ADNS3080_PIXELS_X;
|
||||||
|
@ -87,13 +87,13 @@ unsigned char AP_OpticalFlow_ADNS3080_APM2::SPI_transfer(uint8_t data)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Wait for empty transmit buffer */
|
/* Wait for empty transmit buffer */
|
||||||
while ( !( UCSR3A & (1<<UDRE3)) );
|
while ( !( UCSR3A & (1<<UDRE3)) ) ;
|
||||||
|
|
||||||
/* Put data into buffer, sends the data */
|
/* Put data into buffer, sends the data */
|
||||||
UDR3 = data;
|
UDR3 = data;
|
||||||
|
|
||||||
/* Wait for data to be received */
|
/* Wait for data to be received */
|
||||||
while ( !(UCSR3A & (1<<RXC3)) );
|
while ( !(UCSR3A & (1<<RXC3)) ) ;
|
||||||
|
|
||||||
/* Get and return received data from buffer */
|
/* Get and return received data from buffer */
|
||||||
return UDR3;
|
return UDR3;
|
||||||
|
@ -154,7 +154,7 @@ void AP_OpticalFlow_ADNS3080_APM2::backup_spi_settings()
|
||||||
uint8_t temp;
|
uint8_t temp;
|
||||||
|
|
||||||
/* Wait for empty transmit buffer */
|
/* Wait for empty transmit buffer */
|
||||||
while ( !( UCSR3A & (1<<UDRE3)) );
|
while ( !( UCSR3A & (1<<UDRE3)) ) ;
|
||||||
|
|
||||||
// store current spi values
|
// store current spi values
|
||||||
orig_spi_settings_ucsr3c = UCSR3C;
|
orig_spi_settings_ucsr3c = UCSR3C;
|
||||||
|
@ -170,7 +170,7 @@ void AP_OpticalFlow_ADNS3080_APM2::backup_spi_settings()
|
||||||
void AP_OpticalFlow_ADNS3080_APM2::restore_spi_settings()
|
void AP_OpticalFlow_ADNS3080_APM2::restore_spi_settings()
|
||||||
{
|
{
|
||||||
/* Wait for empty transmit buffer */
|
/* Wait for empty transmit buffer */
|
||||||
while ( !( UCSR3A & (1<<UDRE3)) );
|
while ( !( UCSR3A & (1<<UDRE3)) ) ;
|
||||||
|
|
||||||
// restore UCSRC3C and UBRR3
|
// restore UCSRC3C and UBRR3
|
||||||
UCSR3C = orig_spi_settings_ucsr3c;
|
UCSR3C = orig_spi_settings_ucsr3c;
|
||||||
|
|
Loading…
Reference in New Issue