Hallo zusammen, ich würde gerne zum Spaß Mikrocontroller programmieren lernen und habe mir deshalb einen Asuro Robo besorgt. Leider scheitere ich schon beim Build des Projektes (zumindest mit AVR Studio). Ich nutze AVR Studio 7 und habe ein Projekt angelegt. GCC Executable Project - Device Selection: ATmega8. Wenn ich die Asuro lib herunterlade, ist in dem Zipfile ein MakeFile enthalten, die ich in den Projekt Eigenschaften bei Mike file Name angebe. Ich habe ein einfaches Program zum Testen kopiert: #include "asuro.h" int main(void) { unsigned char t1, t2; Init(); SerWrite("\r\nTastsensor Test\r\n",19); while(1) { t1 = PollSwitch(); t2 = PollSwitch(); if(t1 && t2 && t1 == t2) { PrintInt(t1); SerWrite("\r\n", 2); Msleep(500); } } } Dann gehe in AVR Studio oben in der Symbolleiste auf Starten ohne Debugging und wähle Release aus. Dann kommt folgende Ausgabe in der Console (ich weiß leider garnicht was ich damit anfangen soll): Hiert ist wohl der Fehler: g:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\rm.exe: cannot lstat `*~': Invalid argument Vielen Dank schon mal im Voraus! Viele Grüße, Chris ------ Erstellen gestartet: Projekt: GccApplication2, Konfiguration: Release AVR ------ Der Buildvorgang wurde gestartet. Projekt "GccApplication2.cproj" (Standardziele): Erstellung mit der Toolsversion "14.0". Das Ziel "PreBuildEvent" wurde übersprungen, da die Bedingung "false" war . ('$(PreBuildEvent)'!='') wurde als (''!='') ausgewertet. Ziel "CoreBuild" in Datei "G:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" aus Projekt "G:\dev\asuro\GccApplication2\GccApplication2\GccApplication2.cproj" (Ziel "Build" ist davon abhängig): Die RunCompilerTask-Aufgabe aus der G:\Program Files (x86)\Atmel\Studio\7.0\Extensions\Application\AvrGCC.dll-Assembly wird verwendet. RunCompilerTask-Aufgabe Aufgabenparameter: ContentList= asuro.h SubType=compile i2c.h SubType=compile lcd.h SubType=compile lcd_bpi216.h SubType=compile main.c SubType=compile myasuro.h SubType=compile rc5.h SubType=compile ultrasonic.h SubType=compile Aufgabenparameter:Directory=G:\dev\asuro\GccApplication2\GccApplication2 Aufgabenparameter:ProjectFile=G:\dev\asuro\GccApplication2\GccApplicatio n2\GccApplication2.cproj Aufgabenparameter:Project=GccApplication2 Aufgabenparameter:ToolchainSettings=<AvrGcc xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <avrgcc.common.Device>-mmcu=atmega8 -B "$(PackRepoDir)\atmel\ATmega_DFP\1.0.90\gcc\dev\atmega8"</avrgcc.common. Device> <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex> <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss> <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep> <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec> <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfil es.usersignatures> <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.comp iler.general.ChangeDefaultCharTypeUnsigned> <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.comp iler.general.ChangeDefaultBitFieldUnsigned> <avrgcc.compiler.symbols.DefSymbols> <ListValues> <Value>NDEBUG</Value> </ListValues> </avrgcc.compiler.symbols.DefSymbols> <avrgcc.compiler.directories.IncludePaths> <ListValues> <Value>$(PackRepoDir)\atmel\ATmega_DFP\1.0.90\include</Value> </ListValues> </avrgcc.compiler.directories.IncludePaths> <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level> <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler .optimization.PackStructureMembers> <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.co mpiler.optimization.AllocateBytesNeededForEnum> <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.All Warnings> <avrgcc.linker.libraries.Libraries> <ListValues> <Value>libm</Value> </ListValues> </avrgcc.linker.libraries.Libraries> </AvrGcc> Aufgabenparameter:ToolchainName=com.Atmel.AVRGCC8.C Aufgabenparameter:AvrDevice=ATmega8 Aufgabenparameter:Configuration=Release Aufgabenparameter:UsesExternalMakeFile=True Aufgabenparameter:ExternalMakeFilePath=G:\dev\lib\AsuroLib-v280rc2\Asuro Lib-v280rc2\lib\Makefile Aufgabenparameter:BuildTarget=all Aufgabenparameter:CleanTarget=clean Aufgabenparameter:OutputType=Executable Aufgabenparameter:OutputFileName=GccApplication2 Aufgabenparameter:OutputFileExtension=.elf Aufgabenparameter:Language=C Aufgabenparameter:ToolchainFlavour=Native Shell Utils Path G:\Program Files (x86)\Atmel\Studio\7.0\shellUtils G:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe -C "G:\dev\lib\AsuroLib-v280rc2\AsuroLib-v280rc2\lib" -f "Makefile" all make: Entering directory `G:/dev/lib/AsuroLib-v280rc2/AsuroLib-v280rc2/lib' avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT globals.o -MF dep/globals.o.d -c globals.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT adc.o -MF dep/adc.o.d -c adc.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT adc_low.o -MF dep/adc_low.o.d -c adc_low.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder.o -MF dep/encoder.o.d -c encoder.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder_low.o -MF dep/encoder_low.o.d -c encoder_low.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT i2c.o -MF dep/i2c.o.d -c i2c.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT lcd.o -MF dep/lcd.o.d -c lcd.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT lcd_bpi216.o -MF dep/lcd_bpi216.o.d -c lcd_bpi216.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT leds.o -MF dep/leds.o.d -c leds.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor.o -MF dep/motor.o.d -c motor.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor_low.o -MF dep/motor_low.o.d -c motor_low.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT my_motor_low.o -MF dep/my_motor_low.o.d -c my_motor_low.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT print.o -MF dep/print.o.d -c print.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT printf.o -MF dep/printf.o.d -c printf.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT rc5.o -MF dep/rc5.o.d -c rc5.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT sound.o -MF dep/sound.o.d -c sound.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT switches.o -MF dep/switches.o.d -c switches.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT time.o -MF dep/time.o.d -c time.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT uart.o -MF dep/uart.o.d -c uart.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT ultrasonic.o -MF dep/ultrasonic.o.d -c ultrasonic.c avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT version.o -MF dep/version.o.d -c version.c avr-ar cru libasuro.a globals.o adc.o adc_low.o encoder.o encoder_low.o i2c.o lcd.o lcd_bpi216.o leds.o motor.o motor_low.o my_motor_low.o print.o printf.o rc5.o sound.o switches.o time.o uart.o ultrasonic.o version.o rm -rf *.o *~ g:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\rm.exe: cannot lstat `*~': Invalid argument make: *** [all] Error 1 make: Leaving directory `G:/dev/lib/AsuroLib-v280rc2/AsuroLib-v280rc2/lib' Die Ausführung der RunCompilerTask-Aufgabe ist abgeschlossen -- FEHLER. Die Erstellung des Ziels "CoreBuild" im Projekt "GccApplication2.cproj" ist abgeschlossen -- FEHLER. Die Erstellung des Projekts "GccApplication2.cproj" ist abgeschlossen -- FEHLER. Fehler beim Buildvorgang. ========== Build: 0 erfolgreich oder aktuell, 1 fehlerhaft, 0 übersprungen ==========
Chris M. schrieb: > ...\shellUtils\rm.exe: cannot lstat `*~': Invalid argument Soll wohl heissen, daß Funktion lstat() mit dem ungültigen Argument "*~" nicht ausgeführt werden kann. lstat() ermittelt Informationen (Datum und Zeit, Dateigröße, Dateiattribute u.a.) über eine Datei, deren Pfad\Name als Argument an lstat() übergeben wurde. Ich habe keinen Asuro, habe aber interessehalber AsuroLib-v280rc2.zip heruntergeladen und dafür in AVR-Studio 4.19 ein GCC-Projekt eröffnet. Im Makefile habe ich erstmal nach der AsuroLib-Anleitung den vollen Pfad auf den Lib-Ordner eingefügt: LIBPATH = D:\AsuroLib-v280rc2\lib Nun bin ich kein Makefile-Profi, habe nur soweit mögl. einiges probiert und im günstigsten Fall kommt nur noch der Fehler, daß die ELF-Datei nicht gefunden wird und daß diese im gleichen Ordner wie das Makefile vorliegen muß. Mal sehen, wie es weitergeht. LG
Für mich sieht das so aus, als ob deine shell den ausdruck *~ nicht auswerten kann. Irgendwo im makefile wirst du die Zeile rm -rf *.o *~ finden. Lösch dort mal das *~, so dass nur rm -rf *.o übrig bleibt. Sonst nichts verändern. Das hilft dir erstmal über den abbruch von make hinweg, behebt aber nicht den eigentlichen Fehler.
Rainer B. schrieb: > Lösch dort mal das *~ Besser nicht! :o Bei mir läuft es jetzt. In AsuroLib\examples\FirstTry gibt es zum Üben die Datei test.c mit zugehörigem Makefile, das angeblich für viele Zwecke ausreicht. Ich habe im AVR-Studio ein Projekt "test" angelegt, dann test.c und Makefile dorthin kopiert und im Makefile des Projektes folg. Variablen gesetzt bzw. geändert, falls schon vorhanden: Am Makefile-Anfang neu: PROJECT = test Ein paar Zeilen tiefer: TARGET = test Weiter unten: LIBPATH = D:/AsuroLib-v280rc2/lib ##AsuroLib auf Lw D: In Pfadangaben Schrägstriche (/) anstatt Rückstriche (\) verwenden! Im AVR-Studio in Menu Project\Configuration Options und weiter unter "General" muß das Makefile als External Makefile angegeben werden und unter "Custom Options" noch die WinAVR-Pfade für avr-gcc und make, falls keine Atmel Toolchain verwendet wird: C:\WinAVR-20100110\bin\avr-gcc.exe C:\WinAVR-20100110\utils\bin\make.exe Im Projekt in test.c habe ich o.g. Code des TE eingesetzt. Beim Rebuild kamen 2 Warnungen wg. Fehlern in function 'main': pointer targets in passing argument 1 of 'SerWrite' differ in signedness. Zeiger in Arg.1 zeigt auf Wert mit unspezifischem Vorzeichen. Die Zeichen in "..." haben den Typ char, benötigt wird Typ unsigned char. Syntax von SerWrite siehe AsuroLib\lib\inc\asuro.h: void SerWrite (unsigned char *data, unsigned char length); Den Code des TE habe ich wie folgt geändert:
1 | /* test.c */
|
2 | |
3 | //#define version2 //* Version-2 mit Stringfunktionen
|
4 | #ifdef version2
|
5 | #include <string.h> |
6 | #endif
|
7 | |
8 | #include "asuro.h" |
9 | |
10 | int main(void) |
11 | {
|
12 | unsigned char t1, t2; |
13 | |
14 | Init(); |
15 | |
16 | #ifdef version2
|
17 | char szData1[] = {"\r\nTastsensor Test\r\n"}; |
18 | char szData2[] = {"\r\n"}; |
19 | int iLength; |
20 | |
21 | iLength = strlen(szData1); |
22 | SerWrite((unsigned char *) szData1, iLength); |
23 | #else
|
24 | SerWrite((unsigned char *) "\r\nTastsensor Test\r\n", 19); |
25 | //SerWrite("\r\nTastsensor Test\r\n", 19); //Warning!
|
26 | #endif //version2
|
27 | |
28 | while(1) |
29 | {
|
30 | t1 = PollSwitch(); |
31 | t2 = PollSwitch(); |
32 | if (t1 && t2 && t1 == t2) |
33 | {
|
34 | PrintInt(t1); |
35 | |
36 | #ifdef version2
|
37 | iLength = strlen(szData2); |
38 | SerWrite((unsigned char *) szData2, iLength); |
39 | #else
|
40 | SerWrite((unsigned char *) "\r\n", 2); |
41 | //SerWrite("\r\n", 2); //Warning!
|
42 | #endif //version2
|
43 | |
44 | Msleep(500); |
45 | }
|
46 | }
|
47 | }
|
Das Makefile ist auch für andere, eigene Asuro-Projekte verwendbar. Man muß nur die Variablen PROJECT, TARGET und LIBPATH anpassen. LG
Hallo, vielen lieben Dank für die Antworten! Freut mich wirklich sehr, dass mir bei meinem Problem jemand hilft. Das ist mehr als ich erwartet habe. Ich dachte vielleicht findet sich hier jemand, der zufällig auch mit Asuro seine Erfahrungen gemacht hat. Kannst du mir bitte noch einen Link zu der Asuro-Lib schicken, die du runtergeladen hast? Bei dem Link bei dem ich bin, gibt es verschiedene Versionen und alle Makefiles unterscheiden sich... LIBPATH z.b finde ich nirgends. In manchen heißt sie LIB oder TARGET. In machen sind die Linkts in Anführungsstrichen und in machen nicht. Sehr verwirrend. Ich bin zuversichtlich, dass es bei mir auch bald funktionieren wird :) Vielen Dank! Gruß, Chris
Im Asuro-Wiki http://www.asurowiki.de/pmwiki/pub/html/main.html oben unter "Wichtige Links": aktuelle AsuroLib gibt es bei sourceforge.net Auf sourceforge http://sourceforge.net/projects/asuro/ nicht auf das nächstbeste Download-Button (schon gar keine Werbeanzeigen) klicken, sondern "Browse all files" wählen, um alle Angebote zu sehen und auch, was andere Benutzer bevorzugen. Weiter geht es bei "AsuroLib", es kommt eine Liste diverser Versionen. Ich habe AsuroLib V2.8.0 gewählt. Dann kommt eine Liste mit weiteren Unterversionen in Formaten *zip, *.exe, da habe ich AsuroLib-v280rc2.zip gewählt. Dann weiter, irgendwann kommt eine Anzeige wie "Download erfolgt in xxx Sekunden". Chris M. schrieb: > LIBPATH z.b finde ich nirgends. In manchen heißt sie LIB oder TARGET. > In machen sind die Linkts in Anführungsstrichen und in machen nicht Irgendwie falsch gesucht. LIBPATH, TARGET u.a. im Makefile sind keine Links, sondern Variablen, die zur weiteren Verarbeitung bestimmte Werte haben sollen. Am Besten erstmal die AsuroLib runterladen, auspacken und dann ein Übungsbeispiel wie "FirstTry" ausprobieren. Das Makefile kann man im Studio öffnen, durchsuchen, ggf. anpassen und wieder speichern. Zum Compilieren nicht Build, sondern Rebuild wählen, damit alle Änderungen wirksam und im Projekt übernommen werden. Weiterführendes zum AVR Makefile: Beispiel, viele Einzelheiten: https://www.mikrocontroller.net/articles/Beispiel_Makefile Tutorial/Exkurs: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Exkurs_Makefiles Mfile: http://www.sax.de/~joerg/mfile/ Weiteres Beispiel: https://gist.github.com/entrity/5424505 Atmel Studio ab 6.x kenne ich nicht, evtl. wäre ein altes AVR-Studio (z.B. 4.19 Build 730) aus diversen Gründen hier besser geeignet. > Bei dem Link bei dem ich bin, gibt es verschiedene Versionen und alle > Makefiles unterscheiden sich... Poste den Link doch hier (aber nichts von softonic oder dergl.!). LG
Die Asuro Lib gibt es auch hier: https://github.com/ChrisMicro/AsuroLib Github hat manchmal den Vorteil, dass man die Dateien direkter anschauen kann.
chris_ schrieb:
> Vorteil, dass man die Dateien direkter anschauen kann.
Ja, evtl. kann man ReadMe und die Install-Anleitung durchlesen. Ist aber
sonst für Neulinge verwirrend. Letztlich muß/sollte gerade der Anfänger
nach Anleitung im Wiki vorgehen und das Original-Paket runterladen,
sonst fehlt nachher irgendetwas und es gibt wieder unnötige Probleme.
Hallo Chris M. vielleicht wäre es für Dich interessant, einen Asuro Ersatzroboter zu bauen: http://roboterclub-freiburg.de/projekte/freiBot/index.php Die Bauteile kosten deutlich weniger als ein Asuro, der Arduino Nano hat 32K Flash statt 8K Flash wie der Atemga8. Außerdem ist das Programmieren über das USB-Kabel sicherer als über die Infrarot Schnittstelle. Teile der Asuro-Lib sind in die FreiBot-Beispiele mit eingebaut: https://github.com/ChrisMicro/freiBot
Hallo zusammen, vielen Danke nochmal für die Bemühungen. Glaub man merkt ich bin noch blutiger Anfänger. Aber aller Anfang ist schwer. >Weiterführendes zum ... Danke Rainer V. für die Links und die auführlichen Erläuterungen! Für mich ist es schwer herzauszufinden, wo ich die für mich relevanten Informationen finden kann. >http://sourceforge.net/projects/asuro/ Mit dem Link hat es jetzt funktioniert. Dort ist auch die Variable LIBPATH und das Makefile sieht ganz anders aus. Den Link dazu weiß ich leider nicht mehr. >LIBPATH, TARGET u.a. im Makefile sind keine Links, sondern Variablen Sorry ich meinte nicht Links sonders Pfade :) In manchen Makefiles sind die Pfade in Anführungsstrichen. Aber ich glaube das liegt eher daran, dass die Pfade Leerzeichen enthalten. >Atmel Studio ab 6.x kenne ich nicht, evtl. wäre ein altes AVR-Studio >(z.B. 4.19 Build 730) aus diversen Gründen hier besser geeignet. Ich verwende jetzt die Version 4.19. >Die Bauteile kosten deutlich weniger als ein Asuro, der Arduino Nano hat >32K Flash statt 8K Flash wie der Atemga8. Vielen Dank für den Hinweis. Ich habe den Asuro von jemand, der daran verzweifelte, geschenkt bekommen. Ich muss sagen ich finde ihn aber sehr teuer dafür, dass ich die Räder schon des Öfteren wieder mit Kleber befestigen musste, weil die Achsen sehr provisorisch an der Leiterplatte gelötet werden müssen. >Außerdem ist das Programmieren >über das USB-Kabel sicherer als über die Infrarot Schnittstelle. Inwiefern ist USB hier sicherer? Ich denke für meine Zwecke spielt Sicherheit erstmal keine Rolle :) Aber der Arduino Nano könnte vielleicht ja mein zweites Projekt werden. Vielen Dank nochmal! Jetzt kanns los gehen :) Viele Grüße Chris
:
Bearbeitet durch User
Chris M. schrieb: > In manchen Makefiles sind die Pfade in Anführungsstrichen. Aber ich > glaube das liegt eher daran, dass die Pfade Leerzeichen enthalten. Korrekt! Hatte ich weiter oben vergessen, zu erwähnen. > ich finde ihn aber sehr teuer dafür, dass ich die Räder > schon des Öfteren wieder mit Kleber befestigen musste Deswegen habe ich vom Asuro und ähnlichem schnell Abstand genommen. Ich hatte mich mal für Robotik interessiert und habe lange Listen mit Artikeln und Preisen von Bausätzen und Einzelteilen notiert. Letztlich sind alle diese Sachen recht teuer, aber laut Benutzerbeiträgen im Web funktioniert trotzdem so einiges nicht zufriedenstellend. Da ist es vor der Kaufentscheidung ratsam, sich bestens zu informieren. > Jetzt kanns los gehen Noch viel Spaß und Erfolg - LG
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.