jo ich versuchs mal
Am besten, du nimmst ein makefile von einem der Beispielprograme des RP6.soll ich dann das makefile von winavr da reinkopieren oder wie?
Normalerweise fängt man ja so an, dass man ein Beispiel (z.B. Example_01_LEDs) hernimmt und das dann ändern will oder auf der Basis dieses Programms weiter machen will. Dann kopiert man einfach das ganze Verzeichnis Example_01_LEDs und fügt es unter neuem Namen (meinetwegen Example_09_LEDsNew) im Verzeichnis RP6BASE_EXAMPLES wieder ein. Dann hat man auch gleich ein passendes makefile.
Die Meldung *** No rule to make target `all' gibt es meist, wenn im Eintrag TARGET = im makefile kein passendes Programm (z.B. MyProg.c) eingetragen ist: TARGET = MyProg
Gruß Dirk
jo ich versuchs mal
also das compilen geht jetzt aber der spuckt jetzt immer so etwas aus und ich kann den fehler im code nicht finden
Die fehlermeldung:
und der code:Code:> "D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LEDsNEW\\make_all.bat" D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LEDsNEW>set LANG=C D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LEDsNEW>make all -------- begin -------- avr-gcc (GCC) 4.1.1 (WinAVR 20070122) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling: RP6Base_LEDs.c avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o RP6Base_LEDs.c: In function 'main': RP6Base_LEDs.c:8: error: expected declaration specifiers before 'initRobotBase' RP6Base_LEDs.c:22: error: expected declaration specifiers before 'return' make: *** [RP6Base_LEDs.o] Error 1 > Process Exit Code: 2
Code:/*********************************************************************/ /***********************Bumper Testprogramm***************************/ /*********************************************************************/ #include "RP6RobotBaseLib.h" int main(void) initRobotBase() PowerON() while(true) { if(getBumperRight) { setLEDs(0b000001); mSleep(500); setLEDs(0b000010); mSleep(500); setLEDs(0b000100); mSleep(500) } } return 0
Vielleicht so:
(nicht getestet)Code:/*********************************************************************/ /***********************Bumper Testprogramm***************************/ /*********************************************************************/ #include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); powerON(); while(true) { if(getBumperRight()) { setLEDs(0b000001); mSleep(500); setLEDs(0b000010); mSleep(500); setLEDs(0b000100); mSleep(500); } } return(0); }
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ah danke
das programm tut zwar nicht,was es tun sollte aber ich konnte es compilen und auf den rp6 laden
danke
gruß flo
Was sollte es denn tun?das programm tut zwar nicht,was es tun sollte ...
Gruß Dirk
es sollte ein lauflicht geben wenn man auf den Bumper drückt aber das hab ich in einem anderen programm besser hinbekommen aber da sind auch einige probleme aufgetreten:
und zwar beschleunigt der rp6 wenn ich einen Bumper drücke bis der überlastungsschutz anschlägt er soll aber mit einer konstanten geschwindigkeit fahren.Code:/************************************************************/ /***********************ERSTES PROGRAMM**********************/ /************************************************************/ #include "RP6RobotBaseLib.h" int main(void) { powerON(); initRobotBase(); { while(true) { task_motionControl(); task_ADC(); if (getBumperLeft()) { move(50,FWD,300,1); mSleep(250); setLEDs(0b010000); mSleep(250); setLEDs(0b001000); mSleep(250); setLEDs(0b000000); } if (getBumperRight()) { move(50,FWD,300,1); mSleep(250); setLEDs(0b000010); mSleep(250); setLEDs(0b000001); mSleep(250); setLEDs(0b000000); } } return 0; } }
Wenn du den move Befehl einsetzt, brauchst du task_motionControl() nicht.
Gruß Dirk
Lesezeichen