-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: lauffähiger Code aus WinAVR funktioniert nicht in AVR-Studio

  1. #1

    lauffähiger Code aus WinAVR funktioniert nicht in AVR-Studio

    Anzeige

    Hallo Leute,

    habe mal wieder einen merkwürdigen Fehler. Mein Roboter-Programm habe ich zuvor in WinAVR per Programmer Notepad programmiert und es läuft ohne Probleme. Nun bin ich auf AVR-Studio umgestiegen und habe dort ein Projekt angelegt und den Code rein kopiert. Es lässt sicht compilieren und auf den Roboter übertragen. Aber mein Roboter macht gar nichts. Habe ie zwei Hex-Dateien von WinAVR und AVR-Studio verglichen und festgestellt, dass diese nicht gleich sind. Es scheint irgendwie an AVR-Sudio zu liegen.
    Weiß jemand woran es liegen kann?

    Gruß
    Cetin

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Ich behaupte jetzt einfach mal das es am makefile liegt.
    Du kannst aber bei den Projektoptionen einstellen, dass das alte makefile verwendet werden soll. Dann sollte es einwandfrei funktionieren

    LG

  3. #3
    Habe nun die Makefile vom WinAVR-Projekt benutzt. Wieder das gleiche, ich kann compilieren und programmieren aber das Programm läuft nicht. Kann das sein, dass er meine ausgelagerten Funktionen z.B. myusart.c und myusart.h nicht richtig einbindet?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Wenn du kompilieren kannst, dann werden deine Includes offensichtlich richtig eingebunden.
    Es könnte sein das dein Quellcode fehlerhaft ist (gibt es beim kompilieren Warnungen?).
    Nachdem dein Code auch mit dem Programmers-Notepad makefile nicht funktioniert vermute ich, dass es am Code liegt.

  5. #5
    Es kommen keine Warnungen. Wenn ich den gleichen Code in WinAVR Programmer Notepad kompiliere dann läuft das Programm ohne Probleme. Deshalb kann man Fehler im Code eigentlich ausschließen.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Hast du deine WinAVR Installation auf eine neuere Version gebracht??
    Denn dann kann es sehrwohl sein, dass Warnungen zu unterschiedlichen Compilaten führen.
    Sonst fällt mir auch nichts mehr ein da beide Versuche das selbe makefile benutzen -> selber Compiler,Linker usw...
    Und Avr-Studio macht ja nichts anderes als den Quellcode übers makefile an den Compiler zu geben.

  7. #7
    WinAVR und AVR-Studio sind beide auf dem neusten Stand.
    Hier mein Sourcecode: www.exaware.de/Robot.zip

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Also die "Warnungen" die ich bekomme sind eigentlich recht eindeutig warum es nicht funktioniert wie es soll.

    Du musst entweder Funktionsprototypen für jede Funktion vor die erste Funktion stellen, oder alle funktionen an den Anfang schreiben (nicht schön).
    Des weiteren musst du die Optimierung deines Compilers aktivieren (laut einer Warnung).
    und das hier:
    myusart.h :
    Code:
    #include "myusart.c"
    ist ja mal ein absolutes no-go.
    sowas macht man indem man die "myusart.c" zum Projekt linkt und nicht über sowas.

    Ich hoffe ich hab nichts vergessen. Falls ja kommen noch EDITs

    EDIT: hier ist es auch schon
    funktionen die nichts zurück geben deklariert man als void (sonst kommt eine Warnung)
    Hatte vergessen zu sagen, dass Header-Files normalerweise für Funktionsprototypen verwendet werden

    LG

  9. #9
    Meine Funktionen stehen doch alle am Anfang, oder? Wie meinst du das mit dem linken der "myusart.c"? Meinst du das ich das im Makefile angeben soll? Die Optimierung kann ich aber nicht aktivieren, wenn ich mein altes Makefile benutze.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Ich hab mir jetzt mal die Mühe gemacht und dein Projekt angepasst.
    Sollte so funktionieren.

    Du solltest globale Variablen wenn sie innerhalb von Interrups verwendet werden sollen als volatile deklarieren, da sie sonst unter umständen wegoptimiert werden.
    Fragwürdig ist auch, ob es sich auszahlt extra eine *.c und *.h Datei für eine einzige Funktion anzulegen...

    LG
    Angehängte Dateien Angehängte Dateien

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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