Ich habe die Grafikerweiterung BGX1 gebaut.
Jetzt habe ich das Beispielprogramm genommen und wollte es in AVRStudio4 kompallieren
#include <nibobee/iodefs.h>
#include <nibobee/i2cmaster.h>
#include <nibobee/bgx1.h>
#include <nibobee/analog.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>
#include <nibobee/clock.h>
#include <nibobee/odometry.h>
#include <nibobee/motpwm.h>
#include <nibobee/motpid.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
int main() {
activate_output_group(IO_LEDS); // LED bits als Output
i2c_init();
led_set(LED_L_YE, 0);
led_set(LED_R_YE, 0);
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
while (!bgx1_init());
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
motpwm_init();
motpid_init();
bgx1_reset();
bgx1_termClear();
// Hauptschleife:
while(1) {
sei();
delay(20);
if (bgx1_getStatus()==0xff) {
bgx1_reset();
bgx1_termGoto(2, 2);
bgx1_termPrint("AN0:");
bgx1_termGoto(2, 3);
bgx1_termPrint("AN1:");
bgx1_termGoto(2, 4);
bgx1_termPrint("T:");
}
bgx1_DDR = 0x00;
bgx1_PORT = 0x00;
bgx1_syncInterface();
bgx1_syncPort();
uint16_t a0 = bgx1_getAnalog(0x40);
uint16_t a1 = bgx1_getAnalog(0x41);
uint16_t temp = bgx1_getAnalog(0xc8);
char text[32];
bgx1_setIllumination(a0);
bgx1_termGoto(7, 2);
sprintf(text, "%4i", (int)a0);
bgx1_termPrint(text);
bgx1_termGoto(7, 3);
sprintf(text, "%4i", (int)a1);
bgx1_termPrint(text);
bgx1_termGoto(7, 4);
sprintf(text, "%4i", (int)temp);
bgx1_termPrint(text);
bgx1_Leds = bgx1_Keys;
}
return 0;
}
Wenn ich compalieren will erhalte ich:
Build started 8.8.2012 at 22:53:06
C:\Programme\NIBObeeLib\lib\libnibobee_pid.a(motpid.o): In function `motpid_setTargetRel':
motpid.c:(.text.motpid_setTargetRel+0x22): undefined reference to `odometry_left'
motpid.c:(.text.motpid_setTargetRel+0x26): undefined reference to `odometry_left'
motpid.c:(.text.motpid_setTargetRel+0x36): undefined reference to `odometry_right'
motpid.c:(.text.motpid_setTargetRel+0x3a): undefined reference to `odometry_right'
C:\Programme\NIBObeeLib\lib\libnibobee_pid.a(motpid.o): In function `motpid_right_timer_int':
motpid.c:(.text.motpid_right_timer_int+0x6): undefined reference to `odometry_pid_right'
motpid.c:(.text.motpid_right_timer_int+0x76): undefined reference to `odometry_right'
motpid.c:(.text.motpid_right_timer_int+0x7a): undefined reference to `odometry_right'
motpid.c:(.text.motpid_right_timer_int+0x170): undefined reference to `odometry_pid_right'
C:\Programme\NIBObeeLib\lib\libnibobee_pid.a(motpid.o): In function `motpid_left_timer_int':
motpid.c:(.text.motpid_left_timer_int+0x6): undefined reference to `odometry_pid_left'
motpid.c:(.text.motpid_left_timer_int+0x76): undefined reference to `odometry_left'
motpid.c:(.text.motpid_left_timer_int+0x7a): undefined reference to `odometry_left'
motpid.c:(.text.motpid_left_timer_int+0x170): undefined reference to `odometry_pid_left'
C:\Programme\NIBObeeLib\lib\libnibobee_pid.a(motpid.o): In function `__vector_8':
motpid.c:(.text.__vector_8+0x4c): undefined reference to `clock_inc_irq'
collect2: ld returned 1 exit status
make: *** [NiBoGrafik.elf] Fehler 1
Build failed with 13 errors and 0 warnings...
Librarys:
libinbobee_line.a
libinbobee_base.a
libinbobee_utils.a
libinbobee_bgx1.a
libinbobee_pid.a
libinbobee_usart.a
libscanf_min.a
was mache ich falsch ?
Ergänzung:
es geht, wenn ich dies ändere
was macht die Funktion ?
wo bekomme ich sie her ?
Na toll, das Beispiel ist wohl fehlerhaft, siehe hier
www.roboternetz.de/community/threads/51528-NIBObee-motpid-h-einbinden-erzeugt-Fehler
Wenigsten geht das Display und gibt irgend welche Zahlen aus...