Forum: Mikrocontroller und Digitale Elektronik Nutzung ASF von AtmelStudio für eingene Hardware


von Tom (Gast)


Lesenswert?

Hi.

Ich möchte gerne mit einer eigenen Hardware das ASF mal testen bzw. 
nutzen.
Leider sind alle Tutorial Videos wie auch Beschreibungen auf 
vordefinierte EvalBoards abgestimmt.
Gibt es nicht irgendwo anständige Infos über die Definierung der Ports 
beispielsweise wenn man eigene Hardware einrichtet.
Am liebsten wäre mir ein Tutorial von Anfang an wenn man das Projekt im 
Studio anlegt.

Weiß hier jemand Rat?

Grüße Tom

von c-hater (Gast)


Lesenswert?

Tom schrieb:

> Ich möchte gerne mit einer eigenen Hardware das ASF mal testen bzw.
> nutzen.
> Leider sind alle Tutorial Videos wie auch Beschreibungen auf
> vordefinierte EvalBoards abgestimmt.

Ja, als Programmierer kommt es schonmal vor, daß es mit Video gucken 
allein nicht erledigt ist, sondern daß man auch mal Doku lesen muß...

Z.B.: diese:

http://www.atmel.com/dyn/resources/prod_documents/doc8432.pdf

von Tom (Gast)


Lesenswert?

>wie auch Beschreibungen...
Danke!
Link werde ich mir anschauen, restlichen Text hättest Du Dir auch sparen 
können.

von Alex (Gast)


Lesenswert?

Ich habe das gleiche Problem. Atmel hat anscheinend kein Interesse daran 
dass man NICHT ihre Boards benutzt.
Ich habe schon die ganze verfügbare Dokumentation abgegrast, aber auch 
keine praktische Hilfe gefunden...
Kleiner Tipp: Ein Projekt mit einem Atmelboard erstellen und dort 
nachschauen, was alles zum Board definiert wird und dann für das eigene 
Board anpssen.
Leider legt das ASF einen ziemlich undursichtigen Wust an Dateien an - 
auch deshalb ist es in diesem Forum von vielen (leider) verpönt.
Deshalb muss man sich zuerst einmal durch die verwendete Hierarchie 
durchbeißen.

von Ben (Gast)


Lesenswert?

Hierzu hätte ich auch eine Frage, da es mir wie Alex geht.

Ich habe ein neues Projekt auf Basis eines Beispielprojekts angelegt: 
"Inertial Sensor Demonstration" auf UC3_L0.

Leider ist dort ein AVRSBIN1 verwendet. In den Quellen sehe ich, dass 
prinzipiell auch ein AVRSBIN2 möglich wäre (welches ich auch habe).

Nur wo zum Teufel stellt man das ein?
In der Header Datei "sensors_xplained.h" wird EXT_BOARD abgefragt:

#elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2)

Aber auch mit suchen in der kompletten Solution bin ich nicht fündig 
geworden, wo EXT_BOARD gesetzt wird.

Kann mir hier einer helfen?

von RobWa (Gast)


Lesenswert?

Hallo,

wie ich das sehe, wird EXT_BOARD von vornherein nirgends eingestellt, 
das musst Du erst machen wenn Du ein Extension-Board verwendest. Dann 
kannst Du einstellen um welches Ext-Board es sich handelt, abhängig 
davon werden dann die entsprechenden includes geladen. Du hast hier auch 
die Möglichkeit ein eigenes Extensionboard zu verwenden, musst aber die 
notwendigen includes dazu in die Datei board.h selbst eintragen:
#  elif EXT_BOARD == USER_EXT_BOARD
    // User-reserved area: #include the header file of your extension 
board here
    // (if any).

Die möglichen Werte für EXT_BOARD stehen ebenfalls in der Datei conf.h:

/*! \name Extension Boards
 */
//! @{
#define EXT1102                      1  //!< AT32UC3B EXT1102 board
#define MC300                        2  //!< AT32UC3 MC300 board
#define SENSORS_XPLAINED_INERTIAL_1  3  //!< Xplained inertial sensor 
board 1
#define SENSORS_XPLAINED_INERTIAL_2  4  //!< Xplained inertial sensor 
board 2
#define SENSORS_XPLAINED_PRESSURE_1  5  //!< Xplained pressure sensor 
board
#define SENSORS_XPLAINED_LIGHTPROX_1 6  //!< Xplained light & proximity 
sensor board
#define SENSORS_XPLAINED_INERTIAL_A1 7  //!< Xplained inertial sensor 
board "A"
#define RZ600_AT86RF231              8  //!< AT86RF231 RF board in RZ600
#define RZ600_AT86RF230B             9  //!< AT86RF230B RF board in 
RZ600
#define RZ600_AT86RF212             10  //!< AT86RF212 RF board in RZ600
#define SENSORS_XPLAINED_BREADBOARD 11  //!< Xplained sensor development 
breadboard
#define SECURITY_XPLAINED           12  //!< Xplained ATSHA204 board
#define USER_EXT_BOARD              99  //!< User-reserved extension 
board (if any).
//! @}

Die Datei sensors_xplained.h wird erst geladen wenn EXT_BOARD mit 
"SENSORS_XPLAINED_*" definiert ist -> siehe board.h, Zeilen 284-290.

Grüße,
Robert.

von Ben (Gast)


Lesenswert?

Hallo Robert,

Danke für die Antwort.
Aber über welchen Mechanismus wird das Inertial_1 verwendet, wenn ich 
keine Angaben mache? Hier würde ich gerne ansetzen?

Grüße
ben

von Simon K. (simon) Benutzerseite


Lesenswert?

Meine Erfahrung? Bevor ich mich in den ASF Krempel eingearbeitet habe, 
und durchblicke, wie so die defines "verlaufen" und was wo stehen soll, 
habe ich die nötigen Funktionalitäten selbst implementiert.

Für kompliziertere Sachen wie USB Stack oder FAT32 gibt es genügend 
Alternativen.

von RobWa (Gast)


Lesenswert?

Hallo Ben,

habe ich das richtig verstanden, dass Du das "Xplained inertial sensor
board 1" als Erweiterungsboard verwenden willst? Dann musst Du in die 
Datei board.h den Eintrag:

#define EXT_BOARD SENSORS_XPLAINED_INERTIAL_1

hinzufügen. Der Compiler weiß dann, dass dieses Board verwendet wird und 
lädt die Datei sensors_xplained.h dazu und stellt die entsprechenden 
Anschlußzuordnungen usw. her.
Wenn Du kein EXT_BOARD definierst, ist für den Compiler auch kein 
Erweiterungsboard vorhanden.
Grüße,
Robert.

von Ben (Gast)


Lesenswert?

Danke für die Anmerkungen und Tipps.
Im Grunde wollte ich nur mal auf die schnelle sehen, was der 
Magnetfeldsensor so ausspuckt. Dann hätte ich die entsprechenden Teile 
entweder nachimplementiert oder übernommen. Man muss ja nicht immer 
alles selbst implementieren..
Stolperstein soll an der Stelle die Selbstkalibierung sein, deshalb 
wollte ich hier mal sehen wie Atmel das macht. Nur leider kommt es 
garnicht so weit.

@RobWa:
Du hast mich leider missverstanden. Ohne jegliche weitere Definition 
(meinerseits) geht das ASF Projekt davon aus, dass ein Inertial 1 dran 
hängt. Habe aber leider ein Inertial 2.
Auch mittels debugging konnte ich die Stelle nicht finden, an der das 
definiert ist. Vermutlich komme ich an der Stelle wegen des Define 
Statements ganicht vorbei. Aber auch eine Suche nach "EXT_BOARD" war 
erfolglos, bzw. ich habe die entsprechende Stelle nicht gefunden.
Da ich dann irgendwann selbst an mir zweifelte, habe ich mal hier 
nachgefragt. Hätte ja sein können, dass sich da jemand mit ASF und 
dessen Philosophie auskennt. Besonders intuitiv finde ich es ja bisher 
nicht..

Grüße
Ben

von Ben (Gast)


Lesenswert?

Ich nochmal:

