- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
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 Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    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

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    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

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    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.

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    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

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    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.

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    Beiträge
    656
    OK danke, hat funktioniert.

    Der AVR Dragon scheint wohl eine Überlegung wert zu sein. Aber ich muss mich mit den XMegas generell noch ein bisschen beschäftigen. ATMEL bringt ja ständig neue µCs auf den Markt und der Programmer sollte schon insofern zukunfsorientiert sein, dass sich auch die neuesten Generationen flashen lassen.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

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

fchao-Sinus-Wechselrichter AliExpress