Forum: Compiler & IDEs undefined reference to "rc5_data"


von Questionmark (Gast)


Lesenswert?

Hallo,

habe mir die Dateien von Herr Dannegger geladen, da ich mir eine RC5 
Fernsteuerung bauen möchte. Er hat ja drei Dateien "RC5.C, Main.c und 
main.h"

Main.c und Main.h werden verknüpft indem main.c folgende Codezeile hat 
#include "main.h". In main.h ist eine Variable  namens "rc5_data". Wenn 
ich ejtzt kompiliere bekomme ich folgenden Fehler: ...c:20: undefined 
reference to `rc5_data' und das 3x mal. Ich denke mal das liegt an der 
Verlinkungen der Dateien, aber ich habe sie doch includet. Benutze AVR 
Studio 4.15 Build 623.

Wäre schön wenn jemand helfen kann!

Gruß Questionmark :)

von Fabian O. (xfr)


Lesenswert?

Zeig mal den Code. Normalerweise sollte es eine RC5.h geben und keine 
main.h ...

Du musst außerdem RC5.c in das Projekt einfügen, damit sie kompiliert 
und gelinkt wird.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Questionmark schrieb:
> habe mir die Dateien von Herr Dannegger geladen, da ich mir eine RC5
> Fernsteuerung bauen möchte.

Soviel ich weiß, ist das ein RC5-Dekoder von Peter Dannegger. Wenn Du 
aber eine Fernbedienung bauen willst, brauchst Du einen RC5-Encoder.

Oder hast Du Dich einfach nur falsch ausgedrückt?

von Questionmark (Gast)


Lesenswert?

Ja ich meine einen Decoder, also ich sende mit einer Fernbedienung ein
RC5-Codiertes Signal und meine IR-Diode gibt dieses Signal an den uC
weiter.
So einen Code benötige ich,  kennt  evtll. jemand eine Website wo man
sich dieses  downloaden kann?

Wäre super :)

von Oliver (Gast)


Lesenswert?

Was nutzt dir wein weiterer Decoder, du hast doch schon einen?

Dein Problem ist ein ganz anderes: Du hast das Prokejt im AVR-Studio 
nicht richtig angelegt.

Links oben gibt es in der Ansicht den Order Sources. Dort musst du alle 
zum Prjekt gehörogen .c-Dateien importieren. Rechte Maustaste hilft 
weiter ;)

Dann klappt das auch mit dem linken ohne Fehlermeldung.

Oliver

von Questionmark (Gast)


Lesenswert?

Hm wenn ich ein neues Projekt anlege, den Code in die  main.c kopiere, 
ein  neues Headerfile  erstelle und als  rc5.h abspeichere, die  main.c 
kompiliere kommt ein Fehler das  in  der  main.c Variablen undefiniert 
sind, verständlich sind ja nur  in  rc5.h  deklariert das ist  halt echt 
komisch warum der das nicht verlinkt...

von Questionmark (Gast)


Lesenswert?


von Oliver (Gast)


Lesenswert?

Da fehlt keine Variable, da fehlt das define für F_CPU.
Schua halt mal in rc5....h nach, ob das da definiert ist. Vermutlich 
nicht, denn das macht man üblicherweise in den Compileroptionen.


Prokect->Optionen (oder Settings), da gibt es ein Eingabefeld für F_CPU.

Oliver

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Questionmark schrieb:
> Hier  ein Screen:
>
> http://www.bilderhoster.net/1/5639pmya.jpg.php

Steht doch da: F_CPU undefined. Du musst schon Deinen µC-Takt angeben.

von Questionmark (Gast)


Lesenswert?

Achso, ja ich finde da leider keine  Option mit F_CPU ...

Ist das  Programm von roboternetz für einen RC5 Decoder überhaupt 
brauchbar?(doof gefragT)

von Questionmark (Gast)


Lesenswert?

wenn ich das hier reinschreibe;

#define F_CPU 4000000

bekomme ich:

....avr/lib/avr4/crtm8.o:(.init9+0x0): undefined reference to `main'

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Questionmark schrieb:
> ....avr/lib/avr4/crtm8.o:(.init9+0x0): undefined reference to `main'

Dann schreib Dir doch eine Funktion main()! main() ist die 
C-Hauptfunktion, von der alles andere aus gestartet wird. Da rufst Du 
dann den RC5-Decoder auf und fertig.

Da Du offenbar von C überhaupt keine Ahnung hast, wie willst Du es dann 
überhaupt schaffen, aus dem decodierten RC5-Kommando irgendetwas 
sinnvolles als Aktion auszuführen?

Du brauchst erstmal:

 - ein C-Buch. Lerne C auf dem PC
 - AVR-Tutorial und  AVR-GCC-Tutorial. Lerne, den AVR zu programmieren

Fange mit einfachen Blink-Programmen an. In einem halben Jahr kannst Du 
dann nochmal wiederkommen. Vorher wird das nix.

von Questionmark (Gast)


Lesenswert?

Ah lol, ich dachte die  wäre schon drin, alles klar  danke

von Karl H. (kbuchegg)


Lesenswert?

Questionmark schrieb:
> Ah lol, ich dachte die  wäre schon drin, alles klar  danke

Und was hat dich jetzt daran gehindert, den Code den du hast 
durchzuscrollen und zu überprüfen, ob du richtig gedacht hast?


Nur weil du wo anders Code zur Verfügung gestellt bekommst, entbindet 
dich das nicht davon
* selber mitzudenken
* C zu lernen bzw. zu können
* mit deinen Tools wie AVR-Studio umgehen zu können.

Es ist ein Trugschluss zu glauben, nur weil man heutzutage im Web alles 
downloaden kann, braucht man selber nichts mehr zu können bzw. zu 
lernen. Vor das 'Ich will' haben die Götter immer noch das 'Ich kann' 
gestellt. Und das hat sich seit 100000 Jahren nicht verändert und gilt 
heute noch genauso, wie es galt als wir von den Bäumen runterkamen.

von Questionmark (Gast)


Lesenswert?

Die Erde ist eine Scheibe

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.