an folgender Stelle in sensors_xplained.c
wird für EXT_BOARD = 3 angezeigt, das entspricht dem Inertial_1
1
void sensor_board_init(void)
2
{
3
  /* Configure all defined Xplained Sensor board I/O pins.
4
   *
5
   * \todo
6
   * Determine whether the interrupt event flag (rising edge, falling
7
   * edge, toggle, etc.) should be a statically configurable parameter
8
   * for devices requiring more flexibility in how events are detected.
9
   */
10
#if (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1) || \
11
  (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2) || \
12
  (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1)
13
14
  gpio_configure_pin(SENSOR_BOARD_PIN3, PIN_INPUT_FLAGS);
15
  gpio_configure_pin(SENSOR_BOARD_PIN4, PIN_INPUT_FLAGS);
16
  gpio_configure_pin(SENSOR_BOARD_PIN5, PIN_INPUT_FLAGS);

wird für EXT_BOARD = 3 angezeigt, das entspricht dem Inertial_1.
Trotz, dass ich im Mainfile folgendes Statement angegeben habe
1
#define EXT_BOART SENSORS_XPLAINED_INERTIAL_2

Dies bringt weder einen Fehler, noch eine Warnung, dass das 2x definiert 
wird. So langsam bin ich echt ratlos

von Amateur (Gast)


Lesenswert?

>Ich habe das gleiche Problem. Atmel hat anscheinend kein Interesse daran
>dass man NICHT ihre Boards benutzt.

Ein Tipp im Geheimen: Nach Drei ist noch nicht Schluss da kommt 
tatsächlich Vier.

Atmel ist ein Hersteller von Mikroprozessoren, der seine Boards für 
Schulungszwecke - wie auch andere Hersteller - verkauft. Würde mich 
nicht wundern, wenn das Ganze sogar ein mächtiges Zuschussgeschäft wäre.

Leider wurde das Sprichwort: "Vor Betätigung des Mundwerkes - Hirn 
einschalten", noch nicht für die Tastatur angepasst.

von Ben (Gast)


Lesenswert?

Wenn man macht was einem gesagt wird, dann funktionierts:


> Dann musst Du in die
> Datei board.h den Eintrag:
>
> #define EXT_BOARD SENSORS_XPLAINED_INERTIAL_1
>
> hinzufügen.

von Ben (Gast)


Lesenswert?

Amateur schrieb:

> Ein Tipp im Geheimen: Nach Drei ist noch nicht Schluss da kommt
> tatsächlich Vier.
>
> Atmel ist ein Hersteller von Mikroprozessoren, der seine Boards für
> Schulungszwecke - wie auch andere Hersteller - verkauft. Würde mich
> nicht wundern, wenn das Ganze sogar ein mächtiges Zuschussgeschäft wäre.
>
> Leider wurde das Sprichwort: "Vor Betätigung des Mundwerkes - Hirn
> einschalten", noch nicht für die Tastatur angepasst.

Und was soll uns das sagen?

von Steffen (Gast)


Lesenswert?

hast du schonmal die CompilerSwitches angeschaut?
ich schreibs dir mal in der kürzesten Form auf:

ALT+F7
Toolchain
Symbols

dort findest Du die Definition von EXT_BOARD

am Ende die Einstellungen abspeichern

von Ben (Gast)


Lesenswert?

Steffen schrieb:
> hast du schonmal die CompilerSwitches angeschaut?
> ich schreibs dir mal in der kürzesten Form auf:
>
> ALT+F7
> Toolchain
> Symbols
>
> dort findest Du die Definition von EXT_BOARD
>
> am Ende die Einstellungen abspeichern

Klasse! Genau DAS habe ich gesucht. Ist ja gut versteckt ..

Grüße
Ben

von Amateur (Gast)


Lesenswert?

>Und was soll uns das sagen?

Nichts, nachdem der Erguss, auf den sich das ganze bezog, unterschlagen 
wurde.

von Michael (Gast)


Lesenswert?

Ben schrieb:
> Trotz, dass ich im Mainfile folgendes Statement angegeben habe
> #define EXT_BOART SENSORS_XPLAINED_INERTIAL_2
>
> Dies bringt weder einen Fehler, noch eine Warnung, dass das 2x definiert
> wird. So langsam bin ich echt ratlos

wenn man die Möglichkeit von Steffen mal aussen vor lässt (die ja zu 
gehen scheint), wäre eine Korrektur des Fehlers im zitierten Statement 
evtl. auch die Lösung gewesen: BOARD schreibt man NICHT mit "T" (siehe 
"EXT_BOART")

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.