-
        

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: RC-gesteuerter RP6

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

    frage

    Anzeige

    Hi,
    ich habe mal ne frage zum RC gesteuertm RP6

    kann mir einer mal das fertige programm als hex datei schicken??

    wäre total super

    Danke

    Matze

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Warum kompilierst du das nicht selbst? Die einfache RC-Steuerung aus dem Dominoday-Thread [Link] sieht so aus:
    Code:
     // RC-RP6 erster Versuch  18.11.07 mic
    
    #include "rblib.h"
    #include "rblib.c"
    
    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;
    }
    Die RC-Kanäle kommen an den XBUS-Stecker, links/rechts an Pin10 (SCL), vor/zurück an Pin12 (SDA). RC-Empfänger + und - an VCC und GND des RP6. Die Hex-Datei dazu ist im Anhang.

    Gruß

    mic
    Angehängte Dateien Angehängte Dateien

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    23
    Beiträge
    15
    Hi,
    Danke erstmal

    warum ich nicht selbst kompilimiere?

    ich habe mac und habe noch nicht so eine gichtige idee wie ich das machen soll....

    softwaretechnisch

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Vielleicht hilft dir das weiter:
    http://www.roboternetz.de/phpBB2/zei...ag.php?t=45198
    (Der Beitrag von SylD ist allerdings schon etwas älter)

    Und hier ein Thread über avrgcc auf mac:
    http://www.mikrocontroller.net/topic/24166

    Oder du fragst mal direkt bei arexx nach:

    http://www.arexx.com/forum/recent.php

    Gruß

    mic

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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    23
    Beiträge
    15
    ja den beitrag habe ich schon gelesen.

    ich arbeite momentan mit einem virtuellen pc wo ich xp drauf habe und da verwene ich winAVR

    da bekomme ich immer eine fehlermeldung

    Process exit code 2

    ich tüftel noch dran

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Obwohl der Mikrocontrollerthread schon etwas älter ist (sorry, hatte ich überlesen) findet man dadurch doch recht aktuelle Seiten:

    http://home.arcor.de/torsten.schoeni...v/avr/avr.html

    Von dort kommt man dann nach hier:

    http://www.obdev.at/products/crosspack/index.html

    Da ich 'nen ollen PC hab' kann ich das weder nachvollziehen noch testen, aber es scheint Möglichkeiten zu geben die AVRs auch ohne Win oder Linux zu programmieren. Zum Flashen nimmst du natürlich den RP6-Loader, oder? (Sonst würde dir das Hex oben ja auch nix nutzen ;)

    Gruß

    mic

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

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    23
    Beiträge
    15
    Ich habe mir die seiten mal angesehen und es ist wirklich sehr interessant...

    glaube aber ich habe ein anderes problem. wenn ich auf make all kicke dann kommt folgendes


    > "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: ../../RP6Lib/RP6base/RP6RobotBaseLib.c
    avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../RP6Lib/RP6base/RP6RobotBaseLib.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6RobotBaseLib.o.d ../../RP6Lib/RP6base/RP6RobotBaseLib.c -o ../../RP6Lib/RP6base/RP6RobotBaseLib.o
    In file included from ../../RP6Lib/RP6base/RP6RobotBaseLib.c:69:
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:386: error: conflicting types for 'statusLEDs'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:72: error: previous declaration of 'statusLEDs' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:1846: error: redefinition of 'setMotorDir'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:947: error: previous definition of 'setMotorDir' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:1851: error: redefinition of 'startADC'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:287: error: previous definition of 'startADC' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:1856: error: redefinition of 'readADC'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:271: error: previous definition of 'readADC' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:1865: error: redefinition of 'updateStatusLEDs'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:128: error: previous definition of 'updateStatusLEDs' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:1880: error: redefinition of 'setLEDs'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.c:153: error: previous definition of 'setLEDs' was here
    make.exe: *** [../../RP6Lib/RP6base/RP6RobotBaseLib.o] Error 1

    > Process Exit Code: 2
    > Time Taken: 00:00


    kannst du mir dabei helfen?

    Thx

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Oje, Makefiles und Kompilieren sind nicht so meine Stärken :-(

    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:386: error: conflicting types for 'statusLEDs'
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:72: error: previous declaration of 'statusLEDs' was here
    Das sieht so aus als wäre die Datei RP6RobotBaseLib.h zweimal eingebunden und deshalb auch die Funktionen doppelt definiert. Das dürfte eigentlich nie passieren, weil die Datei so startet:
    Code:
    #ifndef RP6BASELIB_H
    #define RP6BASELIB_H
    Nur wenn das Label RP6BASELIB_H nicht definiert ist (#ifndef) wird der folgende Code ausgeführt. Und der folgende Code startet mit der Definition dieses Labels...

    Ein eher hilfloser Versuche wäre dies in deinem Programm einzufügen:
    Code:
    #include "RP6RobotBaseLib.h"
    #define RP6BASELIB_H // zusäzliche Definition
    Ich glaube aber nicht, dass es hilft. Wir müssen wohl abwarten bis dies ein Profi liest.

    Gruß

    mic

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

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    12.09.2009
    Ort
    Erde
    Alter
    23
    Beiträge
    15
    mhm schon mal besser die fehlermeldungen werden kürzer...

    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:72: error: conflicting types for 'statusLEDs'
    ../../RP6Lib/rblib.h:35: error: previous declaration of 'statusLEDs' was here
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:386: error: conflicting types for 'statusLEDs'
    ../../RP6Lib/rblib.h:35: error: previous declaration of 'statusLEDs' was here
    make.exe: *** [RP6Base_LEDs.o] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    soweit hat das schonmal geklappt

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Aha!
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:72: error: conflicting types for 'statusLEDs'
    ../../RP6Lib/rblib.h:35: error: previous declaration of 'statusLEDs' was here
    Die rblib soll die orginale baselib ersetzen, zusammen funktioniert es nicht!

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

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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