Hast du die kompletten Beispiele kopiert, also auch insbesondere das Verzeichnis RP6Lib?
Gruß Dirk
Druckbare Version
Hast du die kompletten Beispiele kopiert, also auch insbesondere das Verzeichnis RP6Lib?
Gruß Dirk
von der cd aufn pc oder vom pc ins pn2?
Ja, genau.Zitat:
von der cd aufn pc
ja hab ich gemacht
ja hab ich gemacht.
Laut Fehlermeldung wird die RP6RobotBaseLib nicht gefunden.Zitat:
ja hab ich gemacht
Das spricht dafür, dass du den Verzeichnisbaum der Beispiele und Libraries evtl. doch nicht komplett bzw. an die richtige Stelle kopiert hast ...
Gruß Dirk
Also
ich hab winavr und pn2 nochmal komplett runtergeschmissen und die versionen von der cd installiert.
mit dem compilen der beispielprogramme klappts jetzt nur bei meinem eigenen Programm gibt der immer noch die gleiche meldung wie vorher aus
ich hab das makefile jetzt gefunden aber wenn ich da jetzt den namen des programmes eingebe,macht der trotzdem nichts anderes
Hallo Siedler_03,
wenn du für JEDES eigene Programm ein eigenes Verzeichnis (rot markiert) anlegst, müßte das klappen. Also:
\Examples\
...RP6BASE_EXAMPLES\
......Example_01_LEDs\
......Example_02_UART_02\
......usw. usw., dann dein NEUES Verzeichnis:
......[highlight=red:49d5a5acae]RP6Base_MyFirstProgram\[/highlight:49d5a5acae]
In das neue Verzeichnis kopierst du dann:
make_all.bat
make_clean.bat
makefile
MyFirstProgram.c (<- Das ist dein neues Programm!)
... und änderst im makefile bei TARGET = die Zeile in:
TARGET = MyFirstProgram
Genau so machst du das für jedes eigene Programm. Am einfachsten ist es am Anfang, ein ganzes vorhandenes Example-Verzeichnis zu kopieren und unter anderem Namen in RP6BASE_EXAMPLES einzufügen. Dann kannst du darin ein Beispiel ändern oder ganz neu entwickeln. Danach müßte alles klappen.
Gruß Dirk
soll ich dann das makefile von winavr da reinkopieren oder wie?
hab ich jetzt einfach gemacht aber dann spuckt der mir sowas aus
gruß floCode:> "D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs\\make_all.bat"
D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs>set LANG=C
D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs>make all
make: *** No rule to make target `all'. Stop.
> Process Exit Code: 2
Am besten, du nimmst ein makefile von einem der Beispielprograme des RP6.Zitat:
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);
}
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?Zitat:
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