PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ich werde Irre.... ;) :(



oderlachs
29.01.2013, 18:58
Nach langem habe ich mal wieder meinen Asuro ausgekramt, weil ich damals nicht mt klar kam irgend ein eigenes Programm zu schreiben. Nach dem ich mich nun mit AVR/Arduino/ARV Studio gefestigt hatte kommen doch immer wieder Fehlermeldungen im AVR Studio beim Compilierversuch, selsbt bei einfachten programmen nur mal eben um ne LED zu schalten oder so:

C:\ASURO_src\asu_test1\default/../asu_test1.c:13: undefined reference to `Init'
C:\ASURO_src\asu_test1\default/../asu_test1.c:18: undefined reference to `StatusLED'
C:\ASURO_src\asu_test1\default/../asu_test1.c:21: undefined reference to `Sleep'
C:\ASURO_src\asu_test1\default/../asu_test1.c:23: undefined reference to `StatusLED'
C:\ASURO_src\asu_test1\default/../asu_test1.c:26: undefined reference to `Sleep'


was mache ich nur falsch...?

#include "asuro.h" // liegt im selben Verzeichnis
// Testlauf der StatusLED
// beim ASURO
#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>
#include <stdlib.h>

int main (void)

{
unsigned int i;
Init();

while(1)
{

StatusLED(RED);
for (i= 0;i < 255;i++)
{
Sleep(255);
}
StatusLED(GREEN);
for (i= 0;i < 255;i++)
{
Sleep(255);
}
}
return 0;
}

MagicWSmoke
29.01.2013, 19:18
In den Projektoptionen des AVR-Studio den Pfad zur asuro.h angegeben ?

oderlachs
29.01.2013, 19:56
Danke vielmals !!
ja habe ich , ich habe den ganzen nachmittag schon recherchiert im Web, Libs runtergezogen die neusten usw... Wenn ich nicht auch andere AVR-Studio"fremde" Sachen damit schon erstellt hätte, würde ich sagen in kann das AVR Studio nicht bedienen, will damit nicht sagen, das ich darin vollendet bzw unfehlbar bin !

Ich habe das ganze asuro_src hinund her geschoben, mit ext. Makefile angepasst, auch nicht ohne Fehler...beim compilieren...es gibt ja viele Anleitungen im Web, nur funktionierte keine..oder Leute die selben Aerger hatten schrieben zulöetzt es geht , aber nicht die Ursache warum ..bzw warum nicht vorher..
nun habe ich nochmals die neusten Versionen installiert und wieder kommt bei der AsuroLib-Installation , kein WINAVR installiert.. das andere bleibt wie gehabt beim Compilieren. Den Pfad zur Asurolib habe ich auch angegeben...aber wenns mich zu lange nervt dann...gar nix dan kommt er wieder in die Verbannung, ist nur schade das ausser dem testprogramm noch nix darauf gelaufen ist....
Na mal sehen, wie viel Zeit mir dafür noch bleibt daran zu tüfteln , vom konkreten Vorgehen kann schon nicht mehr die Rede sein..

Dank und Gruss

Gerhard
Nach Neuinstallation von AsuroLib und Winavr kommt nun noch folgendes:


Loaded plugin STK500
gcc plug-in: No AVR Toolchain installation found. Using WinAVR instead if installed.
The AVR GCC plug-in can still be used if you set up your own build tools.
Loaded plugin AVR GCC
Loaded partfile: C:\Programme\Atmel\AVR Tools\PartDescriptionFiles\ATmega8.xml

Klebwax
30.01.2013, 01:14
Ich kenne den Asuro nicht, was ich sehe ist ein C-Problem.


C:\ASURO_src\asu_test1\default/../asu_test1.c:13: undefined reference to `Init'
C:\ASURO_src\asu_test1\default/../asu_test1.c:18: undefined reference to `StatusLED'

Der Compiler kennt die Funktion Init() oder StatusLED() nicht. In deinem gezeigten Code finde ich sie auch nicht. Ich vermute, daß sie zum Asuro gehören. Dann sollten sie aber in irgendeinem Headerfile dem Compiler bekannt gemacht werden. In deinen Includes sehe ich aber nur Includes im Umfeld der C-Library oder von AVR, aber nichts von Asuro. Ich denke da fehlt was.

Das nächste Problem, wenn das in Ordnung ist, wird der Linker machen. Der will nämlich auch wissen, in welchem Libraryfile er diese Funktionen findet.

MfG Klebwax

MagicWSmoke
30.01.2013, 02:28
In deinem gezeigten Code finde ich sie auch nicht. Ich vermute, daß sie zum Asuro gehören.
Im gezeigten Code wird die asuro.h ganz zu Anfang eingebunden. Eine kurze Googlesuche ergibt, dass in der asuro.h die vermissten Funktionen deklariert sind, welche der Compiler bemängelt. Daraus wird klar, dass er die asuro.h nicht findet, darum schrieb ich, ob der Pfad zu selbiger dem Compiler bekannt ist. Gleichzeitig dürfte weitere Fehlermeldungen angezeigt werden, denn wenn der Compiler eine angegebene Headerdatei nicht findet, dann sagt er das auch.

Genauere Details wären hilfreich, welche Version des AVR-Studio, welche Win-AVR Version und der vollständige Compiler-Output.

Klebwax
30.01.2013, 03:17
Im gezeigten Code wird die asuro.h ganz zu Anfang eingebunden. Eine kurze Googlesuche ergibt, dass in der asuro.h die vermissten Funktionen deklariert sind,

Im gezeigten Code wird eine asuro.h ganz zu Anfang eingebunden. Offensichtlich sind dort die verwendeten Funktionen nicht deklariert.

Wenn ich Includes in " " sehe, gehe ich davon aus, daß sie nicht zu einer Library gehören, sondern vom Anwender selbst erstellt worden sind. Ob Google wirklich anzeigt, was in asuro.h im Projektdirektory von Oderlachs wirklich steht?

MfG Klebwax

MagicWSmoke
30.01.2013, 03:47
Wenn ich Includes in " " sehe, gehe ich davon aus, daß sie nicht zu einer Library gehören, sondern vom Anwender selbst erstellt worden sind. Ob Google wirklich anzeigt, was in asuro.h im Projektdirektory von Oderlachs wirklich steht?
Für den Umstand, dass Du das Vorhandensein einer Include komplett übersiehst:

Ich vermute, daß sie zum Asuro gehören. Dann sollten sie aber in irgendeinem Headerfile dem Compiler bekannt gemacht werden. In deinen Includes sehe ich aber nur Includes im Umfeld der C-Library oder von AVR, aber nichts von Asuro.
gehst Du von ziemlich vielen Annahmen aus.

Du siehst doch die offensichtlichen Schwierigkeiten von Oderlachs und da gehst Du dann auch noch davon aus, dass er sich die asuro.h selbst erstellt hat ? Das ist doch Unsinn, er wird froh sein, wenn er die asuro.h bereitgestellt bekommt und nur einbinden muss. Und daran scheint's zu hapern.
Aber selbst dann würde der vollständige Compileroutput für Klarheit sorgen.

Eine vom User erstellte Sammlung von Funktionen kann auch eine Library sein, nur eben keine des Compilers selbst. Die Verwendung von "" oder <> gibt an, wo der Compiler die Header sucht und sagt nichts darüber aus, ob der Header vom User jetzt selbstgestrickt ist, oder vom Anbieter der Hardware bereitgestellt wird.

radbruch
30.01.2013, 06:42
Hallo

Die mit dem asuro ausgelieferte Library (mit Init(), StatusLED(), Sleep() usw.) besteht aus den Dateien asuro.h und asuro.c. Beide Dateien werden in das Verzeichniss kopiert in dem sich der Quellcode des eigenen Programms befindet und mit "" im Includebefehl eingebunden. Wenn man AVR-Studio verwendet, muss man zusätzlich asuro.c in das Projekt einbinden. (Wie man das macht weiß ich nicht, da ich AVR-Studio nicht verwende.) Zusätzlich muss natürlich GCC installiert sein, AVR-Studio und GCC sind Bestandteile von WinAVR. Weitere Includes sind (noch) nicht nötig, weil io.h, interrupt.h und stdlib.h von der asuro-Lib eingebunden werden.

"Nach Neuinstallation von AsuroLib" und "Ich habe das ganze asuro_src hinund her geschoben,..." deutet auf die Verwendung der erweiterten asuro-Lib hin. Diese integriert sich bei der Installation im WinAVR-Pfad:
https://www.roboternetz.de/community/threads/26974-Die-wichtigsten-Dateien-Quellcodes-Downloads?p=252982&viewfull=1#post252982

Mehr kann ich dazu leider nicht sagen, weil ich diese Version der Lib nicht verwende. Dazu gibt es aber hier ein paar Threads, weil die Installation nur funktioniert, wenn man sich an die Anleitung hält. Ebenso verhält es sich übrigens bei der Installation von WinAVR...


...es gibt ja viele Anleitungen (zur Installation) im Web, nur funktionierte keine..oder Leute die selben Aerger hatten schrieben zulöetzt es geht , aber nicht die Ursache warum ..bzw warum nicht vorher.Die einzige gültige Anleitung ist in der Library selbst enthalten. Wenn es plötzlich funktioniert, dann hat man diese vermutlich befolgt.

Wenn gar nichts geht, kann man auch mal die orginale Library von der CD verwenden. Ich selbst verwende Version 3.2 (mit 36kHz-Takt, PrintInt(), Msleep(), Gettime() und der für die IR-Abstandsmessung benötigten Änderung beim Timer2). Go(), Turn(), und was die aktuelle Lib sonst noch bietet, habe ich mir selbst programmiert. Natürlich ist es einfacher, wenn man die vorgefertigten Funktionen der aktuellen Lib verwenden kann, aber der Lerneffekt ist dabei quasi null. Nur wer die Odometrie, das Linienfolgen oder den Empfang von RC5 mal selbst programmiert hat, kapiert, was da alles dahintersteckt:
http://sourceforge.net/projects/asuro/files/AsuroLib/


Neben den zusätzlichen Funktionen bietet die aktuelle Library noch eine weitere neue Funktion: Es werden nur die Bestandteile in das Programm integriert, die im eigenen Programm verwendet werden. Dadurch wird (theoretisch) die Hex-Datei, und damit die Übertragungszeit auf den asuro, kleiner. Ob das bei umfangreichen Programmen wirklich wie gewünscht funktioniert wage ich allerdings zu bezweifeln.



...dann kommt er wieder in die Verbannung,... hat er wirklich nicht verdient. Für viele war er der Einstieg in die Robotik und die Welt der Microkontroller. Auch heute noch zeigt er vorbildlich, wie man die Funktionen des AVR mit minimalistischer Beschaltung nutzt. Wer seinem Charme erliegt, dem stehen schlaflose Nächte bevor.

Gruß

mic

oderlachs
30.01.2013, 08:55
Vielen Dank Euch allen !!!
Ich werde später ausführlicher antworten, bzw eine URL angeben wo Ihr detailierter Informiert werdet in Text und Screenshot , damit möchte ich das Forum nicht belasten...

DANKE !!!

Gerhard

P.S. Verwende AVR Studio 4 letzte Ausgabe/Servicepack mit der Version 5 komme ich einfach nicht klar ...

Nachtrag :
Ich habe mir jetzt Asuro Flash v.1.4.6.56 installiert, natürlich erste Versuche gingen schief, na ja, nun habe ich die Pfade meinen Ansprüchen nach im Programm -AF- geändert und die ersten Tests (eigene Beispiele) gingen gut.:p

Nun werde ich versuchen, ob ich das Andere, was ich gern machen möchte auch klappt, dann bleibt das AVR-Studio für den Asuro erst mal aussen vor... ;)
Bin aber daran interessiert zu wissen warum ich mit dem AVR studio nur Pannen habe..:confused:

Gruss Gerhard

MagicWSmoke
30.01.2013, 14:02
Ich werde später ausführlicher antworten, bzw eine URL angeben wo Ihr detailierter Informiert werdet in Text und Screenshot , damit möchte ich das Forum nicht belasten...
Was willst Du da groß belasten, dafür ist ein Forum da. Im Gegenteil, den Thread hier gibt's noch länger, aber den externen Link irgendwann nicht mehr, jemand der dann ein ähnliches Problem hat, läuft in's Leere, weil ein wesentlicher Teil fehlt.

Bin aber daran interessiert zu wissen warum ich mit dem AVR studio nur Pannen habe..:confused:
Also, hab' mal die neueste Lib geholt, im mitgelieferten Beispiel ADCTest das AVR-Studio Projekt test.aps in Studio4 geöffnet.

Zum Konfigurieren in den "Configuration Options" gibt's nichts, da das im Beispiel mitgelieferte Makefile verwendet wird.
Im Makefile muss der Eintrag LIBPATH auf den Pfad zur Asuro Lib geändert werden, hier LIBPATH = Laufwerk:\Pfad\AsuroLib-v280rc1\lib

Erster Versuch mit "Clean", Compiler bemängelt die nicht vorhandene asuro.h, also asuro.h aus Laufwerk:\Pfad\AsuroLib-v280rc1\lib\inc und gleich noch asuro.c aus Laufwerk:\Pfad\AsuroLib-v280rc1\lib in das Verzeichnis ADCTest kopiert. Nächster Compilerlauf, das Fehlen von myasuro.h wir angemeckert, also auch diese Datei von Laufwerk:\Pfad\AsuroLib-v280rc1\lib\inc nach ADCTest kopiert.
Erneut auf Build geklickt, Compilerlauf darauf mit 0 Fehler.

Run, also die Simulation beschwert sich dagegen, weil im AVR-Studio Projekt Beispiels-File ein absoluter und damit nicht mehr passender Pfad steht.
In den nacheinander aufpoppenden Fenstern werden die Pfade angegeben. Zweimal zur Asuro-Lib, einmal auf \lib, einmal auf \inc, dann noch auf das \include Verzeichnis der WinAVR Installation unter Laufwerk:[\Pfad]\WinAVR-20100110\avr\include, das war's dann, auch die Simulation geht.

Du musst nur darauf hören, was der Compiler sagt, wenn Du nur Fetzerl davon postest, bringt Dich das nicht weiter.
Das Ganze geht sicher auch ohne externes Makefile, dann muss man an den Projektoptionen des AVR-Studio die entsprechenden Einstellungen, also u.A. den Pfad zur Asuro-Lib vornehmen.

oderlachs
30.01.2013, 15:28
Also Magic, Dir einen besonderen Dank und ein grosses Lob für Deine Mühen und Hilfe !

Ich habe versucht das AVR studio anzupassen in Sachen Pfade, ich werde sie hier als Screenshot einstellen, muss nur noch bearbeiten sind ein bisl gross die Dateien. ich habe auch mit ext. Makefile (Einstellungen) gearbeitet, den Pfad selber angeben usw...usf.
Nun habe ich einen grossen Mangel ich verstehe wenig english, ich musste mich schulisch mit Russisch abplagen, im beruf dann mit russisch /ungarisch. Natüprlich verstehe ich einiges aus dem Fachenglish, das hatte ich ein wenig in der Ausbildung als Softwareentwickler...so sind mir auch die Tücken der falschen Pfade genug bekannt in Sachen Compiler...trotzdem ist vieles der Ausgaben von Meldungen für mich "böhmsche Wälder" wie man so sagt.
Vieleicht habe ich auch igendwo einen Fehler den ich selber nicht seh, warum ich nicht zum Erfolg komme, na ja ich werde weiter kämpfen, mit Hilfe von freundlichen Leuten im Forum hier.

Danke

Gerhard

MagicWSmoke
30.01.2013, 17:15
Ich denke, Du machst das zu kompliziert, bzw. machst zu viele Baustellen auf einmal auf.
M.E. würde es reichen, wenn Du Dir mal die selbe Asuro-Lib lädst, wie in meinem Beispiel, dann öffnest Du das dort enthaltene ADCTest Beispiel auf und versuchst so wie von mir beschrieben vorzugehen.
Wenn's dann der Klemmer immer noch nicht zu beseitigen ist, dann den kompletten Compileroutput posten, sowie ggf das Makefile.
Geht erst einmal das ADCTest Beispiel, dann kannst Du darauf aufbauend weitere Veränderungen vornehmen.

oderlachs
30.01.2013, 17:36
Danke Magic !

Ich habe den Klemmer gefunden, es war das Brett vor meinem Kopf :mad:
Ich habe diese Beispiele gar nicht gesehen, nun wo Du mich darauf aufmerksam machst, habe ich sie durchprobiert und siehe da : "NULL PROBLEMO" :p !!!!

Nun kann ich getrost , diese Beispiele als Vorlage bestimmt auch meine eigenen Programme schreiben. Muss nochmals sehen wo es wirklich geklemmt hat, ich meine Vergleichen wo ich in meinem Projekt den Fehler gemacht habe.
Ja es ist schon eine delikate Sache und Herrausforderung an den Programmierer aus dem Asuro so manches noch herrauszukitzeln. das erinnert mich an meine C64 Zeit wo man in ASSR programmiert jede noch freie Speicherstelle genutzt hatte, um vieles mit den 64k herrauszubekommen...
Mit der Asuro PIN-beschaltung und Ausnutzung ist das auch so eine Delikatesse das noch weiter zu entwickeln und zu nutzen....

Ich danke noch einmal allen die mitgeholfen haben das ich vor Frust nicht in den Wassereimer gesprungen bin.. ;)

Bestimmt kann ich hier demnächst von Erfolgen berichten, so hoffe ich es wenigstens !

Beste Grüsse
Gerhard

Nachtrag der 1. : mein erstes programm funtioniert, na ja ich muss mich noch eingehender mit make befasse, hatte einen fehler noch übersehen, bzw. ein Nachtrag mit makefile vergessen. So langsam werde ich das schon packen, Dank der Mithilfe hier :)