<?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=%24FORCESOFTI2C</id>
		<title>$FORCESOFTI2C - 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=%24FORCESOFTI2C"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=$FORCESOFTI2C&amp;action=history"/>
		<updated>2026-04-13T16:12:59Z</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=$FORCESOFTI2C&amp;diff=4584&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;= &lt;span class=&quot;f_Header&quot;&gt;Action&lt;/span&gt; =  The $forcesofti2c directive force the ATXMEGA to use software I2C/TWI Library instead of the hardware I2C registers of ATXMEGA.  &lt;spa...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=$FORCESOFTI2C&amp;diff=4584&amp;oldid=prev"/>
				<updated>2013-08-24T08:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =  The $forcesofti2c directive force the ATXMEGA to use software I2C/TWI Library instead of the hardware I2C registers of ATXMEGA.  &amp;lt;spa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The $forcesofti2c directive force the ATXMEGA to use software I2C/TWI Library instead of the hardware I2C registers of ATXMEGA.&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;$forcesofti2c&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;&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&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
ATXMEGA have usually enough I2C interfaces with fixed SDA and SCL pins but if you want to use other pins as SDA/SCL you can use this directive.&lt;br /&gt;
&lt;br /&gt;
Required Library: $lib &amp;quot;i2c.lbx&amp;quot; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]You can not combine the soft mode with the hardware TWI. Thus when using $forcesofti2c, you can not add an additional TWI channel.&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 style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;$forcesofti2c &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;' with this the software I2C/TWI commands are used when inlcuding i2c.lbx&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;$lib&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;quot;i2c.lbx&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;' override the normal xmega i2c lib&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; color: rgb(0, 128, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&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;Then you need to configure the SDA and SCL Pin and initialize the pins:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New';&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: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Scl&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(128, 0, 0);&amp;quot;&amp;gt;Port0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;1 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;' Pin to use as SCL (The hardware pin is Pinb.1)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Sda&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(128, 0, 0);&amp;quot;&amp;gt;Port0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;0 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; '&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;Pin to use as SDA (The hardware pin is Pinb.0)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cinit&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;' Bring the Pin's in the proper state&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&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-size: 8pt; font-family: Courier; color: rgb(0, 128, 0);&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-size: 8pt; font-family: Courier; color: rgb(0, 128, 0);&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;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;[[Using the I2C protocol|Using the I2C protocol]]&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 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;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
' Using ATXMEGA with software I2C routines to use also pins which are no hardware SDA/SCL pins&lt;br /&gt;
' Needed Library: $lib &amp;quot;i2c.lbx&amp;quot;&lt;br /&gt;
' The $forcesofti2c directive force the ATXMEGA to use software I2c/TWI Library&lt;br /&gt;
 &lt;br /&gt;
' The hardware for this example is XMEGA-A3BU XPlained board from Atmel&lt;br /&gt;
' Don't forget the pull-ups on SDA/SCL pin !&lt;br /&gt;
' Bascom Version 2.0.7.6 or higher needed&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;XM256A3BUDEF.DAT&amp;quot;&lt;br /&gt;
$crystal = 32000000 '32MHz&lt;br /&gt;
$hwstack = 64&lt;br /&gt;
$swstack = 40&lt;br /&gt;
$framesize = 80&lt;br /&gt;
 &lt;br /&gt;
$forcesofti2c ' with this the software I2C/TWI commands are used when inlcuding i2c.lbx&lt;br /&gt;
$lib &amp;quot;i2c.lbx&amp;quot; ' override the normal xmega i2c lib&lt;br /&gt;
 &lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
Config Portr.0 = Output&lt;br /&gt;
Led0 Alias Portr.0 'LED 0 (XMEGA-A3BU XPlained board from Atmel )&lt;br /&gt;
 &lt;br /&gt;
Config Portr.1 = Output&lt;br /&gt;
Led1 Alias Portr.1 'LED 1 (XMEGA-A3BU XPlained board from Atmel )&lt;br /&gt;
 &lt;br /&gt;
Dim B As Byte&lt;br /&gt;
 &lt;br /&gt;
'We use here Virtual port 0&lt;br /&gt;
Config Vport0 = B ' 'map portB to virtual port0&lt;br /&gt;
Config Scl = Port0 .1 ' Pin to use as SCL (The hardware pin is Pinb.1)&lt;br /&gt;
Config Sda = Port0 .0 ' Pin to use as SDA (The hardware pin is Pinb.0)&lt;br /&gt;
I2cinit ' Bring the Pin's in the proper state&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 &lt;br /&gt;
Waitms 500&lt;br /&gt;
Set Led1&lt;br /&gt;
Reset Led0&lt;br /&gt;
Waitms 500&lt;br /&gt;
Reset Led1&lt;br /&gt;
Set Led0&lt;br /&gt;
 &lt;br /&gt;
Incr B&lt;br /&gt;
 &lt;br /&gt;
I2cstart&lt;br /&gt;
I2cwbyte &amp;amp;H24 ' address of I2C Slave&lt;br /&gt;
I2cwbyte B ' databyte to send to slave&lt;br /&gt;
I2cstop&lt;br /&gt;
 &lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
End 'end program&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>