Hi,
ich hoffe dass ihr mir helfen könnt.
Derzeit versuche ich mit dem XmegaA1 den Acceleration-Sensor (ATAVRBIN1)
zum laufen zu bringen, allerdings komme ich nicht sehr weit. Dazu sollte
ich vielleicht noch erwähnen, dass ich ziemlich unerfahren mit dem
programmieren von Microcontrollern bin.
Soweit ich dass alles verstanden habe, lässt sich mit ASF die benötigte
Software soweit zusammen setzten, dass man im main.c "nur noch" seine
Funktionen aufrufen muss und man sich die Werte von dem Sensor auslesen
kann.
Derzeit sieht man Code so aus:
1
#include<asf.h>
2
3
intmain(void)
4
{
5
6
sensor_platform_init();
7
8
sensor_taccel_dev;// device descriptor
9
sensor_data_taccel_data;// acceleration data from device
Wenn ich dann das ganze Debuggen möchte, erscheinen 4 Error meldungen:
Error 1/2/3/4 lvalue required as unary '&' operand ...
Die Error Meldungen sehen alle gleich aus nur die Zeilen ändern sich.
Wenn man dan zu der Zeile hinspringt kommt man zum folgenden Code:
Welche Studio Version benutzt du denn?
Neueste ist die 6.
Werde in den nächsten Tagen auch etwas mit den beiden Platinen BIN1 und
BIN2 etwas herumexperimentieren.
Kann dir danach evtl. etwas besser weiterhelfen.
Bis dahin kann ich dir nur empfehlen, im Studio 6, dir folgendes
anzusehen:
Im Solution Explorer: die Dateistruktur und dabei besonders das config
Verzeichnis, main.c ruft da zuerst das clock...c auf, in asf.h sind die
vom ASF benötigten header.h files gelistet.
config_board.h beinhaltet die spezielle Hardwarenutzung.
Das erste board spezielle, von main.c aufgerufene file ist "init.c" mit
dem header.c, hier ist alles für die definition der pins und board clock
usw. definiert, da es sich um eine I2C-Schnittstelle handelt, muß auch
dort die betreffende definition der entsprechenden pins und
initialisierung stehen
Im ASF Explorer(mein wichtigstes Hilfsmittel): hier findest du alle
benutzten AFS-Treiber mit einer guten Beschreibung, hier solltest du
alles nötige herauslesen können, wie Functions und benötigte Parameter.
im conf*.h und *.h findest du auch die entsprechenden Pin Definitionen
und Bezeichnungen
Bei Atmel kann man sehr gut nach den Datenblattbezeichnungen gehen, sie
werden fast immer 1 zu 1 übernommen, Konstanten groß geschrieben,
variablen_namen mit Unterstrichen separiert, Speicher- und Register-Bits
gemischt.
Bei der Fehleranzeige kann es manchmal schwierig werden, den Fehler
einzukreisen, da nur ein einziges vergessenes oder nicht definiertes
symbol schon zig Fehlermeldungen verursachen kann.
Da hilft nur eins, suchen suchen, aber gut zu wissen, erst die
schwerwiegenden Fehler ansehen, Zeilennummer merken und dort im main.c
ansehen, dann findet man es in der Regel schnell.
Es ist schon gewaltig, wie viele einzelne Files und Verzeichnisse in nur
einem kleinen Projekt benötigt werden und es ist nicht ganz einfach, da
den Überblick zu behalten. Auch mir geht es da noch nicht viel anders,
da ich eher gewohnt bin in Assembler zu programmieren.
Hoffe immerhin etwas zur weiteren Fehlersuche geholfen zu haben
noch etwas, ohne es jetzt selber weiter nachgeprüft zu haben:
sensor_get_acceleration (&accel_dev, &accel_data);
das scheint schon mal falsch zu sein, denn das ist noch nicht bestimmt.
Damit kann main.c noch nichts anfangen, ist nur der Prototype?
In diese function müssten erst noch die richtigen Parameter eingetragen
werden.
Bei den beiden Parametern handelt es, so viel ich weiß, nur um 2 Pointer
variablen, die erst noch bestimmt werden müssen.
Wie schon gesagt, müsste sich dann um GROßSCHREIBUNG oder ZAHLEN als
Parameter handeln.
Ich kenne aber diese Bezeichningen noch nicht.
Im AFS-Explorer oder dessen Beschreibung, solltest du aber fündig
werden.
Hi,
vielen Dank für die Antwort. Derzeit benutze ich die aktuelle Version
6.0 von Atmel Studio. Den ASF explorer hab ich auch schon etwas durch
gekaut, bin aber leider erfolglos geblieben.
Der Funktionsaufruf: sensor_get_acceleration (&accel_dev, &accel_data);
ist am Anfang des Codes definiert.
eigentlich sollte das Programm so funktionieren...eigentlich....,aber
soweit meine Fehlersuche verlaufen ist endet es immer bei einer
Fehldefinition des sensors.
Kann das Programm gerne per email verschicken, um die Fehlersuche
vielleicht etwas einfacher zu gestalten.
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.