- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 17

Thema: Asuro - Anfängertauglich; totale Verzweiflung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von Vilem Beitrag anzeigen
    nicht weiß, welche header-Dateien, makefile, bats man braucht. Da hilft einem C zu lernen NIX !
    [...]
    z.B. wofür gibt es eigentlich zwei gleichnamige header-Dateien mit Endung ...h und ...c, ( warum muß in diesen ein Ausdruck untereinander getauscht werden ?) und die vielen anderen, nicht lesbaren Dateien mit für mich kryptischen Endungen: pnproj, aps u.v.a. ?
    Wo finde ich zu einer Quelldatei die zugehörigen makefiles und bat-Dateien ??? wenn nur Quelldateien(schnipsel) angeboten werden ?
    Zum ersten Teil: Falsch, wenn du (C) programmieren kannst, macht einiges sehr schnell sehr viel Sinn. Ich will es Mal so umschreiben: Die ASURO-Bibliothek ist der Werkzeugkasten mit dem du arbeitest. Hast du die handwerklichen/motorischen Fähigkeiten nicht, bringt dir auch das tollste Werkzeug nichts.

    Zum zweiten Teil: Das mit "h" und "c" ist einerseits eine Frage der Konvention, andererseits eine Eigenheit der Programmiersprache C, die zwischen Deklaration ("Es gibt eine Funktion mit Namen X, Parametern Y und Rückgabewert Z") und Definition ("Hier ist Funktion X die folgendes macht (Quelltext)"). Jede C-Datei steht beim Kompilieren erst einmal alleine da und weiß nichts über andere Dateien oder Bibliotheken. Um daher "fremde" Funktionen zu verwenden, müssen diese erst bekannt gemacht werden, indem man sie Deklariert. Um diesen Vorgang zu vereinfachen, schafft man eine Art Schnittstelle, die Header-Datei, die die Deklarationen aller wichtigen Funktionen enthält. (Wobei wichtig == soll von außen benutzt werden können).
    Und damit man immer weiß, welcher Header die Schnittstelle zur welcher Implementierung enthält, verwendet man normalerweise den gleichen Namen wie bei der Quelltext-(C)-Datei, was die typischen Paare Name.C und Name.H ergibt.

    Manche Dateien sind nicht für dich bestimmt, sondern werden (Beispielsweise von Eclipse, AVR Studio o.ä.) für eigene Zwecke verwendet. Andere sind sogenannte Projektdateien, in der die Programmierumgebung sich merkt, was alles zusammengehört.

    Und zu der Frage, "Wie finde ich raus was wie zusammengehört und wie es funktioniert", das sollte die Dokumentation des Quelltextes erklären. Wenn nur Schnipsel angeboten werden, musst du dir wohl selbst ein Makefile aufsetzen, alternativ dazu kannst du auch eine Entwicklungsumgebung verwenden, die das für dich von alleine erledigt.

    mfG
    Markus

  2. #2
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo markusj,
    danke für Deine Antwort ! Da mag ich ja vielleicht manches falsch sehen, mein Anfängerproblem ist halt, daß man vor lauter Bäumen den Wald nicht sieht. Ich bin ja bemüht, aber wo finde ich den richtigen Einstieg ?, d.h. mit Deinen Worten: ich muß erstmal die Fächer des "Werkzeugkasten" überblicken, daß ich weiß, wo ich den Schraubschlüssel finde, den ich gerade brauche.
    Nochmal zuden c. und h. Dateien. Habe ich das jetzt richtig verstanden ? Z.B. In der asuro.h wird eine Fkt. "deklariert". In der asuro.c wird diese Fkt. "definiert" (soll wohl heißen (?), hier ist die Fkt. als eine Art Makro vorprogrammiert (?)). In meiner Quelldatei (z.B. test.c) wird die Fkt.gebraucht und aufgerufen, richtig ?
    Muß ich dann beide, also asuro.c und asuro.h, als #include "asuro.c" und #include "asuro.h" an den Anfang meiner Quelldatei (test.c) stellen ? Oder genügt es, die im gleichen Ordner (Pfad) stehen zu haben ? Im make-file steht nur unter TARGET = test, OK ?
    *** fail faster to succeed sooner ***

  3. #3
    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

    Du könntest auf #include komplett verzichten, wenn du den Inhalt von asuro.h in deiner Datei test.c vor und den Inhalt von asuro.c hinter deine eigene main()-Funktion kopieren würdest. Beim Kompilieren würde der Kompiler dann die Namen aller definierten Dinge (Funktionen, #defines, Variablen oder auch Register und Pins des Kontrollers) kennen bevor du sie in main() verwendest. Weiterhin würde er alle Funktionen hinter main() mit übersetzen und von main() aus anspringen wenn du sie in main() verwendest.

    Mit #include eingebundene Dateien werden in das Programm direkt an der Stelle eingefügt, an der das #include steht, quasi wie reinkopiert. Prinzipiel funktioniert deshalb auch ein #include asuro.c Das ist aber "verpöhnt", weil man .c-Dateien über das Projekt einbinden sollte.

    Der Unterschied ist etwa so: Wenn über das Projekt eingebunden wird erzeugt der Kompiler beim Übersetzen zwei Objektdateien mit den in Maschinensprache übersetzten C-Befehlen (aus test.c und asuro.c) und der Linker verbindet dann beide zu einem Programm und legt die Speicherbereiche so fest das alles passt (Funktionsadressen, Variablenspeicherplätze...) und erzeugt schließlich aus der Maschinensprache ein Speicherabbild des Programms im AVR als Hex-Datei. Bei Einbindung mit #include asuro.c wird nur eine Objektdatei erzeugt.

    Das ist eigentlich nur ein Teil der Wahrheit, denn in Wirklichkeit werden noch viel mehr Dateien eingebunden (siehe Anfang von asuro.h) Das erzeugte Maschinenprogramm heißt übrigends Projektname.lst Darin sieht man dann neben den eigenen Funktionen auch die übersetzten Funktionen der asuro-Library. Hier mal ein einfaches Beispiel:

    PHP-Code:
    #include "asuro.h"
    #include "asuro.c"

    int main(void)
    {
        
    Init();
        
    StatusLED(RED);
        while (
    1);
        return(
    0);

    Zur LST-Datei im Anhang:
    Wegen #include asuro.c sieht man auch die Lib-Funktionen, ab Zeile 303 der Code für StatusLED(), ab Adresse 0x019e beginnt der eigentliche Code. In Zeile 1105 beginnt main(), in Zeile 1116 wird die Funktion StatusLED() aus main() heraus aufgerufen. In Zeile 1115 wird übrigends das Register r24 mit 2 geladen. Ab Zeile 333 wird durch diese 2 dann die rote Led ein- und die grüne Led ausgeschaltet. Aber ich glaube, ich schweife ab...

    Aller Anfang ist schwer. Die Microkontroller sind kein Spielzeug, das ist echte Hightech. Deshalb ist das auch so kompliziert. Aber wenn du dir mal die Grundlagen erarbeitet hast wird's noch schlimmer

    Gruß

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

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.695
    Hi Vilem,

    das ist gut beschrieben mit den Bäumen, dem Wald und dem Anfänger. Ging mir genauso - wie vermutlich vielen.
    Zitat Zitat von Vilem
    ... Nochmal zuden c. und h. Dateien. Habe ich das jetzt richtig verstanden ? Z.B. ...
    Jetzt könnte man natürlich ausfürlich antworten. Aber vielleicht schaust Du Dir diese beiden Tutorials an (ich meine WIRKLICH ANSCHAUEN - nur soweit durchlesen wie Du es interessant findest - dann weißt Du wo was steht und liest das nur bei Bedarf genauer durch).
    http://www.rn-wissen.de/index.php/C-Tutorial
    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

    Im zweiten Tutorial ist im Einführungsbeispiel (klick hier) mal gaaanz kurz gezeigt, wie ein C-Programm aufgebaut ist. Na ja, und zum asuro gibts doch noch immer die BAU- UND BEDIENUNGSANLEITUNG (klick schon wieder) in der ein bisschen über C steht. Dass es zum asuro eigene Bibliotheken gibt (asuro lib) ist im Prinzip ne Erleichterung aber für Anfänger wohl immer ein böser Stolperstein *ggg*.

    Viel Erfolg
    Ciao sagt der JoeamBerg

  5. #5
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo,
    vielen Dank für die Informationen.
    @ radbruch: Das habe ich fast alles (glaube ich) verstanden, danke, nur hapert's mal wieder an so einfachen Dingen, daß ich die Fach-Begriffe nicht verstehe.
    Was heißt: "Wenn über das Projekt eingebunden wird ...." Was ist das "Projekt", meine Quelldatei ? Was ist "eingebunden" ?
    Interessant die lst.txt Datei, arbeite ich noch durch.
    Und ... mache uns nicht bange mit: " ... wird's noch schlimmer"
    @ oberallgeier: vielen Dank für die links, die ich mir an Wochenende mal zu Gemüte führen werde. Die Asuro Bedienungsanleitung ist Ok, aber hilft eigentlich kaum weiter, den "Wald" zu sehen. Ja, die AsuroLib ist sicher supergut, aber wahrlich ein Stolperstein für Anfänger. Gäb's nur dafür mal eine gute Einführung.
    *** fail faster to succeed sooner ***

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    "Über das Projekt eingebunden" meint asuro.c per Makefile und nicht per #include eingefügt. Im Makefile findet der Kompiler einen Hinweis auf asuro.c und baut die Datei deshalb in das Programm mit ein.

    "Projekt" beschreibt alles was mit dem aktuellen Programm zusammenhängt. Das Wort "Projekt" taucht übrigends nur einmal in der asuro-Anleitung auf. Zufälligerweise genau an der Stelle über die wir uns grad unterhalten

    Funktionen:
    https://www.roboternetz.de/community...-RP6-und-Asuro

    .c und .h einbinden:
    https://www.roboternetz.de/community...indung-asuro.c

    asuro ohne Lib programmieren:
    https://www.roboternetz.de/community...-programmieren
    Geändert von radbruch (29.04.2011 um 19:51 Uhr) Grund: Links hinzugefügt
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo,
    vielen Dank, auch für die hilfreichen links ! Mir raucht der Schädel, aber ich glaube, das mit den c- und h-Dateien und auch halbwegs mit dem makefile habe ich jetzt gefressen.
    Vorläufig vorletzte Frage: Im AsuroWiki findet sich ein Tast Sensor Test C (andere laufen schon bei mir); in dem Programm-Code steht: "... benötigt die modifizierte Asuro Bibliothek asuro.c von waste [u.a.], ... zu finden bei www.roboternetz.de"
    Ja mei, das roboternetz ist GREAT und large, wo find' ich die ?
    *** fail faster to succeed sooner ***

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    http://sourceforge.net/projects/asur...1.zip/download

    Es ist wichtig du liest die install.txt Datei durch. Man muss einige Anpassungen machen damit es gut funktioniert.

Ähnliche Themen

  1. Verzweiflung!!
    Von Mom0 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 07.02.2009, 10:10
  2. Hilfe in einem Schulprojekt (totale Anfänger)
    Von Freakz im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 15
    Letzter Beitrag: 10.05.2008, 17:31
  3. Robby auch für totale Anfänger??
    Von Toby im Forum Robby CCRP5
    Antworten: 5
    Letzter Beitrag: 04.06.2004, 22:04
  4. Totale Überarbeitung: NoName
    Von ShadowPhoenix im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 20
    Letzter Beitrag: 01.05.2004, 16:39
  5. Problem: Totale Verwirrung mit IC-Anschlüssen
    Von ShadowPhoenix im Forum Elektronik
    Antworten: 16
    Letzter Beitrag: 20.03.2004, 13:02

Berechtigungen

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

Labornetzteil AliExpress