- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Wie geeignet ist C++ für Microcontroller?!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    Königreich-Kircheib
    Alter
    33
    Beiträge
    46

    Wie geeignet ist C++ für Microcontroller?!

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Gibt es einen AVRCompiler der Problemlos C++ verarbeitet?
    oder gibt es da irgendwelche Nebenwirkungen?
    würde mich nämlich interessieren weil ich grad eh c++ lern und dann von Bascom umsteigen würde

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Hallo -C3P0-,

    der normale AVR-GCC kann auch C++-Code compilieren. Ausser Exceptions sowie new und delete wird da so weit ich weiss alles unterstützt. Leider gibts es keine Standandard-C++-Lib für AVRs, aber man kann die benötigten Teile selbst schreiben.

    MfG Mark

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    Königreich-Kircheib
    Alter
    33
    Beiträge
    46
    mhh ok thx denk dann werd ich entweder mit C oder Bascom weitermachen, denn das mit den Libs is schon ein bisschen doof

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Wenn Du willst kann ich Dir meine Lib geben. Dort gibt es die Klassen ostream und istream für einfache Ein- und Ausgabe sowie 2 Kontainerklassen LIFO und FIFO, die einem Stack und einer Warteschalnge entsprechen.

    MfG Mark

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    Königreich-Kircheib
    Alter
    33
    Beiträge
    46
    echt? das wär super kannst du die irgendwo uploaden?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Klar.

    Verwendung:
    ostream:
    Klasse zur Ausgabe von C-Strings sowie Zahlen über den Operator '<<'. Zusätzlich gibt es dort die Methode f(prog_char*), welche einen im Flash liegenden Sting einliest. Bei der Erstellung ist der erste Parameter der Zeiger auf die Funktion, über die ein Zeichen ausgegeben wird. Z.b..

    Code:
    #include "iostream.h"
    
    using namespace std;
    
    void uart_put_char(char c)
    {
       ...//gibt ein zeichen über den UART aus
    }
    
    int main()
    {
    	ostream cout(uart_put_char);
    	cout<<"Hallo!"<<123<<endl;
    }
    istream: Klasse zur Eingabe über den Operator '>>'. Der erste Parameter ist ein Zeiger auf auf eine Funktion, die ein Zeichen einliest, der zweite auf eine Funktion, die ein Zeichen ausgibt. Z.b.:

    Code:
    #include "iostream.h>"
    
    using namespace std;
    
    void uart_put_char(char c)
    {
       ...//gibt ein zeichen über UART aus
    }
    
    char uart_get_char()
    {
       ...//liest ein zeichen vom den UART
    }
    
    int main()
    {
    	int i;
    	ostream cout(uart_put_char);
    	istream cin(uart_get_char,uart_put_char);
    	cout<<"geben Sie eine Zahl ein>";
    	cin>>i;
    	cout<<"Sie haben "<<i<<" eingegeben"<<endl;
    }
    CFifo ist eine Warteschlange. Bei der Konstruktion ist der erste Parameter ein Zeiger auf den Buffer, wo die Werte aufbewahrt werden, der zweite die Größe des Buffers. Ich habe auf eine dynamische Speicherreservierung verzichtet, weil es Laufzeit und Speicher spart.


    Methoden:
    push_wait(wert): Waret, bis in dem Buffer wieder Platz ist und fügt dann den Wert ein.
    push_nowait(wert): fügt den Wert ein, ohne zu warten bis eine Stelle frei ist. Sollte der Buffer bereits voll sein, wird der letzte Wert gelöscht.
    pop(): wartet, bis mind. ein Wert in der Schalnge ist und gibt ihn dann zurück.
    empty(): true wenn leer, false wenn nicht
    full(): true wenn voll, false wenn nicht
    operator[]: gibt das entsprechende Element der Schange zurück.


    CLifo ist ein Stack. Die Parameter sind die gleichen wie bei CFifo.
    Methoden:
    push(wert): legt einen Wert auf den Stack
    pop(): nimmt ein Wert vom Stack
    top(): gibt das letzte Element zurück, ohne den framepointer zu dekrementieren.
    empty(), full() und operator[] wie bei CFifo.

    MfG Mark
    Angehängte Dateien Angehängte Dateien

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    Königreich-Kircheib
    Alter
    33
    Beiträge
    46
    Danke! sehr hilfreiche Sachen bei^^

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.03.2005
    Ort
    Villach
    Alter
    32
    Beiträge
    995
    hallo!
    ich empfehle dir aber eher C weil es um einiges perfomanter als C++ auf mikrocontrollern ist. obwohl C++ natürlich öfters sehr praktisch sein kann.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Hallo Superhirn,

    kannst Du mir für die höhere Preformance von C ein praktisches Beispiel geben?

    MfG Mark

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.03.2005
    Ort
    Villach
    Alter
    32
    Beiträge
    995
    ich habs noch nie getestet aber es steht überall das C performanter ist. wenns echt nicht so ist dann hab ich heut was dazugelernt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests