<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=CONFIG_XRAM%2Fde</id>
		<title>CONFIG XRAM/de - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=CONFIG_XRAM%2Fde"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=CONFIG_XRAM/de&amp;action=history"/>
		<updated>2026-05-02T00:00:53Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=CONFIG_XRAM/de&amp;diff=2261&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=CONFIG_XRAM/de&amp;diff=2261&amp;oldid=prev"/>
				<updated>2013-02-15T19:13:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:13, 15 February 2013&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=CONFIG_XRAM/de&amp;diff=2260&amp;oldid=prev</id>
		<title>Admin at 13:04, 8 February 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=CONFIG_XRAM/de&amp;diff=2260&amp;oldid=prev"/>
				<updated>2013-02-08T13:04:24Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== (**COPIED FROM ENGLISH PAGE**) === &amp;lt;span style=&amp;quot;font-size: 14pt; font-weight: bold;&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Instruct the compiler to set options for external memory access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG XRAM&amp;lt;/span&amp;gt;&amp;amp;nbsp;= mode &amp;amp;nbsp;[ , WaitstateLS=wls] [ , WaitStateHS=whs ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax Older chips&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG XRAM&amp;lt;/span&amp;gt;&amp;amp;nbsp;= mode &amp;amp;nbsp; , Waitstate=wls&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax Xmega&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG XRAM&amp;lt;/span&amp;gt;&amp;amp;nbsp;= mode, sdbus=sdbus,lpc=lpc,sdcol=sdcol,sdcas=sdcas,sdrow=sdrow,refresh=refresh,initdelay=initdelay,modedelay=modedelay,rowcycledelay=rowcycledelay,rowprechargedelay=rowprechargedelay,wrdelay=wrdelay,ersdelay=esrdelay, &amp;amp;nbsp;rowcoldelay=rowcoldelay,modesel0=sel,adrsize0=adr,baseadr0=base,modesel1=sel,adrsize1=adr,baseadr1=base,modesel2=sel,adrsize2=adr,baseadr2=base,modesel3=sel,adrsize3=adr,baseadr3=base&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also:&amp;amp;nbsp;[[Adding_XRAM_with_External_Memory_Interface|Adding XRAM with External Memory Interface]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks AVR&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; style=&amp;quot;width: 87px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Mode&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 508px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The memory mode. This is either enabled or disabled. By default, external memory access is disabled.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; style=&amp;quot;width: 87px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Wls&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 508px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When external memory access is enabled, some chips allow you to set a wait state. The number of modes depend on the chip. A modern chip such as the Mega8515 has 4 modes :&lt;br /&gt;
&lt;br /&gt;
0 - no wait states&lt;br /&gt;
&lt;br /&gt;
1 - 1 cycle wait state during read/write&lt;br /&gt;
&lt;br /&gt;
2 - 2 cycle wait state during read/write&lt;br /&gt;
&lt;br /&gt;
3 - 2 cycle wait state during read/write and 1 before new address output&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WLS works on the lower sector. Provided that the chip supports this.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; style=&amp;quot;width: 87px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Whs&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 508px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When external memory access is enabled, some chips allow you to set a wait state. The number of modes depend on the chip. A modern chip such as the Mega8515 has 4 modes :&lt;br /&gt;
&lt;br /&gt;
0 - no wait states&lt;br /&gt;
&lt;br /&gt;
1 - 1 cycle wait state during read/write&lt;br /&gt;
&lt;br /&gt;
2 - 2 cycle wait state during read/write&lt;br /&gt;
&lt;br /&gt;
3 - 2 cycle wait state during read/write and 1 before new address output&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WHS works on the high sector. Provided that the chip supports this.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait states are needed in case you connect equipment to the bus, that is relatively slow. Especial older electronics/chips.&lt;br /&gt;
&lt;br /&gt;
Some AVR chips also allow you to divide the memory map into sections. By default the total XRAM memory address is selected when you set a wait state.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Older chips like the 90S8515 do not have a lower and upper sector. The setting is for all the memory in that case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The $XA directive should not be used anymore. It is the same as CONFIG XRAM=Enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|left]]When using IDLE or another power down mode, it might be needed to use CONFIG XRAM again, after the chip wakes from the power down mode.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 10pt;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;XMEGA&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Mode&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The memory mode. There are 4 options:&lt;br /&gt;
&lt;br /&gt;
- DISABLED, this will turn off the EBI and is the default&lt;br /&gt;
&lt;br /&gt;
- 3PORT. For using EBI in 3 PORT mode.&lt;br /&gt;
&lt;br /&gt;
- 4PORT. For using EBI in 4 PORT mode.&lt;br /&gt;
&lt;br /&gt;
- 2PORT. For using EBI in 2 PORT mode.&lt;br /&gt;
&lt;br /&gt;
The EBI uses specific ports for each of the modes.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
sdbus&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM, you need to configure 4 bit or 8 bit data width. For the 3 PORT mode you need to use 4 bit SDRAM.&lt;br /&gt;
&lt;br /&gt;
Options are&amp;amp;nbsp;: 4 and 8.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &amp;lt;br/&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &amp;lt;br/&amp;gt;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
sdcol&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM, you need to configure the number of columns of the chip. This depends on the chip. You can find this info in the datasheet of the SDRAM chip. For example a chip with column address A0-A9 would use 10 bits.&lt;br /&gt;
&lt;br /&gt;
Options&amp;amp;nbsp;: 8 ,9, 10 or 11.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
sdrow&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM, you need to configure the number of rows of the chip. This depends on the chip. You can find this info in the datasheet of the SDRAM chip.&lt;br /&gt;
&lt;br /&gt;
Options&amp;amp;nbsp;: 11 or 12.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
sdcas&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM you can configure the CAS latency as a number of Peripheral 2x Clock cycles.&lt;br /&gt;
&lt;br /&gt;
By default this is two Peripheral 2x Clock cycles.&lt;br /&gt;
&lt;br /&gt;
Options are&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
-2&amp;amp;nbsp;: CAS latency is two Peripheral 2x Clock cycles&lt;br /&gt;
&lt;br /&gt;
-3&amp;amp;nbsp;: CAS latency is three Peripheral 2x Clock cycles&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
refresh&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value sets the refresh period as a number of peripheral clock cycles. Use a value between 0-1023. The value depends on the chip.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
initdelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value sets the delay of the initialization sequence that is sent after the voltages have been stabilized and the SDRAM clock is stable. The value is in the range of 0-16384&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
modedelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value select the delay between Mode Register command and an Activate command in number of Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;amp;nbsp;cycles. The range is between 0-3&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
rowcycledelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value select the delay between a refresh an and Activate command in number of Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;cycles. The range is between 0-7&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
rowprechargedelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value select the delay between a pre-charge command and another command in number of Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;amp;nbsp;cycles. The range is between 0-7&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
wrdelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value selects the write recovery time in number of &amp;amp;nbsp;Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;amp;nbsp;cycles. The range is between 0-3&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
esrdelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value selects the delay between CKE set high and activate command in number of &amp;amp;nbsp;Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;cycles. The range is between 0-7&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
rowcoldelay&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this value selects the delay between an activate command and a read/write command as a number of &amp;amp;nbsp;Peripheral 2x clock (CLK&amp;lt;span style=&amp;quot;font-size: 7pt; font-family: Arial;&amp;quot;&amp;gt;PER2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;amp;nbsp;cycles. The range is between 0-7&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &amp;lt;br/&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style: italic;&amp;quot;&amp;gt;The options ending with&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic; font-weight: bold;&amp;quot;&amp;gt;x&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;&amp;quot;&amp;gt;, are available multiple times.(0-3)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style: italic;&amp;quot;&amp;gt;So there is an option named selfrefresh0, selfrefresh1, selfrefresh2 and selfrefresh3.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
selfrefresh&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this options can turn on/off self refresh of the SDRAM. Not all SDRAM have this capability. Valid options are&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
- ENABLED&lt;br /&gt;
&lt;br /&gt;
- DISABLED. This is the default.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
sdmode&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
When using SDRAM this option sets the SDRAM mode. This is either NORMAL (default) or LOAD.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
modesel&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
This option selects the MODE of the CS line.&lt;br /&gt;
&lt;br /&gt;
There are 4 CS lines and modes. When using SDRAM you can only select modesel3 to configure the SDRAM.&lt;br /&gt;
&lt;br /&gt;
The following options are possible:&lt;br /&gt;
&lt;br /&gt;
- DISABLE&lt;br /&gt;
&lt;br /&gt;
- SRAM&lt;br /&gt;
&lt;br /&gt;
- LPC (this is SRAM in low pin count mode)&lt;br /&gt;
&lt;br /&gt;
- SDRAM&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
adrsize&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
This options sets the address size for the chip select. This is the size of the block above the base address and determines which address lines are compared to generate the CS.&lt;br /&gt;
&lt;br /&gt;
Options are:&lt;br /&gt;
&lt;br /&gt;
256b , 256 bytes, address 8:23&lt;br /&gt;
&lt;br /&gt;
512b, 512 bytes, address 9:23&lt;br /&gt;
&lt;br /&gt;
1K , 1 KB , address 10:23&lt;br /&gt;
&lt;br /&gt;
2K , 2 KB &amp;amp;nbsp;, address 11:23&lt;br /&gt;
&lt;br /&gt;
4K , 4 KB , address 12:23&lt;br /&gt;
&lt;br /&gt;
8K, 8 KB , address 13:23&lt;br /&gt;
&lt;br /&gt;
16K , 16 KB , address 14:23&lt;br /&gt;
&lt;br /&gt;
32K , 32 KB , address 15:23&lt;br /&gt;
&lt;br /&gt;
64K , 64 KB , address 16:23&lt;br /&gt;
&lt;br /&gt;
128K , 128 KB, address 17:23&lt;br /&gt;
&lt;br /&gt;
256K , 256 KB , address 18:23&lt;br /&gt;
&lt;br /&gt;
512K , 512 KB , address 19:23&lt;br /&gt;
&lt;br /&gt;
1M , 1 MB, address 20:23&lt;br /&gt;
&lt;br /&gt;
2M , 2 MB , address 21:23&lt;br /&gt;
&lt;br /&gt;
4M , 4 MB , address 22:23&lt;br /&gt;
&lt;br /&gt;
8M , &amp;amp;nbsp;8 MB, address &amp;amp;nbsp;23&lt;br /&gt;
&lt;br /&gt;
16M , 16 MB&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
baseadr&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
This option sets the chip base address which is the lowest address in the address space enabled by the chip select.&lt;br /&gt;
&lt;br /&gt;
The value is a word and sets address bits 12:23. Bits 0:11 are unused and need to be 0.&lt;br /&gt;
&lt;br /&gt;
For an 8 MB SDRAM the valid values are 0 and &amp;amp;H800000. Since the lower bits are not used the address is divided by 256 by the compiler. When using 0, the memory overlaps the SRAM which is not a big problem with 8MB of ram!&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &amp;lt;br/&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &amp;lt;br/&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
In SRAM mode there are some other options you must set&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
lpc&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
This sets the ALE mode in LPC SRAM mode.&lt;br /&gt;
&lt;br /&gt;
Options are&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
ALE1&amp;amp;nbsp;: data multiplexed with address byte 0&lt;br /&gt;
&lt;br /&gt;
ALE12&amp;amp;nbsp;: data multiplexed with address byte 0 and 1&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
ale&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
This sets the ALE mode in normal SRAM mode.&lt;br /&gt;
&lt;br /&gt;
Options are&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
ALE1&amp;amp;nbsp;: address byte 0 and 1 multiplexed&lt;br /&gt;
&lt;br /&gt;
ALE2&amp;amp;nbsp;: address byte 0 and 2 multiplexed&lt;br /&gt;
&lt;br /&gt;
ALE12&amp;amp;nbsp;: address byte 0, 1 and 2 multiplexed&lt;br /&gt;
&lt;br /&gt;
NOALE&amp;amp;nbsp;: No address multiplexing&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;21%&amp;quot; style=&amp;quot;width: 125px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
waitstate&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 470px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The wait state selects the wait states for SRAM and SRAM LPC access as a number of peripheral 2x clock cycles.&lt;br /&gt;
&lt;br /&gt;
This is a value in the range from 0-7&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|left|Notice.jpg]]While the EBI (External Bus Interface) can be configured to use a big 8 MB or 16 MB SDRAM, the compiler was changed in order to support more then 64KB of RAM (you need BASCOM-AVR Verison 2.0.7.4 or higher).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For 3PORT , 4-bit SDRAM mode the ports are set to the right direction and level. For all other modes you need to do this.&lt;br /&gt;
&lt;br /&gt;
An example on how to determine the columns and rows is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sdram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In 4 bit data mode, you use 16 Meg x 4, &amp;amp;nbsp;the row addressing is A0-A11 thus 12 bit and the column addressing is A0-A9 thus 10 bit.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[$XA]]&amp;amp;nbsp;,&amp;amp;nbsp;[[$WAITSTATE]],&amp;amp;nbsp;[[Memory_usage|Memory Usage]], [[Adding_XRAM_with_External_Memory_Interface|Adding Xram]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
CONFIG XRAM = Enabled, WaitstateLS=1 , WaitstateHS=2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;font-size: 19px; font-weight: bold;&amp;quot;&amp;gt;Xmega Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'----------------------------------------------------------------&lt;br /&gt;
' (c) 1995-2010, MCS&lt;br /&gt;
' xm128-XRAM-SDRAM-XPLAIN.bas&lt;br /&gt;
' This sample demonstrates the Xmega128A1 XRAM SDRAM&lt;br /&gt;
'-----------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
$hwstack = 64&lt;br /&gt;
$swstack = 64&lt;br /&gt;
$framesize = 64&lt;br /&gt;
$xramsize = &amp;amp;H800000&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'for xplain we need 9600 baud&lt;br /&gt;
Config Com1 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
Dim B As Byte , B1 As Byte , B2 As Byte&lt;br /&gt;
Config Porte = Output&lt;br /&gt;
For B = 1 To 5&lt;br /&gt;
Toggle Porte&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Xplain SDRAM test&amp;quot;&lt;br /&gt;
'the XPLAIN has a 64 MBit SDRAM which is 8 MByte, it is connected in 3 port, 4 bit databus mode&lt;br /&gt;
'in the PDF of the SDRAM you can see it is connected as 16 Meg x 4. Refreshcount is 4K and the row address is A0-A11, column addressing is A0-A9&lt;br /&gt;
Config Xram = 3port , Sdbus = 4 , Sdcol = 10 , Sdcas = 3 , Sdrow = 12 , Refresh = 500 , Initdelay = 3200 , Modedelay = 2 , Rowcycledelay = 7 , Rowprechargedelay = 7 , Wrdelay = 1 , Esrdelay = 7 , Rowcoldelay = 7 , Modesel3 = Sdram , Adrsize3 = 8m , Baseadr3 = &amp;amp;H0000&lt;br /&gt;
'the config above will set the port registers correct. it will also wait for Ebi_cs3_ctrlb.7&lt;br /&gt;
'for all other modes you need to do this yourself !&lt;br /&gt;
 &lt;br /&gt;
Dim X(65000) As Xram Byte&lt;br /&gt;
 &lt;br /&gt;
Rampd = 0 ' first xram page&lt;br /&gt;
ldi r24,65 ' load a value&lt;br /&gt;
sts {x(60000)},r24 ' write&lt;br /&gt;
lds r16,{x(60000)} ' read&lt;br /&gt;
 &lt;br /&gt;
Rampd = 1 'set rampd to second xram page&lt;br /&gt;
ldi r24,66 ' load value&lt;br /&gt;
sts {x(60000)},r24 ' write&lt;br /&gt;
 &lt;br /&gt;
Rampd = 0 'back to first page&lt;br /&gt;
lds r17,{x(60000)} 'read&lt;br /&gt;
 &lt;br /&gt;
Rampd = 1 'back to second page&lt;br /&gt;
lds r18,{x(60000)} ' read&lt;br /&gt;
Rampd = 0 'make sure to switch back&lt;br /&gt;
 &lt;br /&gt;
sts {b1},r16 ' load into var&lt;br /&gt;
sts {b2},r17&lt;br /&gt;
sts {b},r18&lt;br /&gt;
Print &amp;quot;result : &amp;quot; ; B1 ; &amp;quot; &amp;quot; ; B2 ; &amp;quot; &amp;quot; ; B&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;SRAM&amp;quot;&lt;br /&gt;
X(10000) = 100 ' this will use normal SRAM&lt;br /&gt;
B = X(10000)&lt;br /&gt;
Print &amp;quot;result : &amp;quot; ; B&lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;font-size: 19px; font-weight: bold;&amp;quot;&amp;gt;Another ATXMEGA Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'Example to copy a SRAM Array to a XRAM Array over Direct Memory Access (DMA)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
$hwstack = 64&lt;br /&gt;
$swstack = 40&lt;br /&gt;
$framesize = 40&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'first enable the osc of your choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
' for xplain you need 9600 baud&lt;br /&gt;
' Config Com1 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
Config Com5 = 57600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
Open &amp;quot;COM5:&amp;quot; For Binary As #1&lt;br /&gt;
 &lt;br /&gt;
'SRAM Variables&lt;br /&gt;
Dim Ar(100) As Byte , J As Word , W As Word&lt;br /&gt;
Dim B As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
' Demoboards like XPLAIN has a 64 MBit SDRAM (MT48LC16M4A2TG) which is 8 MByte, it is connected in 3 port, 4 bit databus mode&lt;br /&gt;
' http://www.micron.com/products/ProductDetails.html?product=products/dram/sdram/MT48LC16M4A2TG-75&lt;br /&gt;
' in the PDF of the SDRAM you can see it is connected as 16 Meg x 4. Refreshcount is 4K and the row address is A0-A11, column addressing is A0-A9&lt;br /&gt;
' SDRAM = SYNCHRONOUS DRAM&lt;br /&gt;
Config Xram = 3port , Sdbus = 4 , Sdcol = 10 , Sdcas = 3 , Sdrow = 12 , Refresh = 500 , Initdelay = 3200 , Modedelay = 2 , Rowcycledelay = 7 , Rowprechargedelay = 7 , Wrdelay = 1 , Esrdelay = 7 , Rowcoldelay = 7 , Modesel3 = Sdram , Adrsize3 = 8m , Baseadr3 = &amp;amp;H0000&lt;br /&gt;
' the config above will set the port registers correct. it will also wait for Ebi_cs3_ctrlb.7&lt;br /&gt;
' for all other modes you need to do this yourself !&lt;br /&gt;
 &lt;br /&gt;
$xramsize = 8000000 ' 8 MByte&lt;br /&gt;
 &lt;br /&gt;
'XRAM Variables&lt;br /&gt;
Dim Dummy(100000) As Xram Byte 'Xram Variable with 100000 Bytes to ensure we are working above 64KByte&lt;br /&gt;
Dim Dest(100) As Xram Byte 'Next Xram Var with 100 Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For J = 1 To 100&lt;br /&gt;
 Ar(j) = J ' create an array and assign a value&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
Print #1 , &amp;quot;Start DMA DEMO --&amp;gt; copy SRAM Array to XRAM Array&amp;quot;&lt;br /&gt;
Config Dma = Enabled , Doublebuf = Disabled , Cpm = Rr ' enable DMA&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'you can configure 4 DMA channels&lt;br /&gt;
Config Dmach0 = Enabled , Burstlen = 8 , Chanrpt = Enabled , Tci = Off , Eil = Off , Sar = None , Sam = Inc , Dar = None , Dam = Inc , Trigger = 0 , Btc = 100 , Repeat = 1 , Sadr = Varptr(ar(1)) , Dadr = Varptr(dest(1))&lt;br /&gt;
 &lt;br /&gt;
Start Dmach0 ' this will do a manual/software DMA transfer, when trigger&amp;lt;&amp;gt;0 you can use a hardware event as a trigger source&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
For J = 1 To 50&lt;br /&gt;
 B = Dest(j) 'This step is needed to work with XRAM above 64KByte&lt;br /&gt;
Print #1 , J ; &amp;quot;-&amp;quot; ; Ar(j) ; &amp;quot;-&amp;quot; ; B ' print the values&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
 'end program&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'(&lt;br /&gt;
Terminal Output of example:&lt;br /&gt;
 &lt;br /&gt;
Start DMA DEMO --&amp;gt; copy SRAM Array to XRAM Array&lt;br /&gt;
1-1-1&lt;br /&gt;
2-2-2&lt;br /&gt;
3-3-3&lt;br /&gt;
4-4-4&lt;br /&gt;
5-5-5&lt;br /&gt;
6-6-6&lt;br /&gt;
7-7-7&lt;br /&gt;
8-8-8&lt;br /&gt;
9-9-9&lt;br /&gt;
10-10-10&lt;br /&gt;
11-11-11&lt;br /&gt;
12-12-12&lt;br /&gt;
13-13-13&lt;br /&gt;
14-14-14&lt;br /&gt;
15-15-15&lt;br /&gt;
16-16-16&lt;br /&gt;
17-17-17&lt;br /&gt;
18-18-18&lt;br /&gt;
19-19-19&lt;br /&gt;
20-20-20&lt;br /&gt;
21-21-21&lt;br /&gt;
22-22-22&lt;br /&gt;
23-23-23&lt;br /&gt;
24-24-24&lt;br /&gt;
25-25-25&lt;br /&gt;
26-26-26&lt;br /&gt;
27-27-27&lt;br /&gt;
28-28-28&lt;br /&gt;
29-29-29&lt;br /&gt;
30-30-30&lt;br /&gt;
31-31-31&lt;br /&gt;
32-32-32&lt;br /&gt;
33-33-33&lt;br /&gt;
34-34-34&lt;br /&gt;
35-35-35&lt;br /&gt;
36-36-36&lt;br /&gt;
37-37-37&lt;br /&gt;
38-38-38&lt;br /&gt;
39-39-39&lt;br /&gt;
40-40-40&lt;br /&gt;
41-41-41&lt;br /&gt;
42-42-42&lt;br /&gt;
43-43-43&lt;br /&gt;
44-44-44&lt;br /&gt;
45-45-45&lt;br /&gt;
46-46-46&lt;br /&gt;
47-47-47&lt;br /&gt;
48-48-48&lt;br /&gt;
49-49-49&lt;br /&gt;
50-50-50&lt;br /&gt;
')&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>