mikrocontroller.net

Forum: Compiler & IDEs 32 bit integer für SRAM


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich benutze einen externen SRAM speicher mit 2048kB = 2MB und benötige
dafür 21 adressleitungen, sprich 21 bits. also dachte ich mir, verwende
ich den uint32_t 32-bit integertype aus der <inttypes.h> von WinAVR,
jedoch funktioniert die ganze sache nicht so recht. was könnte die
ursache für dieses problem sein und wie kann ich es lösen? - und kann
ich das unten setehnde beispiel so verwenden?

-------

uint32_t i,end_addr;

end_addr=byte0|(byte1<<8)|(byte2)<<16;      //byte0..2 addressbytes

for(i=0;i<end_addr;i++){
    ....
}

--------

danke und schöne grüße,
Max

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch einige zusätzliche informationen:

dass es nicht funktioniert, habe ich daran erkannt, dass die schleife
bei 32767 abgebrochen hat, was den wertebereich eines 16-bit signed
integer entspricht.

ich verwende einen ATmega32 und WinAVR

gruß,
max

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Viele lieben C, weil es sich nicht einmischt.

Z.B. geht es davon aus, daß der Programmierer sich was dabei gedacht
hat, wenn er eine Operation mit Bereichsüberschreitung durchführt.

Und das hier:

(byte2)<<16;

dürfte eine solche sein, sofern byte2 nicht 32bittig ist.
Könnte man z.B. so abändern:

((unsigned long)byte2)<<16;


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.