32 bit integer für SRAM

Gast #176946
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
Gast #176947
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
#176948
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.