<div dir="ltr">Hi Hauke and Arndt,<div><br></div><div><b>Hauke:</b> your answer is sufficient for me to progress forward, thanks a bunch! My main concern has about adding additional functionality such as interrupts, slave mode, etc. into already defined RIOT peripheral headers. I'll locate the new features that are not encapsulated within the RIOT-core or RIOT-drivers as device-specific functionality for now. </div><div><br></div><div><b>Arndt:</b> I'll message you directly about collaborating on an Atxmega port that can be pushed to the RIOT repository. I'll finish my port first (1-2 days hopefully) before I examine your port so we can blend the two products together into something worth sharing :)</div><div><br></div><div>Thanks again!</div><div><br></div><div>Madison McCarthy</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 12, 2017 at 6:35 AM, Hauke Petersen <span dir="ltr"><<a href="mailto:hauke.petersen@fu-berlin.de" target="_blank">hauke.petersen@fu-berlin.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Madison,<br>
<br>
awesome to hear about your port, it will be very nice to have ATxmega support in RIOT. I will try to answer your questions inline below.<span class=""><br>
<br>
On 11.12.2017 22:04, Madison McCarthy wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Everyone,<br>
<br>
I'm nearing completion of a port for RIOT OS to the ATxmega family of devices (targeting the atxmega128). The Atxmega is feature rich when contrasted against the Atmega counterpart which I am using as a porting guideline.<br>
<br>
1) Since I would like to contribute my port to the git repository, how should I go about implementing new CPU features not found in the core RIOT OS functionality (enhanced TWI, USART, etc.)?<br>
</blockquote></span>
I don't quite get the question. TWI (i2c) and UART are interfaces provided by RIOT, which are simply implemented by the specific CPU implementations, hence their implementation code should reside in the corresponding cpu folder (as in /cpu/atxmega_common/periph/uar<wbr>t.c, etc.).<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2) How should I implement the addition of both Master and Slave functionality to my peripheral interfaces?<br>
</blockquote></span>
For the master mode of SPI and I2C (TWI) there are interfaces designed by RIOT (-> drivers/include/periph/[spi|i2<wbr>c].h). So simply implement them for the ATxmega and you should be good to go.<br>
<br>
Currently there are no interfaces for the slave mode of these buses, so my proposal would be that you include slave interfaces together with the CPU code (so to make the slave implementations CPU specific for now), and adapt the code at a later point in time once we introduce slave interfaces to RIOT.<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
3) How should I go about adding interrupt functionality for these peripherals?<br>
</blockquote></span>
Not sure what you mean: peripheral specific interrupts should be handled inside the corresponding periph drivers. The global interrupt handling is abstracted by the core/include/irq.h interface, which needs to be implemented for the CPU family.<br>
<br>
Hope this information helps, let me know where clarification is needed!<br>
<br>
Cheers,<br>
Hauke<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
<br>
Currently I am just smashing these extra features right into the driver's .C files as I am trying to preserve the OS-Core files.<br>
<br>
Any suggestions would be appreciated!<br>
<br>
Madison McCarthy<br>
<br>
<br></span>
______________________________<wbr>_________________<br>
devel mailing list<br>
<a href="mailto:devel@riot-os.org" target="_blank">devel@riot-os.org</a><br>
<a href="https://lists.riot-os.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">https://lists.riot-os.org/mail<wbr>man/listinfo/devel</a><br>
</blockquote>
<br>
</blockquote></div><br></div>