Hallo Zusammen, ich habe folgendes Problem beim Versuch, Daten zwischen einem 8-Bit SRAM und dem AVR32UC3A0 zu handeln (Entwicklungsumgebung ist Atmel Studio 6, Sprache C/C++): Die immer 1 Byte großen Nutzdaten schreibe ich mit einem uint8_t Pointer in den SRAM, beim Auslesen klappt alles super, aber beim Schreiben werden immer 4 Byte mit dem gleichen Inhalt in den SRAM geschrieben. Analog zu dem Beispiel im Atmel Studio habe ich die smc.h angepasst, also Data Bus With = 8, CS[0] ist in Software und Hardware aktiv. Hat da jemand ne Idee, was ich falsch mache ?
Ich kenne den AVR32 nicht, aber ich vermute mal folgendes: Der externe Datenbus ist 32Bit breit. Wenn du 32Bit-RAM drannhängen hättest, dann würde die - Adresse 0x00000000 das Byte 0 des 32Bit-Wortes 0 adressieren, - Adresse 0x00000001 das Byte 1 des 32Bit-Wortes 0 adressieren, - Adresse 0x00000002 das Byte 2 des 32Bit-Wortes 0 adressieren, - Adresse 0x00000003 das Byte 3 des 32Bit-Wortes 0 adressieren, - Adresse 0x00000004 das Byte 0 des 32Bit-Wortes 1 adressieren, - Adresse 0x00000005 das Byte 1 des 32Bit-Wortes 1 adressieren, usw. D.h. der Adressausgang A0 am Prozessor ändert sich nur alle 4 Bytes. Dein 8Bit-RAM hängt aber wahrscheinlich mit seinem Eingang A0 an diesem Ausgang A0. D.h. Dein RAM sieht nur dann eine neue Adresse, wenn sich A0 ändert und das passiert nur alle 4 Bytes. PS: keine Garantie, daß das stimmt, war einfach mal vermutet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.