- SF800 Solar Speicher Tutorial         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Übersicht aller C- Befehle

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.257
    vorallem finde ich es komisch, dass auf jeder seite anderst beschrieben wird, wie ich eine funktion programmieren kann (Zumindest sehen die befehle anderst aus)
    - Weil man es eben auf verschiedene Art und Weise in C realisieren kann.
    Es gibt wirklich nur relativ wenige "Grundbefehle" in C.
    z.B. switch, if, for, while usw.
    Alles was über diese wenigen Befehle hinaus geht ist in Librarys versteckt.
    Es gibt nun einige Standard Bibliotheken wie z.B. string.h die fast jeder C Compiler hat und es gibt spezifische Bibliotheken die speziell zum Compiler, dem Controller, oder der Peripherie ( z.B lcd.h ) gehören.
    Du kannst mit einiger Erfahrung auch selber solche Bibliotheken schreiben.
    Im Prinzip ist eine von Dir gewünschte Funktion in so einer Library vorhanden und Du rufst sie dann von deinem Programm aus auf.
    lcd_putsf("string"); ruft zum Beispiel eine Routine auf die den Text string an ein LCD Display ausgibt.
    Dazu muss vorher eine passende Library eingebunden sein.
    z.B. #include <lcd.h>
    Du rufst also dann in der Library lcd.h den Funktionsaufruf lcd_putsf auf und übergibst ihm den Text string.
    Dieser Programmteil kümmert sich darum, das der Text string auf dem Display ausgegeben wird, ohne das Du dich weiter darum kümmern musst.

    Du kannst Dir aber auch selber solche includes schreiben um vieleicht ein I²C EEPROM zu beschreiben.
    Dort könnte dann eventuell ein ee_putsf("string"); Programmteil drin sein, der den ankommenden Text in ein EEPROM schreibt.
    Diesen include kannst Du dann in jedem neuen Programm verwenden, in dem so eine Funktion notwendig ist.

    Ich hab mir z.b. kürzlich eine lib geschrieben, in der alle Funktionen zum Ansteuern eine AD9834 ( DDS Chip ) drin sind.
    Im Hauptprogramm brauch ich dann blos setftw(12345) eingeben um das Tuningword für eine bestimmte Frequenz einzustellen.

    Die Sache mit den lib's ist bei "C" eigentlich genial, nur am Anfang nicht so leicht zu verstehen.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Da hast Du zwar Recht, aber ich halte ASM eigentlich für weitaus einfacher (weil ich das als erstes gelernt habe) und ASM die wenigsten Befehle "zum auswendig lernen) hat. Aus oft gebrauchten Programmteilen bastelt man sich dann selber Funktionen für eine Bibliothek. Leider hat ASM einen nicht zu leugnenden Nachteil gegenüber C oder Basic, es ist immer auf einem Prozessor Typ beschränkt oder man muss "Umlernen". Als wieder Einsteiger mit ASM und etwas Basic Erfahrung scheue ich vor C zurück, möglich das ich einfach zu alt b.z.w. zu faul bin. Ich habe zwar unter Linux MAL etwas mit C "gespielt" und das hat auch geklappt, aber irgendwie bin ich damit nicht "warm" geworden, auch letztendlich weil C (Klammern u.s.w.) auf einer Amerikanischen Tastatur entwickelt wurde.......Sollte ich wirklich einmal mit Bascom Timing Probleme bekommen bleibt immer noch Inline ASM. ABER Für User welche einmal Beruflich mit µC's arbeiten wollen ist C UND ASM Pflicht!

    Zum Thema Tabelle, selber machen und dann möglichst nach Funktionen wie Sprungbefehle, Schleifen, Mathematik, Zeiger u.s.w. das hilft allgemein am besten.
    jeder arbeite da doch irgendwie anders. Ich hatte einmal einen Editor der schon beim Eintippen von Schlüssel Wörter eine Erklärung und mögliche Parameter eingeblendet hat, genial man konnte das selber erweitern. Das ist allerdings 30 Jahre her, ob es so etwas heute noch gibt? Für mich damals Anfänger war das jedenfalls sehr sehr Hilfreich. Beinahe so schön wie die TAB Taste unter Linux.

    Gruße Richard

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    @wkrug: Dann aber auch nicht vergessen, dem Linker die Lib mitzuteilen Wird gerne bei nicht in Quelltextform vorliegenden Bibliotheken vergessen ... (dass du das weißt ist mir klar, aber andere eben nicht)
    @Richard: Darüber kann man vortrefflich streiten. Wer Sprachen mit mehr "Drumherum" gewohnt ist, findet ASM (nicht unbedingt) unbequemer, sicher aber Umständlicher. Ich persönlich Nutze ASM dort wo ich es für sinnvoll erachte (also primär Tuning, oder Bootloader) und mache sonst einen großen Bogen außenrum. In der Regel kann man mit Hochsprachen schneller, sauberer, einfacher und portabler arbeiten. Und wenn ich AVRs mit Bascom programmieren müsste, käme ich mir vor wie in einem Ferrari der auf 30km/h gedrosselt wurde ...

    mfG
    Markus

    PS: Der Tipp mit dem Tabelle-Selbst-Machen ist übrigens empfehlenswert, erstens hat man ein Nachschlagewerk das auf die eigenen Bedürfnisse und Denkweisen zugeschnitten ist und zweitens lernt man dadurch besser.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.257
    Zum Thema Tabelle:
    Manche C Compiler haben sog. Code Templates, die man auch selber erweitern kann.
    Man macht dann einen klick darauf und fügt das Code Schnipsel in den eigenen Quellcode ein.
    Also es gibt noch so was!
    Ich mach das z.B. gerne mit switch / case Anweisungen, weil es da doch so einiges zu tippen gibt.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Ist das nicht eher ein Merkmal der Entwicklungsumgebung?

    mfG
    Markus

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von markusj Beitrag anzeigen
    @wkrug:Und wenn ich AVRs mit Bascom programmieren müsste, käme ich mir vor wie in einem Ferrari der auf 30km/h gedrosselt wurde ...
    Na ja, bei einem Basic mit Interpreter mag das stimmen, Bascom arbeitet aber mit einem Compiler und der generiert wie auch C letztendlich auch nur Maschinencode. wie effizient der Code wird liegt dann eher am Compiler selber als an der Hochsprache an sich. Ich habe allerdings noch keine Vergleiche einzelner Befele compiliert und die Zeit b.z.w. den Code (Länge/Laufzeit) verglichen....

    Gruß Richard

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von Richard Beitrag anzeigen
    Ich habe allerdings noch keine Vergleiche einzelner Befele compiliert und die Zeit b.z.w. den Code (Länge/Laufzeit) verglichen...
    Wenn sich seit dem Zeitpunkt, an dem ich mich das letzte Mal damit auseinandergesetzt habe, noch nichts geändert hat, ist der Compiler von Bascom immer noch ... beschränkt. Damals (tm) hat Bascom Register direkt nach jeder Operation freigeräumt und die Ergebnisse wieder ins SRAM gespeichert, was die 32 verfügbaren Register doch etwas ad-absurdum führt und einiges an Leistung kostet.

    mfG
    Markus

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Zitat Zitat von wkrug Beitrag anzeigen
    Dazu muss vorher eine passende Library eingebunden sein.
    z.B. #include <lcd.h>
    Du rufst also dann in der Library lcd.h den Funktionsaufruf lcd_putsf auf und übergibst ihm den Text string.
    Dieser Programmteil kümmert sich darum, das der Text string auf dem Display ausgegeben wird, ohne das Du dich weiter darum kümmern musst.
    Vorsicht: lcd.h ist nicht die Library, sondern die Include-Datei zur Library, in der die Funtionen deklariert und Konstanten definiert werden. Die Library ist sowas wie liblcd.a, in der die einzelnen Funktionen als Objektcode versammelt sind und vom Linker (bei Bedarf) an die ausführbare Datei angebunden werden.

    @frankensteins-freund: Lass Dich von den Begriffen erstmal nicht verwirren - das verständnis kommt nach einer Weil fast von alleine

    viele Grüße
    Andreas
    #define true ('/'/'/')
    #define false ('-'-'-')

  9. #9
    Hey, so ich lasse mal wieder was von mir hören. ich habe mir mit der zeit einen eigenen kleinen ordner angelegt, in den ich funktionierende Programme eingetragen habe und die bedeutung jedes satzes hinzugefügt habe. Somit kann ich jetzt selbstständig kleinere if-else funktionen etc zusammenbauen.

    Wie muss ich eine library dann verstehen? kann man das mit einem PC vergleichen? Die library ist somit das windows, das die sprache und funtionen vorgibt und der programmtext das, wie die software, die auf windows basierend dann verschiedene schritte und befehle ausführt?

    Ich hab da dann noch eine frage: ich werde mir eine kleine steuerung mit 4 ausgängen bauen. allerdings brauche ich dazu die funktion, dass nach dem wiedereinschalten die ausgänge so geschaltet sind wie vor dem ausschalten. gibt es da eine speicherfunktion, die die aktiven pins immer wieder zwichenspeichert und sie beim wiedereinschalten aufruft?

    MfG
    Michael
    Meine eigene cnc-Fräse:
    mihuno.oyla3.de

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.257
    Eine Möglichkeit des Speicherns ist das interne EEPROM des Controllers.
    Ich würde da ein Relais in die Versorgungsspannung des Controllers einbauen, und das Ausschalten über einen Taster machen der am Controller hängt.
    Also Taste betätigen. Der Controller weiß, das Du abschalten willst und springt in eine Sicherungsroutine die die gewünschten Werte in das EEPROM schreibt. Erst dann wirft der Controller das Relais ab und macht die Schaltung stromlos.
    Zum Einschalten muß natürlich dieser Relaiskontakt überbrückt werden, da sich sonst der Controller nie mehr einschalten lässt.
    Das EEPROM kann nicht unendlich oft beschrieben werden. ATMEL gibt da Controllerabhängig zwischen 10000 und 1Mio Schreibzyklen an.
    Wär also sinnvoll vorher nachzuschauen ob überhaupt was neues in das EEPROM geschrieben werden soll, bevor Du einen Schreibzyklus anstösst.
    Lesen kannst Du aber meines Wissens beliebig oft.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Suche Sammlung aller Befehle
    Von effeCt_ im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 25.06.2009, 12:44
  2. Übersicht Referenzspannungen
    Von 2512708 im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 22.11.2008, 17:56
  3. Übersicht Antriebskonzepte
    Von Q-Ware im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 10.03.2008, 13:44
  4. Übersicht Operationsverstärker
    Von steg14 im Forum Elektronik
    Antworten: 13
    Letzter Beitrag: 24.02.2008, 12:11
  5. MosFET-Übersicht
    Von dennisstrehl im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 16.05.2006, 19:07

Berechtigungen

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

12V Akku bauen