Hallo, nachdem ich nun endlich den SRAM am ATMEL dran hab würde ich den auch gerne nutzen... nun RTMF gemacht und folgenes gemacht. ;---Extended SRAM--- ldi wrH,(1<<SRE) ;enable XRAM interface out MCUCR,wrH ldi wrH,0 ;no waitstate sts XMCRA,wrH ldi wrH,(1<<XMBK) ;BusKeeper ON!, volle 60kb sts XMCRB,wrH Tcho und nun dachte ich das ich meine Variablen einfach vergrößern kann. .equ BUF_SIZE = 40960 .dseg ramB_STREAM: .Byte BUF_SIZE Nun sagt das AVR Studio bei dem compilieren... [.dseg] 0x000100 0x00a766 0 42598 42598 4096 1040.0% OVER Das hatte ich mir ganz anders vorgestellt ;-) Nun weiß ich nicht ob es überhaupt funktioniert... :-( Hat jemand nen Tip? Vielen Dank im Voraus! MfG AVRli...
Hallo, ja funktioniert so, ich habe auch noch nicht rausgefunden, wo ich dem AVR-Studio-Assembler mitteilen kann, daß es externes Ram gibt... Gruß aus Berlin Michael
Du teilst zwar der Maschine mit, dass mehr RAM da ist, aber nicht dem Studio. Siehe Project/Configuration Options/Memory Settings.
lt. Asm Doku fehlt eine .org Anweisung, guck mal in die Hilfe zu dieser Anweisung: DSEG ; Start data segment .ORG 0x120 ; Set SRAM address to hex 120 variable: .BYTE 1 ; Reserve a byte at SRAM adr. 0x120
Hallo, @A.K. gibt es nicht bei meinem Assembler-Projekt, gibt nur die Assembler-Options. Bei GCC-Projekten kann ich ihm Speicher ansagen... Gruß aus Berlin Michael
Danke für die Antworten, nun ich glaub das Teil arbeitet hier noch nicht richtig. Das Programm semmelt ständig ab... kram mal eben mein Oszi raus mal sehen ob man was sieht ob der Chip überhaupt angesprochen wird. Ist ein 62C5181024... Ich verwende nur ASM also ganz "primitiv". :-D MfG AVRli...
:-/ Also ich hab nun mehrmals die Verdrahtung gecheckt, am PIN PG2 Zappelt es wie verückt. Soweit ok wenn ich das Datenblatt richtig verstanden habe. Aber nun kommt es... ich sehe das was im externen SRAM abgelegt wird, leider schmiert das Programm noch immer mal wieder ab. Das verstehe ich nicht ganz, vielleicht doch ein bischen warten? Verwende ein SRAM mit 70ns Zugriffzeit und 8MHz Takt am ATMEL... Gruß AVRli...
Puhh lange genug hats gedauert, rennt soweit erstmal, nur der kleine Schönheitsfehler mit der falschenAnzeige im AVR Studio. Wenn man das nun noch anpassen könnte das wäre super. Achja und der Grund warum es hier nicht lief war diesmal kein HW Fehler sondern die "Zauberzeilen" heißen ja jetzt... ldi wrH,High(XRamEnd) out sph,wrH ldi wrH,Low(XRamEnd) out spl,wrH ;Stack initialisiert ...und NICHT... ldi wrH,High(RamEnd) out sph,wrH ldi wrH,Low(RamEnd) out spl,wrH ;Stack initialisiert ...denn nun findet der ATMEL den weg vom Stack auch zurück.... :-D MfG AVRli...
Du willst doch nicht etwa den Stack ins externe SRAM legen? Der Stack muss nicht am Ende des RAM-Bereiches liegen, Du kannst auch den Bereich hinter dem Stack als RAM für Variablen (und Arrays) nutzen. Denn die XMEM-Zugriffe sind langsamer als die Zugriffe auf internes SRAM, das würde ich dem Stack nicht antun. ...
Hallo, genau, Stack auf das interne Ramende, Begin meine Reservierungen an den Anfang des externen Ram. ldi wrH,High(RamEnd) out sph,wrH ldi wrH,Low(RamEnd) out spl,wrH ;Stack initialisiert .dseg .org BEGIN_XRAM ; weiß jetzt nicht, wo der beim Mega128 anfängt MEINE_BUFFER: .byte xyz Meist lege ich größere Buffer auf glatte Grenzen, dann kann man oft Rechnerei mit dem Low-Byte sparen, wenn es ohnehin Vielfache von 256 Byte sind. Dazu gibt es ja .org schließlich. ;) Gruß aus Berlin Michael
Wegen der Anzeige... ggf kanst du dir ja ein "eigenes" Device machen? Ich glaub Studio holt sich die Daten einfach aus den XML files, da kannste dann ja deinen Extraspeicher eintragen :)
Danke für Eure Hilfe, ich glaub nun hab ich's gerafft ;-) Also mein Buffer kommt in den EXT SRAM mit... .org 0x1100 ramB: 4096 und der Stack doch ins intern SRAM mit... ldi wrH,High(RamEnd) out sph,wrH ldi wrH,Low(RamEnd) out spl,wrH ;Stack initialisiert in der DeviceDatei "...\AvrAssembler2\Appnotes\m128def.inc" habe ich die Einträge gefunden... #pragma AVRPART MEMORY PROG_FLASH 131072 #pragma AVRPART MEMORY EEPROM 4096 #pragma AVRPART MEMORY INT_SRAM SIZE 4096 #pragma AVRPART MEMORY INT_SRAM START_ADDR 0x100 Wie groß ist den "INT_SRAM SIZE" nun wenn man einen 64k Externen SRAM dran hat? Könnte man dann dort ändern... ;-) Gruß AVRLi...
Ach eins noch... blöde Frage warscheinlich aber was ist mit dem Waitstate? Wann weiß man das man den einschalten muß und wann nicht? Kann man sich das ausrechnen? Hab nun 8MHz CPU Takt und nen Speicher mit 70ns Zufriffszeit. Gruß AVRli...
70ns sollten für bis zu 14Mhz ohne Waitstates passen. Du kannst die "Megaherze" relativ leicht ausrechen über 1/(Zugriffszeit in ns * 10^-3) wenn ich mich jezt nicht vertan habe. 64kx8 SRAM= 64.000 bytes (mußt im DB gucken obs 64k bits oder 64kx8 sind, im erstenfalle vorher durch 8 teilen) Also INT_SRAM SIZE=644096
Hallo, Zugriffszeit ausrechnen geht schon. Datenblatt des Rams nehmen und Zugriffsdiagramme für Lese- und Schreibzugriff suchen. Datenblatt des AVR nehmen und Zuklusdiagramm des externen Speicherinterfaces suchen. Beides solange sinnend anstarren, nis man zu verstehen beginnt, was die da jeweils wollen. ;) Sollte ein Scherz sein! :) Zykluszeit des AVR beim gegebenen Takt berechnen (1/Takt in MHz gibt µs), also 1/8 = 0,125 µs oder 125nS. Jetzt kann man im AVR-Diagramm die jeweiligen konkreten Zeiten (Daten-Vorhaltezeit bis /RD oder /WR oder /CE, Datenhahtezeit nach /RD, /WR, /CE, Adresshaltezeit usw. usw. ausrechnen und mit der Tabelle des Herstellers vergleichen. Solange ALLE Zeiten kleiner als max und größer als min vom Hersteller, stimmt alles. Das ist die "ganz ordentliche" Methode. Zum Überschlag reicht es, die Zyklus-Zeit als Vergleich zu nehmen. Bei 16MHz wären es nur 62,5ns, das wäre also bei einem 70ns-Ram sehr knapp. Stimmt aber auch nur teilweise, weil das Ram-Interface des AVR mehrere Systemtakte für einen Zyklus benötigt... So, genug Verwirrung gestiftet. :) Gruß aus Berlin Michael
Hi und Danke! So sieht schon gut aus! ;-D @Michael Das ist doch mal eine Aussage lieber zu genau als "muste mal im DB gucken". Es gibt Sachen da macht es keinen Unterschied ob ich da reinschaue oder nicht, die Zusammenhänge müßen einem klar sein, das sid sie jetzt! Die Fausformel sag mir das ich also nichts zu befürchten hab und wenn ich mal höher wie 8 MHz gehe heist es evtl. aufpassen. qLäubi Ich hab im ASM file nun eine Zeile eingetragen... gleich nach dem include.... .nolist .include "m128def.inc" .list #pragma AVRPART MEMORY INT_SRAM SIZE 65536 Nun zeigt das AVR Studio die Speicherausnutzung wieder "ordendlich" an ob der Wert stimmt kann ich nicht 100%tig sagen... bei 4k intern stand ja 4096 drin. Bin der Meinung gelesen zu haben das man den internen RAM nicht mehr zu 100% utzen kann. Bin mir aber auch nicht ganz sicher bei der Aussage. MfG AVRli...
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.