Problem: Struct->call by reference->verschiedene Quellen

Gast #2752378
Folgendes Problem:
Ich habe ein Struct für 3 Messwerte (x,y,z) in adxl345.h deklariert. In 
main.c erstelle ich einen Zeiger auf einen solchen Typ und übergebe 
diesen an die Funktion get_acc_adxl345(&adxl345_messwert). Diese 
Funktion befindet sich in adxl345.c und ist der main.c auch bekannt über 
die eingebundene Headerdatei.


Compilerfehler:
expected '=', ',', ';', 'asm' or '__attribute__' before 
'adxl345_messwert'  ADXL345.h (Zeile: extern adxl345 adxl345_messwert)

expected ')' before '*' token  ADXL345.h (Zeile: extern void 
get_acc_adxl345(adxl345 *)

expected ')' before '*' token  ADXL345.c (Zeile: void 
get_acc_adxl345(adxl345 *messwert)




[c]
//main.c
#include <ADXL345.h>

volatile adxl345 *adxl345_messwert;

...

void main()
{
...
get_acc_adxl345(&adxl345_messwert);
...
}


//adxl345.h
#include <inttypes.h>

typedef struct adxl345{
  uint8_t x;
  uint8_t y;
  uint8_t z;
};

extern adxl345 adxl345_messwert;

extern void get_acc_adxl345(adxl345 *);

//adxl345.c
#include <ADXL345.h>
void get_acc_adxl345(adxl345 *messwert)
{
...
  messwert->x = (((int)_buff[1]) << 8) | _buff[0];
  messwert->y = (((int)_buff[3]) << 8) | _buff[2];
  messwert->z = (((int)_buff[5]) << 8) | _buff[4];
}
[\c]

Danke im Vorraus!
Gast #2752402
Das war das erste was ich gemacht habe.

typedef struct adxl345{
  uint8_t x;
  uint8_t y;
  uint8_t z;
};

Deklariert neuen Typ adxl345.

Definition des Typs dann in der main.c

Oder liege ich da falsch?
Gast #2752410
Andreas schrieb:
> typedef struct adxl345{
>   uint8_t x;
>   uint8_t y;
>   uint8_t z;
> };

muss glaub ich so heißen:

typedef struct struct_adxl345{
  uint8_t x;
  uint8_t y;
  uint8_t z;
} adxl345;

"struct_adxl345" kann auch weggelassen werden.
Gast #2752452
ADXL345 ist ein Accelerometer.
Ich will mit der Funktion get_acc_adxl345(&adxl345_messwert); die 
Messwerte des Sensors erhalten.
Dachte mir das ist die beste Möglichkeit oder irre ich mich da?
D.h. ich übergebe der Funktion den Zeiger und die Funktion schreibt die 
Werte.
Gibt es eine bessere/ geschicktere Möglichkeit?

Projekt: Sensorboard mit Gyro und Acc (RoboBee 6 DOF), zum Einstieg in 
die µC Programmierung
Gast #2752469
Andreas schrieb:
> ADXL345 ist ein Accelerometer
Genau deswegen habe ich gefragt. Hatte kurz danach gegoogelt..
Dachte dann, dass du evtl. etwas für den Modellbau oder sowas machst.
Hast du dann noch irgendwas konkretes damit vor?
Hast du einen LCD zum Darstellen der Werte?

Andreas schrieb:
> Gibt es eine bessere/ geschicktere Möglichkeit?
Kann man meiner Meinung nach schon so machen...
Gast #2752477
In ferner Zukunft will ich damit einen einachsigen Roboter Regeln. 
(Inverses Pendel).

Wäre aber auch sicherlich für einen Quadrokopter o.ä. interessant, bzw. 
Segway Klon...

Mal schauen was die zukunft bringt und wie groß das Budget ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.