Skip to content

Commit

Permalink
Blinky example for SAMV
Browse files Browse the repository at this point in the history
  • Loading branch information
twasilczyk committed Sep 17, 2021
1 parent 66e3068 commit df843b0
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
63 changes: 63 additions & 0 deletions examples/samv/blink/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* 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/architecture/interface/clock.hpp>
#include <modm/platform.hpp>

using namespace std::chrono_literals;
using namespace modm::platform;

struct SystemClock
{
// Chosen to achieve 300MHz system clock
static constexpr uint32_t PllAMult = 25;
static constexpr uint32_t Frequency = 300'000'000; // TODO: PllAMult * 12'000'000 (OSC12M);

static bool inline
enable()
{
ClockGen::setFlashLatency<Frequency>(); // TODO: what is this for?
ClockGen::updateCoreFrequency<Frequency>();

ClockGen::enableMainInternal<MainInternalFreq::Rc12Mhz>();
ClockGen::selectMainClockSource<MainClockSource::Internal>();
ClockGen::enablePllA<PllAMult>();
ClockGen::selectMasterClk<MasterClkSource::PLLA_CLK, MasterClkPrescaler::CLK_1>();

return true;
}
};

int
main()
{
WDT->WDT_MR = (WDT_MR_WDDIS_Msk); // turn off Watchdog
SystemClock::enable();
SysTickTimer::initialize<SystemClock>();

using Led0 = modm::platform::GpioD17;
using Led1 = modm::platform::GpioD16;
using Led2 = modm::platform::GpioD15;
using DispDC = modm::platform::GpioD26;

Led0::setOutput(false);
Led1::setOutput(true);
Led2::setOutput(false);
DispDC::setOutput(false);

while (1)
{
Led0::toggle();
DispDC::toggle();
modm::delay(500ms);
}

return 0;
}
9 changes: 9 additions & 0 deletions examples/samv/blink/openocd.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
source [find interface/jlink.cfg]
transport select swd

source [find target/atsamv.cfg]

# Set boot mode selection to Flash (instead of SAM-BA on ROM)
init
halt
atsamv gpnvm set 1
15 changes: 15 additions & 0 deletions examples/samv/blink/project.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<library>
<options>
<option name="modm:target">samv70n20b-aabt</option>
<option name="modm:build:build.path">../../../build/samv/blink</option>
<option name="modm:build:openocd.cfg">openocd.cfg</option>
</options>
<modules>
<module>modm:build:scons</module>
<module>modm:platform:core</module>
<module>modm:platform:clock</module>
<module>modm:platform:gpio</module>
<module>modm:architecture:delay</module>
<module>modm:platform:clockgen</module>
</modules>
</library>

0 comments on commit df843b0

Please sign in to comment.