Show Posts
Pages: [1]
1  International / Deutsch / Re: SPI in einer Bibliothek nutzen on: February 25, 2013, 01:10:21 pm
Quote
In meiner SPI.h  (in arduino-1.0.3\libraries\SPI ) steht

extern SPIClass SPI;

Damit sollte das Objekt SPI deklariert sein.

Allerdings steht bei mir in SPI.h auch
static void setDataMode(uint8_t);

in deiner AD7730::init Routine könntest du also 
   SPIClass::setDataMode(SPI_MODE0);
schreiben. Verändert das irgendwas ? Rutscht der Fehler eine Zeile weiter ... ?

so wie ich es verstanden hab bedeutet das extern in der header datei nur das es wo anders deklariert wird, was es in der SPI.cpp dann wird, da wird die Klasse SPIclass als Objekt SPI instanziiert.

am Konstruktor und destruktor lag es nicht, da hatte ich es vorher drinn.
und bei dem anderen Forumsbeitrag war die Klasse nicht instanziert, was bei mir ja der Fall war.


ABER
Quote
#include <SPI.h>
im Sketch hat es behoben, hatte es auch mal in dem Header probiert, aber das macht keinen Unterschied.
2  International / Deutsch / SPI in einer Bibliothek nutzen [gelöst] on: February 23, 2013, 10:29:22 am
Hi Leute,

ich versuche gerade eine Bibliothek zu schreiben.

Datenstruktur:
 "../arduino-1.0.3/libraries/AD7730/AD7730.h"
 "../arduino-1.0.3/libraries/AD7730/AD7730.cpp"
 "../arduino-1.0.3/libraries/AD7730/keywords.txt"

AD7730.h:
Code:
/*
  AD7730.h - Library for Analog Devices AD7730
*/

#ifndef AD7730_h
#define AD7730_h


class AD7730
{
  public:
    void init(); // Initialisierung laut Definitionen
    //void init(int SYNC,int POL,int RST,int STBY,int CSS,int RDY);
  private:
    void setPINs(void);
    int _AD7730_NCS;
    int _AD7730_NSYNC;
    int _AD7730_POL;
    int _AD7730_NRST;
    int _AD7730_NSTBY;
    int _AD7730_NRDY;
};

/*
Pinmap AD7730
             #########################
SCK------01-###SCLK             DGND###-24------GND
XTAL1----02-###MCLK IN          DVDD###-23------5VD
XTAL1----03-###MCLK OUT          DIN###-22-----MOSI
A0-------04-###POL              DOUT###-21-----MISO
A1-------05-###/SYNC/          /RDY/###-20-------A2
RST------06-###/RESET/          /CS/###-19-------A3
NC-------07-###VBIAS       /STANDBY/###-18------5VD
GND------08-###AGND            /ACX/###-17-------NC
5VD------09-###AVDD              ACX###-16-------NC
Vref/2---10-###AIN1(+)     REF IN(-)###-15------GND
DMS------11-###AIN1(-)     REF IN(+)###-14-----Vref
NC-------12-###AIN2(+)/D1 AIN2(-)/D2###-13-------NC
             #########################
*/

//###########   AD7730 Definitionen   ######################

#define    AD7730_PIN_NSTANDBY   0  //VCC
#define    AD7730_PIN_NRESET     0  //Reset uC
#define    AD7730_PIN_NCS       A3
#define    AD7730_PIN_NRDY      A2
#define    AD7730_PIN_NSYNC     A1
#define    AD7730_PIN_POL       A0
#endif


AD7730.cpp:
Code:
/*
  AD7730.cpp - Library for Analog Devices AD7730
*/
#include <SPI.h>
#include <Arduino.h>
#include "AD7730.h"

void AD7730::init()
{ _AD7730_NCS  =AD7730_PIN_NCS;
  _AD7730_NSYNC=AD7730_PIN_NSYNC;
  _AD7730_POL  =AD7730_PIN_POL;
  _AD7730_NRST =AD7730_PIN_NRESET;
  _AD7730_NSTBY=AD7730_PIN_NSTANDBY;
  _AD7730_NRDY =AD7730_PIN_NRDY;
  setPINs();  
  //SPI
 SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV16);
  SPI.begin();

}
/*void AD7730::init(int SYNC,int POL,int RST,int STBY,int CSS,int RDY)
{
}
*/
void AD7730::setPINs(void){
  if (_AD7730_NSTBY){
  pinMode(_AD7730_NSTBY     , OUTPUT);
  digitalWrite(_AD7730_NSTBY,   HIGH);
  }
  if (_AD7730_NRST){
  pinMode(_AD7730_NRST       , OUTPUT);
  digitalWrite(_AD7730_NRST  ,   HIGH);
  }
  if (_AD7730_NCS){
  pinMode(_AD7730_NCS       , OUTPUT);
  digitalWrite(_AD7730_NCS  ,   HIGH);
  }
  if (_AD7730_POL){
  pinMode(_AD7730_POL       , OUTPUT);
  digitalWrite(_AD7730_POL ,   HIGH);
  }
  if (_AD7730_NSYNC){
  pinMode(_AD7730_NSYNC     , OUTPUT);
  digitalWrite(_AD7730_NSYNC,   HIGH);
  }
  pinMode(_AD7730_NRDY      ,  INPUT);
}


wie gesagt, bin dabei...

dann rufe ich es in einem sketch auf:

Code:
#include <AD7730.h>
AD7730 ADC;

void setup(){
  ADC.init();
}

....

Problem ist das ich in der init Funktion schon fehler bekomme: 'SPI' was not declared in this scope

was mache ich falsch?!
Pages: [1]