.S in Atmel Studio 7 einbinden funktioniert nicht

Gast #6286559
Lesenswert?

Hallo,
ich versuche die i2c library von Peter Fleury auf einem attiny26 zum 
laufen zu bekommen.
Da der tiny keinen uart sondern nur ein usi hat, muss ich die 
assemblervariante nehmen.
Allerdings habe ich probleme wenn ich die "i2cmaster.S" datei in AS7 
einfüge.

Eingefügt habe ich diese mit "add existing item". Wenn ich das mit 
normalen .cpp dateien mache, funktioniert das normalerweise auch.

Hier der Code der main.cpp
1
#include <avr/io.h>
2
#include "i2cmaster.h"
3
int main(void)
4
{
5
  i2c_init();
6
    while (1) 
7
    {
8
    }
9
}

als fehler bekomme ich nun:
1
undefined reference to `i2c_init()'

Der output von AS7 sagt folgendes:
https://pastebin.com/euf8RjYu

Vermutlich mache ich irgendetwas falsch.. aber anscheinend habe ich 
Google nicht mit den richtigen Suchwörtern gefüttert...

Hat jemand eine Idee was ich falsch mache?
Vielen Dank schonmal im vorraus!
Angehängte Dateien:
Gast #6286597
Lesenswert?

Brathahn schrieb:

> Eingefügt habe ich diese mit "add existing item". Wenn ich das mit
> normalen .cpp dateien mache, funktioniert das normalerweise auch.

Wenn du einen Rechtsklick auf die Assemblerdatei machst und dann 
"Properties" wählst, was steht dann im Eigenschaftsfenster unter 
"Advanced->Build action"?

Wenn nicht "Compile" (vermutlich ist das so), dann einfach "Compile" 
wählen.
Gast #6286641
Lesenswert?

Brathahn schrieb:

> bei den Properties steht bereits compile.

Tja, dann wirst du wohl herausfinden müssen, warum's nicht compiliert 
(bzw. in diesem Fall: assembliert).

Sollte irgendwelche Fehlermeldungen produzieren, da assembliert werden 
soll, aber offensichtlich nicht erfolgreich assembliert wird. Sowas 
hinterläßt gewöhnlich eindeutige Spuren im Log.
Gast #6286643
Lesenswert?

Hallo pegel,

hast du auch i2c_init() in der main aufgerufen?
wenn ich das ohne den aufruf mache, kompiliert das auch ohne probleme.
(vermutlich wird das dann wegoptimiert)

Wenn ja, was hast Du anders gemacht als ich? Braucht eine .S datei 
vielleicht irgendein bestimmtes Compiler Flag?
Gast #6286662
Lesenswert?

Wenn es wirklich cpp sein muss:
main.c:
1
#ifdef __cplusplus
2
extern "C" {
3
#endif
4

5
#include <avr/io.h>
6
#include "i2cmaster.h"
7

8
int main(void)
9
{
10
    /* Replace with your application code */
11
  i2c_init();
12
    while (1) 
13
    {
14
    }
15
}
16

17
#ifdef __cplusplus
18
}
19
#endif
Gast #6286696
Lesenswert?

Danke pegel für die schnelle Lösung!



c-hater schrieb:
> Nö komisch ist nur, dass immer wieder Leute Sprachen benutzen, von denen
> sie eigentlich überhaupt keine Ahnung haben...

Dann erklär mir doch bitte, warum es nicht funktioniert.
Ich weiss es nämlich tatsächlich nicht.

Ausserdem finde ich das man eine Programmiersprache nicht zu 100% 
verinnerlicht haben muss, nur um mit ihr zu Arbeiten. Auch wenn es 
selbiges sehr erleichtert.

Aber wenn das der fall wäre, würden Seiten wie diese hier oder 
stackoverflow nicht existieren.
Gast #6286732
Lesenswert?

Brathahn schrieb:

>> Nö komisch ist nur, dass immer wieder Leute Sprachen benutzen, von denen
>> sie eigentlich überhaupt keine Ahnung haben...
>
> Dann erklär mir doch bitte, warum es nicht funktioniert.
> Ich weiss es nämlich tatsächlich nicht.
>
> Ausserdem finde ich das man eine Programmiersprache nicht zu 100%
> verinnerlicht haben muss, nur um mit ihr zu Arbeiten. Auch wenn es
> selbiges sehr erleichtert.
>
> Aber wenn das der fall wäre, würden Seiten wie diese hier oder
> stackoverflow nicht existieren.

Du solltest dich von diesem Stänkerer nicht in Defensive drängen lassen. 
Es gehört zum guten Ton im Forum den zu ignorieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren