Rev 762 | Rev 1437 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****************************************************************************
* Copyright (C) 2009-2011 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
#ifndef _SPI_H
#define _SPI_H
/*
* structs 'n union for easy SPI transfer
*/
typedef struct {
int16_t ampere;
int32_t mah;
int16_t volt;
} __attribute__((packed)) SPI_strom_data_t;
typedef struct {
uint8_t c[10];
uint8_t chk;
} __attribute__((packed)) SPI_char_buffer_t;
union SPI_buffer_t {
SPI_strom_data_t data;
SPI_char_buffer_t buffer;
};
volatile union SPI_buffer_t SPI_buffer;
/**
* SPI interrupt handler
*/
ISR(SPI_STC_vect);
/**
* init the SPI as master
*/
void SpiMasterInit(void);
/**
* check if SPI transfer is still busy
*/
int TransferIsBusy(void);
/**
* start a new transfer with length <len>
*/
void StartTransfer(uint16_t);
/**
* send next command through spi
*/
void spi_send_next();
#endif