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 21, 2021
1 parent c43b93f commit 8aa935e
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
62 changes: 62 additions & 0 deletions examples/samv/blink/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* 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; // PllAMult * Osc 12MHz

static bool inline
enable()
{
ClockGen::setFlashLatency(Frequency / 2); // Flash runs off MCK
ClockGen::updateCoreFrequency(Frequency);

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

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;

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

while (1)
{
Led0::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 8aa935e

Please sign in to comment.