-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: RP6 Programmierung via AVR-Studio

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2012
    Ort
    Kassel
    Beiträge
    14

    RP6 Programmierung via AVR-Studio

    Anzeige

    Hallo!

    Ich bin noch ein Anfänger was Roboterbau und -programmierung angeht. Ich habe vorher schon mit Microcontrollern gearbeitet, jedoch nicht mit welchen die ihren Platz auf einem Roboter wie dem RP6 gefunden haben. Ich besitze einen RP6 v.1 und möchte jetzt mit der Programmierung starten. Die Microcontroller habe ich sonst mit dem AVR-Studio 5.1 programmiert - und jetzt dachte ich mir, dass das doch für den RP6 auch eine Möglichkeit der Softwareentwicklung sein sollte, oder?

    Mein Ziel ist es, ein Programm zu entwickeln, mit dem der RP6 (eher der ATMega32) über den I²C Port auf ein SRF02 Ultraschallmodul zugreifen kann. Die weiteren Funktionen sind noch unwichtig, mein großes Ziel ist es jetzt erstmal, überhaupt ein lauffähiges Programm zu implementieren..

    Ich habe mir zunächst erstmal ein neues Projekt erstellt und die RP6libs sowie die Dateien des I²C-Beispielprogramms eingebunden.. Ich überprüfte dann, ob alle benötigten Funktionen und Variablen erkannt wurden und kompilierte das Programm.. aber: Pustekuchen! Haufenweise Fehlermeldungen, die sich zu vermehren scheinen, wenn man erstmal die ersten Fehler ausgemerzt hat .. -_-

    Vielleicht bin ich einfach nur zu doof, das AVR Studio zu bedienen oder ich habe einfach den falschen Ansatz gewählt? Mit welcher Entwicklungsumgebung implementiert und kompiliert Ihr denn eure HEX-Dateien??

    Wäre nett wenn Ihr mir einen Rat geben könntet, ich bin nämlich schon leicht am Verzweifeln..

    PS: Wenn jemand mal drüber schauen möchte, hier der Link zum Projekt in meiner Dropbox: https://dl.dropbox.com/u/58299684/RP...28SRF02%29.rar

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Hallo AlBundy94,
    also wenn du hier mal suchst wirst du Beiträge zu AVR-Studio sowie auch zum SRF02 und anderen SRFs finden da beides schon erfolgreich Verwendung fand.
    Auch der Blick in http://www.rn-wissen.de/index.php/Hauptseite könnte weiter helfen.
    Ich nutze das AVR Studio 4 bzw. 5 und/oder Notepad++ als Editor je mit dem GCC aus den WinAVR libs.
    Ich würd zunächst mal externe makfiles in AVR Studio nutzen... für die interenen müssen die Pfade richtig stehen.
    Dann sollten eigentlich keine Fehler kommen - und wenn doch, stimmt evtl. schon was mit der Installation der WinAVR Lib nicht. Dann mal das normale Make von cmd aus probieren.
    Also so viel kann da eigentlich nicht schief gehen.
    LG Rolf
    Sind Sie auch ambivalent?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2012
    Ort
    Kassel
    Beiträge
    14
    Vielen Dank für deine Antwort, Rolf!

    Ich kenne mich leider mit makefiles noch nicht so gut aus, was bedeutet denn "externe makefiles benutzen" ? Warum kann das AVR Studio nicht die kompilierung übernehmen? Wenn ich doch alle Dateien in das Projekt einbinde, kennt es doch die zugehörigen Pfade, oder? Wie kann ich die internen Makefiles nutzen, bzw. die "Pfade richtig" eintragen?

    LG Nils

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Hallo AlBundy94,
    das AVR Studio "übernimmt" normalerweise nicht die Kompilierung, es nutzt den GCC als Compiler. Das ganze nennt sich Toolchain und nutzt ggf. andere Pfade als vorgegeben. Die Toolchains von WinAVR und Amtel sind eben etwas unterschiedlich aufgebaut... man muss sie ggf. anpassen. Das trifft auch für die make Files zu. Scheinbar.. da bin ich selbst noch am fummeln... hat Amtel inzwischen ne eigene Toolchain wohingegen sie früher noch die vorinstallierte von WinAVR nutzen... da scheints dann auch mal zu Problemen zu kommen.
    Externe makefiles kannst du im Projekt Configuration Manager unter Build selbst einstellen.

    Schau dir mal ein Makefile eines Examples an welches mit zum Lieferumfang vom RP6 gehört, damit du verstehst was ich meine.
    Da stehen z.B. Sachen drin wie:

    RP6_LIB_PATH=../../RP6Lib
    RP6_LIB_PATH_OTHERS= $(RP6_LIB_PATH)/RP6base $(RP6_LIB_PATH)/RP6common
    SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
    usw...
    Das sind Angaben wie sie für die WinAVR Toolchain und für die RP6Lib relevant sind... die aber nicht fürs AVR Studio passen.
    Dementsprechend findet AVR Studio bzw. die verwendete Toolchain vieles nicht und es kommt zu massenweise Fehlern wegen fehlender Referenzen.
    Jetzt vergleich das mal mit dem makefile was das Studio anlegt wenn du nen Build machst... da stehen garantiert ganz andere Verweise drinne.

    Makefiles sind etwas defiziler.. es reicht nicht den Code als großen Klumpen in ein Projekt zu importieren...
    Ansonsten hier noch ein paar Links zum schlau machen....

    http://www.robotik-projekt.de/index....on-avr-studio/
    http://www.mikrocontroller.net/topic/191595
    http://www.arexx.com/forum/viewtopic.php?f=19&t=1415
    http://www.mikrocontroller.net/articles/AVR-Studio

    LG Rolf
    Geändert von RolfD (30.07.2012 um 15:56 Uhr)
    Sind Sie auch ambivalent?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.01.2010
    Alter
    27
    Beiträge
    106
    Keine Angst, Du musst Dich überhaupt nicht mit Makefiles auskennen, um den RP6 programmieren zu können
    Ich selbst nutze AVR Studio 5/6 schon recht lange und hatte sowohl mit als auch ohne Makefiles nie Probleme damit (wieso auch, ist schließlich nur eine IDE).
    Dein Projekt habe ich mir nur kurz angesehen, folgendes ist mir aufgefallen:
    Dein Projekt enthält folgende Dateien:
    - RP6Control.h
    - RP6ControlLib.cpp
    - RP6ControlLib.h
    Es geht um ein Programm für die RP6 Base, da haben die nichts im Projektverzeichnis zu suchen Diese Dateien sind für die M32-Erweiterungsplatine gedacht.

    Wieso nutzt Du eigene Delay-Funktionen? Die RP6 Lib hat eigene Delay-Funktionen, die am Anfang (und auch später) vollkommen reichen sollten.

    Du hast Teile der Lib verändert (vor allem die Includes, das geht so nicht). Nimm wieder die Originale, das wirft viele der Fehler raus. Lies Dir auch noch einmal ein Tutorial über Includes und Include-Guards durch.

    In der "RP6 Ultrasonic (SRF02).cpp" inkludierst Du (ohne die defines aussen rum) #include "RP6RobotBaseLib.h" und #include "RP6I2CmasterTWI.h" und benennst die Datei in "RP6 Ultrasonic (SRF02).c" um,
    sonst wirst Du Probleme kriegen.

    Nach diesen Änderungen wurde das Programm bei mir fehlerfrei kompiliert.

    Hoffe das hilft Dir

    - Max

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2012
    Ort
    Kassel
    Beiträge
    14
    Hallo!!

    Danke für eure Antworten, die sind echt qualitativ hochwertig Ich habe es jetzt mal so wie MaxWeb beschrieben hat, probiert:

    Die ORIGINALE Lib (unverändert) eingebunden und die Control-Lib draußen gelassen. Die Includes in der "RP6 Ultrasonic (SRF02).cpp" normal geschrieben und die Datei in "RP6 Ultrasonic (SRF02).c" umbenannt. Ich habe dann noch die delay.h rausgenommen und alles kompiliert - aber: Nix.

    Mein Fehler ist wieder mal eine "multiple definition of.." - aber da es ja bei MaxWeb auch so ging, ohne Veränderungen würde ich jetzt gern wissen, ob ich noch etwas übersehen hab? :/

    LG Nils

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.01.2010
    Alter
    27
    Beiträge
    106
    Mein Fehler ist wieder mal eine "multiple definition of.."
    Tja, genau ab da wird's interessant: Was wird denn mehrmals definiert? Welche Dateien sind jetzt im Projektverzeichnis?

    - Max

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2012
    Ort
    Kassel
    Beiträge
    14
    Fehler: multiple definition of `__vector_19' in Datei: /RP6I2CslaveTWI.c

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.01.2010
    Alter
    27
    Beiträge
    106
    Hm, klingt ganz so, als ob die Datei "RP6I2CMaster" im Projektverzeichnis ist - bitte mal nachsehen.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich vermute wie Max, das die TWI-Master Lib und die TWI-Slave Lib gleichzeitig eingebunden sind...
    Die RP6Lib ist weder Multimaster noch Master/Slave fähig - es funktioniert nur Slave ODER Master und es dürfen auch nur die jeweils passenden Libs im Projekt referenziert werden.
    Ggf. hilft es, die ISRs mit #def/#if def gegensinnig auszuklammern oder beide ISRs zusammen zu legen. Eine vereinheitlichte Master/Slave ISR wäre auch nur wenig größer als die beiden sich beißenden Einzelversionen.
    Aber I2C auf RP6 (RP6Lib) ist ein weites Feld....
    LG Rolf
    Geändert von RolfD (01.08.2012 um 11:34 Uhr)
    Sind Sie auch ambivalent?

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 29.05.2012, 21:29
  2. programmierung des RN-Control mit Avr-Studio und Winavr
    Von cricri im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 7
    Letzter Beitrag: 31.01.2011, 19:45
  3. Antworten: 9
    Letzter Beitrag: 31.03.2010, 10:26
  4. AVR-Programmierung mit ISP Dongle unter AVR Studio 4
    Von Earnie im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 23.09.2008, 19:57
  5. AVR Studio 4>USB>µC?
    Von The Man im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 6
    Letzter Beitrag: 12.08.2006, 12:09

Berechtigungen

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