- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 15

Thema: AVR Studio 5 und C++

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    50
    Beiträge
    1.146
    Hi,
    grundsätzlich kann man im AVR-Studio auch C++ kompilieren. Der avr-c++-Compiler wird automatisch angeschmissen, wenn eine Datei mit cpp-Endung im Projekt ist.
    Allerdings sind einige C++-spezifische Sachen nicht implementiert, wie z.B. die Operatoren new und delete.
    Mehr dazu findest Du im avr-libc-user-manual unter Kapitel 11.7 auf Seite 66.
    Bis jetzt habe ich noch nie einen AVE in C++ programmiert - ob es Sinn macht, kann ich Dir daher nicht sagen.

    Zu den XMegas:
    Programmiertechnisch sind die Register bei den XMegas etwas anders aufgebaut, sie werden ähnlich wie ein Struct angesprochen. Bei den Port-Registern gibt es da z.B. PORTC.OUT oder PORTC.DIR. Man gewöhnt sich aber schnell dran und der Editor vom Studio 5 hilft einem da ja auch weiter.
    Hardwaremässig gibt es viele neue Sachen, wie z.B. das Event-System. Da habe ich aber auch noch nicht mit gearbeitet. Der größte Unterschied ist mir bisher beim ADC aufgefallen, der ist etwas komplizierter geworden.
    Die XMegas haben übrigens weiterhin eine 8-Bit Struktur.

    Ach ja, noch ein wichtiger Unterschied: Die XMegas laufen nur noch mit max. 3,3V.

    Gruß,
    askazo
    Geändert von askazo (15.06.2011 um 20:59 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    31
    Beiträge
    656
    Ich habe ein kurzes Testprojekt mit einer .cpp-Datei erstellt, aber der Compiler will sie nicht annehmen, AVR Studio benutzt trotzdem den avr-gcc, der sich darauf beschwert, dass er main() nicht findet. Kompilieren mit -x c++ hilft auch nicht weiter...
    Sorry, aber wo findest du im avr-libc-user-manual das Kaiptel 11.7. Alle Manuals, die ich mit Google gefunden habe, enthalten maximal Kapitel 9? ^^

    Die XMegas klingen auf jeden Fall interessant. Das mit den Registern als Strukturen finde ich sehr praktisch. Das einzige Problem ist, dass ich noch nie wirklich SMD gelötet habe und wohl dazu erst mal eine Platine ätzen müsste oder gibt es Adapterplatinen bzw. µCs im normalen DIP-Gehäuse?
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    50
    Beiträge
    1.146
    Hm, ich habe jetzt mal ein kleines c++-Projekt angelegt, aber so wirklich weiter komme ich auch nicht. Ich bekomme erst mal eine Warnung aus der io.h, dass der device type nicht definiert wäre, und dann noch folgenden Fehler:
    Error 2 AVR architecture of input file `main.o' is incompatible with avr:51 output
    Wenn man ein bißchen im Web stöbert, findet man allerdings in der Tat User, die schon C++ Code im Studio 5 erfolgreich kompiliert haben.
    Das libc-Use-manual findest Du übrigens unter C:\Programme\Atmel\AVR Studio 5.0\AVR Toolchain\doc\avr-libc oder im Web unter http://www.nongnu.org/avr-libc/

    Seltsam finde ich allerdings, dass er bei Dir nicht mal den avr-g++ aufruft. Hast Du in einem bestehenden C-Projekt nur die Dateiendung geändert? Dann musst Du auf jeden Fall noch mal ein Clean laufen lassen.

    Im DIP-Gehäuse gibt es die XMegas nicht. Aber bei Reichelt gibt es Adapterplatinen - sind nur recht teuer...
    Ohne SMD-Löterfahrung ist ein QFP mit 0,5mm Pitch allerdings schon eine Herausforderung.

    Gruß,
    askazo

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    31
    Beiträge
    656
    Seltsam, ich habe ein neues AVR-GCC Executable Project erstellt, die Dateierweiterung, der vom AVR Studio erstellten Quelldatei, geändert, die Projektmappe bereinigt und kompiliert. Es wird der avr-gcc aufgerufen, der meldet: "undefined reference to 'main'". Das Syntaxhighlighting wird auch deaktiviert, sobald ich die Dateierweiterung geändert habe. Ich vermute mal, dass ich irgendwas beim Erstellen des Projekts falsch mache. Ich habe aber nur AVR Assembler und AVR-GCC Projekte zur Auswahl, keine AVR-C++ Projektvorlage.

    In der Tat, das zu löten wird schwer, aber machbar ist es, denke ich. Kann ich die XMegas ganz normal über ISP flashen?
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    50
    Beiträge
    1.146
    Ich habe jetzt mal genau Deinen Weg genommen, also neues Projekt (AVR-GCC Executable) erstellt, Dateiendung in cpp geändert (Inhalt der Datei nicht verändert) und kompiliert. Es wird definitiv der c++ Compiler aufgerufen.
    Hast Du die aktuellste Version vom Studio drauf (5.0.1163)? Vielleicht ist's noch ein Bug in der Beta-Version, wenn Du die noch benutzt.

    Machbar ist das. Kleiner Tipp: mit ein bißchen Flußmittelgel bekommt man Brücken zwischen den Pins sehr leicht wieder weg.
    ISP wird vom XMega allerdings nicht mehr unterstützt. Geht nur noch mit JTAG oder der neuen PDI-Schnittstelle. Mit Selbstbau-Programmern ist da leider nichts mehr zu machen.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    31
    Beiträge
    656
    So ich habe ein Update gemacht und es funktioniert jetzt tatsächlich soweit. Jedoch bekomme ich bei folgendem Beispielcode:
    Code:
    #include <avr/io.h>
     
    class test
    {
    public:
     test() {xyz = false; PORTB = 0x00;}
     ~test() {PORTB = 0x00;}
     bool SetOutput(bool x)
     {
      if(x)
       PORTB = 0xFF;
      else
       PORTB = 0x00;
     
      xyz = x;
      return x;
     }   
     
    private:
     bool xyz;
    };
     
     
    int main(void)
    {
     test x;
     x.SetOutput(true);
     
     while(1);
     
     return 0;
    }
    folgende Fehler:
    Warnung 1 #warning "device type not defined" c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/io.h 446 6 CPP_Test
    Fehler 2 'PORTB' was not declared in this scope D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\Test\CPP_Test\CPP_Test\CPP_Test.cpp 6 23 CPP_Test
    Fehler 3 'PORTB' was not declared in this scope D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\Test\CPP_Test\CPP_Test\CPP_Test.cpp 7 11 CPP_Test
    Fehler 4 'PORTB' was not declared in this scope D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\Test\CPP_Test\CPP_Test\CPP_Test.cpp 11 4 CPP_Test
    Fehler 5 'PORTB' was not declared in this scope D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\Test\CPP_Test\CPP_Test\CPP_Test.cpp 13 4 CPP_Test
    Hat jemand eine Idee, woran das liegt?

    Braucht man, um die XMegas zu programmieren, unbedingt einen relativ teuren Programmer von ATMEL (z.B. JTAGICE) oder geht das auch mit einem günstigeren? Kennt jemand einen funktionierenden, der nicht so teuer ist?
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    50
    Beiträge
    1.146
    Seltsamerweise scheint der c++-Compiler den eingestellten Controller nicht zu erkennen und kann daher nicht die passende io.h einbinden.
    Das kannst Du aber manuell machen, indem Du vor dem #include ein #define __Controllername__ einfügst, also z.B. #define __AVR_ATmega128__

    Das günstigste Tool, was mir spontan einfällt, ist der AVR Dragon. Kostet zwar immer noch über 60€, kann dafür aber auch InSystem debuggen.

Ähnliche Themen

  1. AVR Studio 5
    Von Achim S. im Forum C - Programmierung (GCC u.a.)
    Antworten: 22
    Letzter Beitrag: 02.08.2011, 22:04
  2. AVR Studio 5
    Von lokirobotics im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 24.03.2011, 17:26
  3. AVR STudio
    Von flo315 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 10.09.2007, 21:07
  4. AVR Studio
    Von Reeper im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 01.05.2006, 20:05
  5. AVR Studio
    Von anabolik im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 27.11.2005, 10:02

Berechtigungen

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

Labornetzteil AliExpress