Skyward boardcore
Loading...
Searching...
No Matches
DipSwitch.cpp
Go to the documentation of this file.
1/* Copyright (c) 2024 Skyward Experimental Rocketry
2 * Author: Nicolò Caruso
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22
23#include "DipSwitch.h"
24
25namespace Boardcore
26{
27
29{
30 uint8_t read = 0;
31
32 // Write to the shift register (CS == Not LD)
33 sh.low();
34 miosix::delayUs(microSecClk);
35 clk.high();
36 miosix::delayUs(microSecClk);
37 sh.high();
38 miosix::delayUs(microSecClk);
39
40 // Read the 8 values set on dipswitch
41
42 read |= readBit();
43 read |= readBit() << 1;
44 read |= readBit() << 2;
45 read |= readBit() << 3;
46 read |= readBit() << 4;
47 read |= readBit() << 5;
48 read |= readBit() << 6;
49 read |= readBit() << 7;
50
51 return read;
52}
53
54uint8_t DipSwitch::readBit()
55{
56 uint8_t bit;
57 clk.high();
58 miosix::delayUs(microSecClk);
59 bit = qh.value();
60 miosix::delayUs(microSecClk);
61 clk.low();
62 miosix::delayUs(microSecClk);
63 return bit;
64}
65} // namespace Boardcore
uint8_t read()
Performs a read of the dipSwitch.
Definition DipSwitch.cpp:28
This file includes all the types the logdecoder script will decode.