Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial support for Smart Response XE #669

Merged
merged 3 commits into from
Aug 23, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ jobs:
- name: Examples AVR Series
if: always()
run: |
(cd examples && ../tools/scripts/examples_compile.py avr arduino_uno arduino_nano)
(cd examples && ../tools/scripts/examples_compile.py avr arduino_uno arduino_nano srxe)
- name: Compile AVR Unittests AT90CAN
if: always()
run: |
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,7 @@ We have out-of-box support for many development boards including documentation.
</tr><tr>
<td align="center"><a href="https://modm.io/reference/module/modm-board-stm32_f4ve">STM32-F4VE</a></td>
<td align="center"><a href="https://modm.io/reference/module/modm-board-stm32f030_demo">STM32F030-DEMO</a></td>
<td align="center"><a href="https://modm.io/reference/module/modm-board-srxe">Smart Response XE</a></td>
</tr>
</table>
<!--/bsptable-->
Expand Down
24 changes: 24 additions & 0 deletions examples/srxe/blink/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2021, Tomasz Wasilczyk
*
* This file is part of the modm project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// ----------------------------------------------------------------------------

#include <modm/board.hpp>

int
main()
{
Board::initialize();

while (true)
{
Board::LedDebug::toggle();
modm::delay(1s);
}
}
9 changes: 9 additions & 0 deletions examples/srxe/blink/project.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<library>
<extends>modm:srxe</extends>
<options>
<option name="modm:build:build.path">../../../build/srxe/blink</option>
</options>
<modules>
<module>modm:build:scons</module>
</modules>
</library>
45 changes: 45 additions & 0 deletions src/modm/board/srxe/board.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright (c) 2021, Tomasz Wasilczyk
*
* This file is part of the modm project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// ----------------------------------------------------------------------------

#pragma once

#include <modm/platform.hpp>

twasilczyk marked this conversation as resolved.
Show resolved Hide resolved
using namespace modm::platform;

/// @ingroup modm_board_srxe
namespace Board {

using namespace modm::literals;

using SystemClock = modm::platform::SystemClock;

using LedDebug = GpioB0;
using Leds = SoftwareGpioPort<LedDebug>;

namespace Display {

using DC = GpioD6;
using CS = GpioE7;
using RST = GpioG2;

} // namespace Display

inline void
initialize() {
SystemClock::enable();

LedDebug::setOutput();

enableInterrupts();
}

} // namespace Board
15 changes: 15 additions & 0 deletions src/modm/board/srxe/board.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<library>
<repositories>
<repository>
<path>../../../../repo.lb</path>
</repository>
</repositories>

<options>
<option name="modm:target">atmega128rfa1-zu</option>
<option name="modm:platform:core:f_cpu">16000000</option>
</options>
<modules>
<module>modm:board:srxe</module>
twasilczyk marked this conversation as resolved.
Show resolved Hide resolved
</modules>
</library>
51 changes: 51 additions & 0 deletions src/modm/board/srxe/module.lb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2021, Tomasz Wasilczyk
#
# This file is part of the modm project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# -----------------------------------------------------------------------------

def init(module):
module.name = ":board:srxe"
module.description = """
# Smart Response XE

Smart Response XE is an obsolete classroom clicker, sold for as little as 5 USD on well known online auction site.
It's a compelling platform that's fully reverse engineered and ready to hack out of box, featuring:
- ATmega128RFA1 MCU
- 384x160 LCD display
- QWERTY keyboard
- External 1M SPI flash
- Exposed ISP and JTAG headers
- ZigBee transciever w/ antennas
- Powered by 4 AAA batteries
- Optional (unpopulated):
- RS232
- Debug LED
- Buzzer
- Accelerometer
"""

def prepare(module, options):
if not options[":target"].partname.startswith("atmega128rfa1"):
return False

module.depends(
":architecture:clock",
":architecture:interrupt",
":debug",
":platform:clock",
":platform:core",
":platform:gpio",
":platform:uart:0")
return True

def build(env):
env.outbasepath = "modm/src/modm/board"
env.copy('.')
env.collect(":build:default.avrdude.programmer", "usbasp");
1 change: 1 addition & 0 deletions tools/scripts/synchronize_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ def name(raw_name):
.replace("ARDUINO-UNO", "Arduino UNO")\
.replace("ARDUINO-NANO", "Arduino NANO")\
.replace("RASPBERRYPI", "Raspberry Pi")\
.replace("SRXE", "Smart Response XE")\
.replace("GENERIC", "Generic")\
.replace("LINUX", "Linux")\
.replace("WINDOWS", "Windows")\
Expand Down