morten1027
11.08.2010, 18:07
Servus,
ich fange hier nochmal einen neuen Thread an, damit es in meinem andren nicht drunter und drüber geht.
Und zwar gehts jetzt einfach nur darum eine einfache minifunktion, die einen Wert verdoppelt in die lib zu packen.
Das test-programm funktioniert so wie ich mir das vorstelle wenn ich die funktion ganz normal im hauptprogramm auscodiere.
Das hier ist das hauptprogramm wo ich die funktion (die in der lib sein soll) heraus aufrufe
#include "RP6ControlLib.h"
//int8_t getdoppel(int8_t pzahl1);
int8_t zwischenergebnis,count;
/************************************************** ***************************/
int16_t main(void)
{
initRP6Control(); // Always call this first! The Processor will not work
// correctly otherwise.
initLCD();
showScreenLCD("################", "################");
// Play a sound to indicate that our program starts:
sound(100,40,64);
sound(170,40,0);
mSleep(400);
setLEDs(0b0000);
showScreenLCD("lib test", "Example Program");
mSleep(1000);
zwischenergebnis = getdoppel (3);
uint8_t n = 0;
while (n < zwischenergebnis){ //es sollte jetzt 6mal piepsen
mSleep (1000);
showScreenLCD("in der ", "Schleife");
sound(100,40,64);
n++;
}
return 0;
}
die funktion, habe ich hier in die library Roboter\RP6Examples\Eigene Programme\RP6Lib\RP6control\RP6ControlLib.c geschrieben
int8_t getdoppel(int8_t pzahl1){
int8_t ergebnis = pzahl1 *2;
return ergebnis;
}
und in der headerdatei Roboter\RP6Examples\Eigene Programme\RP6Lib\RP6control\RP6ControlLib.h
habe ich den funktionskopf bekanntgegeben
int8_t getdoppel(int8_t pzahl1)
Allerdings gibt es wenn ich im Hauptprogramm "make all" mache einen Fehler, er kennt die funktion wohl noch nicht?
Gibt es noch etwas auf das ich achten muss oder ich falsch gemacht habe?
Bin wie gesagt in sachen Lib ein Neuling, sorry
Das hier ist der Fehler:
-------- begin --------
avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
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: RP6Control_05_IO_ADC.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_05_IO_ADC.lst -I../../RP6lib -I../../RP6lib/RP6control -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_05_IO_ADC.o.d RP6Control_05_IO_ADC.c -o RP6Control_05_IO_ADC.o
RP6Control_05_IO_ADC.c: In function 'main':
RP6Control_05_IO_ADC.c:31: warning: implicit declaration of function 'getdoppel'
Linking: RP6Control_05_IO_ADC.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_05_IO_ADC.o -I../../RP6lib -I../../RP6lib/RP6control -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_05_IO_ADC.elf.d RP6Control_05_IO_ADC.o ../../RP6lib/RP6control/RP6ControlLib.o ../../RP6lib/RP6common/RP6uart.o ../../RP6lib/RP6common/RP6I2CmasterTWI.o --output RP6Control_05_IO_ADC.elf -Wl,-Map=RP6Control_05_IO_ADC.map,--cref -lm
RP6Control_05_IO_ADC.o: In function `main':
C:\Users\Andreas Martin\Documents\Roboter\RP6Examples\Eigene Programme\Versuch Lib/RP6Control_05_IO_ADC.c:31: undefined reference to `getdoppel'
make: *** [RP6Control_05_IO_ADC.elf] Error 1
> Process Exit Code: 2
> Time Taken: 00:01
ich fange hier nochmal einen neuen Thread an, damit es in meinem andren nicht drunter und drüber geht.
Und zwar gehts jetzt einfach nur darum eine einfache minifunktion, die einen Wert verdoppelt in die lib zu packen.
Das test-programm funktioniert so wie ich mir das vorstelle wenn ich die funktion ganz normal im hauptprogramm auscodiere.
Das hier ist das hauptprogramm wo ich die funktion (die in der lib sein soll) heraus aufrufe
#include "RP6ControlLib.h"
//int8_t getdoppel(int8_t pzahl1);
int8_t zwischenergebnis,count;
/************************************************** ***************************/
int16_t main(void)
{
initRP6Control(); // Always call this first! The Processor will not work
// correctly otherwise.
initLCD();
showScreenLCD("################", "################");
// Play a sound to indicate that our program starts:
sound(100,40,64);
sound(170,40,0);
mSleep(400);
setLEDs(0b0000);
showScreenLCD("lib test", "Example Program");
mSleep(1000);
zwischenergebnis = getdoppel (3);
uint8_t n = 0;
while (n < zwischenergebnis){ //es sollte jetzt 6mal piepsen
mSleep (1000);
showScreenLCD("in der ", "Schleife");
sound(100,40,64);
n++;
}
return 0;
}
die funktion, habe ich hier in die library Roboter\RP6Examples\Eigene Programme\RP6Lib\RP6control\RP6ControlLib.c geschrieben
int8_t getdoppel(int8_t pzahl1){
int8_t ergebnis = pzahl1 *2;
return ergebnis;
}
und in der headerdatei Roboter\RP6Examples\Eigene Programme\RP6Lib\RP6control\RP6ControlLib.h
habe ich den funktionskopf bekanntgegeben
int8_t getdoppel(int8_t pzahl1)
Allerdings gibt es wenn ich im Hauptprogramm "make all" mache einen Fehler, er kennt die funktion wohl noch nicht?
Gibt es noch etwas auf das ich achten muss oder ich falsch gemacht habe?
Bin wie gesagt in sachen Lib ein Neuling, sorry
Das hier ist der Fehler:
-------- begin --------
avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
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: RP6Control_05_IO_ADC.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_05_IO_ADC.lst -I../../RP6lib -I../../RP6lib/RP6control -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_05_IO_ADC.o.d RP6Control_05_IO_ADC.c -o RP6Control_05_IO_ADC.o
RP6Control_05_IO_ADC.c: In function 'main':
RP6Control_05_IO_ADC.c:31: warning: implicit declaration of function 'getdoppel'
Linking: RP6Control_05_IO_ADC.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_05_IO_ADC.o -I../../RP6lib -I../../RP6lib/RP6control -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_05_IO_ADC.elf.d RP6Control_05_IO_ADC.o ../../RP6lib/RP6control/RP6ControlLib.o ../../RP6lib/RP6common/RP6uart.o ../../RP6lib/RP6common/RP6I2CmasterTWI.o --output RP6Control_05_IO_ADC.elf -Wl,-Map=RP6Control_05_IO_ADC.map,--cref -lm
RP6Control_05_IO_ADC.o: In function `main':
C:\Users\Andreas Martin\Documents\Roboter\RP6Examples\Eigene Programme\Versuch Lib/RP6Control_05_IO_ADC.c:31: undefined reference to `getdoppel'
make: *** [RP6Control_05_IO_ADC.elf] Error 1
> Process Exit Code: 2
> Time Taken: 00:01