- Labornetzteil AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 32

Thema: RC-gesteuerter RP6

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    30
    Beiträge
    15
    Anzeige

    E-Bike
    ok

    die fehlermeldung sieh jetzt so aus

    Code:
    > "make.exe" all
    
    -------- begin --------
    avr-gcc (WinAVR 20081124rc3) 4.3.2
    Copyright (C) 2008 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
    In file included from RP6Base_LEDs.c:6:
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:77: error: two or more data types in declaration specifiers
    make.exe: *** [RP6Base_LEDs.o] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00

    und jetzt ???


    danke

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Jetzt solltest du uns mal dein Programm zeigen :)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    30
    Beiträge
    15
    dann tuh ich das mal

    Code:
    // RC-RP6 erster Versuch  18.11.07 mic 
    
    #include "rblib.h" 
    #include "rblib.c" 
    
    #include "RP6RobotBaseLib.h" 
    #define RP6BASELIB_H // zusäzliche Definition 
    
    uint8_t y, z; 
    uint8_t rc_input_pwr, rc_input_dir; 
    uint8_t rc_pwr, rc_dir; 
    
    ISR(TIMER0_COMP_vect) 
    { 
       //static uint16_t count=0; 
       static uint16_t rc_temp_pwr=0; 
       static uint16_t rc_temp_dir=0; 
       //if(count>x) PORTA &= ~16; else PORTA |= 16;   // E_INT1 (Pin8) 
       //if(count>y) PORTC &= ~1;  else PORTC |= 1;   // SCL (Pin10) 
       //if(count>z) PORTC &= ~2;  else PORTC |= 2;   // SDA (Pin12) 
       //if(count<1000)count++; else count=0; 
       if (PINC & 1) rc_temp_dir++; else 
          if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; } 
       if (PINC & 2) rc_temp_pwr++; else 
          if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; } 
    } 
    void servo_init(void) 
    { 
       //DDRA |= 16;            // E_INT1 als Ausgang 
       //DDRC |= 3;            // SCL und SDA als Ausgang 
    
       TCCR0 =  (0 << WGM00) | (1 << WGM01);               // CTC-Mode 
       TCCR0 |= (0 << COM00) | (0 << COM01);               // ohne OCR-Pin 
       TCCR0 |=   (0 << CS02)  | (1 << CS01) | (0 << CS00);   // prescaler /8 
       TIMSK =  (1 << OCIE0);                               // Interrupt ein 
       OCR0  = 9; // 100kHz? 
    } 
    int main(void) 
    { 
       rblib_init(); 
       servo_init(); 
    
       setLEDs(0b1001); 
       setMotorDir(FWD,FWD); 
       setMotorPWM(0,0); 
    
    while(1) 
    { 
       rc_pwr=0; 
       rc_dir=0; 
    
       if (rc_input_dir<120) { rc_dir=150-rc_input_dir; setMotorDir(BWD,FWD); } 
       if (rc_input_dir>140) { rc_dir=rc_input_dir-110; setMotorDir(FWD,BWD); } 
       if (rc_input_pwr<120) { rc_pwr=150-rc_input_pwr; setMotorDir(FWD,FWD); } 
       if (rc_input_pwr>140) { rc_pwr=rc_input_pwr-110; setMotorDir(BWD,BWD); } 
       rc_pwr*=3; 
       if (rc_pwr) 
       { 
          if (rc_input_dir<120) setMotorPWM(rc_pwr-rc_dir,rc_pwr+rc_dir); 
          else if (rc_input_dir>140) setMotorPWM(rc_pwr+rc_dir,rc_pwr-rc_dir); 
          else setMotorPWM(rc_pwr,rc_pwr); 
       } 
        else 
       { 
          setMotorPWM(rc_dir*3, rc_dir*3); 
       } 
    
    } 
    
       return 0; 
    }
    das ist das program aus einem der ersten beiträge.

  4. #14
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    *lol* Na klasse, das sollte ich ja kennen.

    Übrigends sind diese Zeilen hier natürlich völlig falsch und absolut überflüssig:
    Code:
    #include "RP6RobotBaseLib.h"
    #define RP6BASELIB_H // zusäzliche Definition
    Das Programm verwendet meine Mini-Library weil die orginale Lib alle Timer belegt. Was meldet denn dein Kompiler wenn du das orginale Programm nur mit
    Code:
    #include "rblib.h"
    #include "rblib.c"
    übersetzen willst?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    30
    Beiträge
    15
    dann gibt er wieder mehr fehler aus


    Code:
    > "make.exe" all
    
    -------- begin --------
    avr-gcc (WinAVR 20081124rc3) 4.3.2
    Copyright (C) 2008 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.
    
    
    Linking: RP6Base_LEDs.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref    -lm
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `updateStatusLEDs':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:129: multiple definition of `updateStatusLEDs'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:37: first defined here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `readADC':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:272: multiple definition of `readADC'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:28: first defined here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `startADC':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:288: multiple definition of `startADC'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:23: first defined here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `setMotorDir':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:948: multiple definition of `setMotorDir'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:18: first defined here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `__vector_10':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:1463: multiple definition of `__vector_10'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/RP6Base_LEDs.c:13: first defined here
    ../../RP6Lib/RP6common/RP6uart.o: In function `writeChar':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6common/RP6uart.c:73: multiple definition of `writeChar'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:57: first defined here
    ../../RP6Lib/RP6common/RP6uart.o: In function `writeString':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6common/RP6uart.c:97: multiple definition of `writeString'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:61: first defined here
    ../../RP6Lib/RP6common/RP6uart.o: In function `writeInteger':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6common/RP6uart.c:165: multiple definition of `writeInteger'
    RP6Base_LEDs.o:E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/rblib.c:66: first defined here
    make.exe: *** [RP6Base_LEDs.elf] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    danke übrigents für die mühe.

  6. #16
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Es ist für mich keine Mühe. Ich bewundere vielmehr deine Hartnäckigkeit mit der du am Ball bleibst. Ein Problem ist einfach, dass ich mich mit den internen Vorgängen beim Kompilieren nicht so gut auskenne. Und dass ich nicht das Notepad/Avrstudio verwende. Denn hier scheint mir das eigentliche Problem zu liegen. Irgendwie wird trotz allem ein Teil der orginalen RP6-Lib eingebunden. Deshalb habe ich auch nicht erkannt, dass du versuchst mein Programm zu kompilieren.

    Was mich dabei sehr verwirrt: Hast du das RC-Programm als "RP6Base_LEDs" gespeichert? Ich habe das Gefühl, irgendwie scheinen da zwei Programme in einem Projekt verbunden. Ob das aber am Makefile, an den geöffneten Dateien im Notepad oder sonstwas verursacht wird kann ich nicht sagen. Ich würde deshalb vorschlagen, dass wir mal eine kleine Pause machen und bis morgen abwarten. Möglicherweise meldet sich jemand der sich besser auskennt.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    30
    Beiträge
    15
    Hi,
    ja, ich have es als RP6_LEDs gespeichert weil mir in diesem projekt bisher nur das kompilimieren gelungen ist wenn ich das in einem seperatem projekt speicher kommt immer eine fehlemeldung

    no rule to make target *.elf

    und deswegen ist das unter RP6_LEDs gespeichert.

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Habe leider keine Zeit ausführlich zu antworten, aber es gibt hier schon viele viele Threads zu dem Thema! Einfach mal die SuFu benutzen.

    #include "rblib.h"
    #include "rblib.c" <<<<<------ lösch das mal
    Man included keine C Dateien das ist böse!


    Und das hier:
    http://www.arexx.com/rp6/downloads/R...t_template.zip

    hernehmen als Template für eigene Projekte und entsprechend umbennenen. (aber die alte RP6 Library Version die noch dabei ist bitte durch die aktuelle Version ersetzen! )

    MfG,
    SlyD

    PS:
    Im Makefile muss immer der Name des Haupt Quelldatei angegeben werden! TARGET = RP6Base_LEDs z.B. wenn die Datei RP6Base_LEDs.c heisst...

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    30
    Beiträge
    15
    Hi,
    das mit dem *c file includen hat schonmal geholfen aber komplett kompilimieren konnte ich das imer noch nicht

    Code:
    > "make.exe" all
    
    -------- begin --------
    avr-gcc (WinAVR 20081124rc3) 4.3.2
    Copyright (C) 2008 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.
    
    
    Linking: RP6Base_LEDs.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref    -lm
    ../../RP6Lib/RP6base/RP6RobotBaseLib.o: In function `__vector_10':
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:1463: multiple definition of `__vector_10'
    RP6Base_LEDs.o:e:\technik\rp6\rp6examples_20080915\rp6base_examples\Example_01_LEDs/RP6Base_LEDs.c:13: first defined here
    RP6Base_LEDs.o: In function `main':
    RP6Base_LEDs.c:(.text+0x8c): undefined reference to `rblib_init'
    RP6Base_LEDs.c:(.text+0xb6): undefined reference to `setMotorPWM'
    RP6Base_LEDs.c:(.text+0x164): undefined reference to `setMotorPWM'
    make.exe: *** [RP6Base_LEDs.elf] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:02
    diese fehlermeldung habe ich jetzt

    danke für eure hilfe

  10. #20
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Nein, es hat überhaupt nicht geholfen. Das eigentliche Problem besteht nach wie vor: Die orginale RP6-Library wird eingebunden obwohl wir das nicht wollen. Ohne rblib.c werden die doppelten Definitionen der Funktionen nicht mehr gemeldet, allerdings fehlen dann auch diejenigen Funktionen die in rblib.c definiert sind: rblib_init() und setMotorPWM():
    Code:
    RP6Base_LEDs.c:(.text+0x8c): undefined reference to `rblib_init'
    RP6Base_LEDs.c:(.text+0xb6): undefined reference to `setMotorPWM'
    RP6Base_LEDs.c:(.text+0x164): undefined reference to `setMotorPWM'
    Das in der RP6-Lib die ISR des Timer0 belegt ist, diese aber auch im RC-Steuerprogram neu definiert wird (ISR(TIMER0_COMP_vect) ) erkennt der Kompiler natürlich auch:
    Code:
    E:\technik\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs/../../RP6Lib/RP6base/RP6RobotBaseLib.c:1463: multiple definition of `__vector_10'
    RP6Base_LEDs.o:e:\technik\rp6\rp6examples_20080915\rp6base_examples\Example_01_LEDs/RP6Base_LEDs.c:13: first defined here
    Das ist letzlich auch der Grund warum ich mir damals eine eigene abgespeckte Lib zusammenkopiert habe. (Bei einem Microprozessor ala z80 oder 6809 würde ich zur Laufzeit einfach die Sprungtabellen manipulieren, bei den AVRs habe ich eine vergleichbare Möglichkeit bisher noch nicht gefunden)

    Warum das includen von C-Dateien "böse" ist kann ich als C-Neulich nicht sagen. Ich war bisher der Meinung, eine mit #include eingefügte Datei wird eben schlicht an der Stelle eingesetzt, an der man sie includet. Ob das nun #defines einer h-Datei sind, oder Arrays für eine Zeichensatzdefinition oder eben zusätzliche Funktionen in einer Datei mit Endung .c

    Aber ich schweife mal wieder ab, zurück zum eigentlichen Problem: Die Datei rblib.c muss unbedingt includet werden und die Datei RP6RobotBaseLib.c darf es auf gar keinen Fall sonst funtzt das nicht mit dem RC-Programm. Die Frage ist deshalb: Wo und wieso wird die RP6-Lib eingebunden?

    Gruß

    mic

    [Edit]
    Ich habe mir nun (zum ersten mal) ein RP6-Makefile angeschaut. Es stammt aus den Beispielen, Nr.1: LEDs Datei: makefile

    Und siehe da, hier scheint unser Problem zu schlummern:
    Code:
    ###############################################################################
    # If there is more than one source file, append them here separated by spaces.
    # Usually you have to add the Library files here! (ONLY add c files "*.c" here,
    # NO header files "*.h"!)
    # Don't forget to add relative paths!
    
    SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
    #SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CslaveTWI.c
    #SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CmasterTWI.c
    Hier werden die Dateien RP6RobotBaseLib.c (und RP6uart.c) in ein Projekt eingebunden. Das # ist wohl der Start eines Kommentars, dann sollten diese Änderungen unser Problem lösen:
    Code:
    #SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
    #SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
    Die orginale Version meines Progamms
    Code:
    // RC-RP6 erster Versuch  18.11.07 mic
    
    #include "rblib.h"
    #include "rblib.c"
    
    uint8_t y, z;
    ...
    zusammen mit den Dateien rblib.h und rblib.c im selben Verzeichniss (das hast du ja schon) sollte nun endlich fehlerfrei kompilierbar sein. Hoffe ich zumindest ;)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress