-
        

Ergebnis 1 bis 6 von 6

Thema: Probleme mit dem Adressbereich

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    19

    Probleme mit dem Adressbereich

    Anzeige

    Ich habe leider ein sehr blödes Problem!

    Wenn ich mein Programm im AVR Studio durchteste, und ich im Watch Fenster Variablen eingebe sehe ich ja die Adresse der Variable!!

    Nun ist es so das ich einen ATMega 8535 verwende, der 512 Byte SRAM Speicher hat.

    Wenn ich nun im AVR Studio bei einem Testlauf in ein Unterprogramm einsteige, wo ich lokale Variablen definiert habe, schreibt er mir bei der lokalen Variable einen Adressbereich hinein, der über den Adressbereichs meines Microcontrollers liegt!!!

    Jetzt habe ich die Frage, ob das überhaupt etwas ausmacht, oder ob das nur im AVR Studio so ist??
    Ich habe das Programm zwar schon ausgetestet mit meiner Platine, aber es macht einfach das Bild, als ob die lokalen Variablen in den Unterprogrammen einfach außerhalb des Adressbereichs wären!!!

    Weiß irgendjemand einen Ausweg? Hängt das vielleicht mit dem Compiler zusammen?? Bin ratlos!!!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Der Compiler kann deinem ATmega8535 auch nicht mehr SRAM verpassen. Ansonsten mach GCC, was du ihm sagst

    Bestenfalls mal Code posten oder schau mal ins asm, womöglich hast du da Kracher drin, die dir den gesamten SRAM wegfuttern.

    p.s.: So nebenbei... Hier wird auch auf Fragen geantwortet, die in Farben verfasst sind, bei deren Anschauen man nicht blind wird...
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    19
    Ha ha!!
    Aber die Frage fällt wenigstens gleich auf!!!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    19
    Hi!!

    Ich habe jetzt etwas neues probiert:
    Ich habe beim Makefile den ATMEga 32 eingestellt, da dieser ja die gleiche Pinbelegung hat, nur das er mehr SRAM Speicher hat, nämlich 2k!!

    Aber beim Simulator ist wieder das selbe, er legt die Adresse von lokalen Variablen in Unterprogrammen wieder Ausßerhalb des Speichers des Microcontroller ab!!

    z.B: 2130

    Warum ist das so???
    Weiß das vielleicht jemand??

    Oder hat jemand eine Ahnung wo man nachschauen kann? Ob man in irgendeinem File, welches der Compiler erstellt, nachschauen kann??

    MFG

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Keine Panik, Dein Compiler macht alles richtig und auch sonst ist alles ok.
    Denn

    1. 2kB sind nicht genau 2000 Bytes.
    2. Das interne SRAM fängt nicht bei Adresse 0 an.

    Schau Dir mal das Speicherlayout der Mega32 an (Datenblatt Seite 15)

    Die Adressen 0x00 bis 0x60 sind mit den internen Registern des AVR belegt. Erst ab da geht der SRAM los. Die Größe beträgt 2048 Bytes, in Hex wären das 0x7FF. Die höchste Adresse des SRAMs ist also 0x60 + 0x7FF = 0x85F - also 2143 dezimal. Die Adresse 2130 ist also noch innerhalb des SRAMs.

    Gruß,
    askazo

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    19
    Oh vielen dank!!!
    Du hast recht gehabt!

Berechtigungen

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