- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 17

Thema: Asuro - Anfängertauglich; totale Verzweiflung

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    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!

Ä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
  •  

LiFePO4 Speicher Test