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 ?
Gast
#2760048
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.
Schaltbild ?
Hallo Pako, super das war's. Vielen Dank!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.