uC chip interface arduino  0.9.0
A interface for async and neuromrphic IC testing
Loading...
Searching...
No Matches
interface_pin.h
Go to the documentation of this file.
1/*
2 This file is part of the Firmware project to interface with small Async or Neuromorphic chips
3 Copyright (C) 2022-2023 Ole Richter - University of Groningen
4 Copyright (C) 2022 Benjamin Hucko
5
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <https://www.gnu.org/licenses/>.
18*/
19
20#ifndef INTERFACE_PIN_H
21#define INTERFACE_PIN_H
22#include <cstdint>
23#include <Arduino.h>
24#include <chrono>
25#include "core_ring_buffer.h"
26#include "uc_boards.h"
27
28
29
30/*
31 the Pin helper tracks the usage and configuration off all the pins.
32 and changes thier state
33*/
34
35// the usage of pins, to avoid double use
36extern volatile bool input_pin_active[NUMBER_OF_DIGITAL_PINS];
37extern volatile bool output_pin_active[NUMBER_OF_DIGITAL_PINS];
38
39/*
40 register a pin as input, changes the direction of the uC acordingly
41 retuns true if sucessfull, false if pin was previously registered for something else.
42*/
43bool reserve_input_pin(uint8_t id, uint8_t from_instruction = OUT_ERROR_PIN_ALREADY_INUSE);
44
45/*
46 register a pin as output, changes the direction of the uC acordingly
47 retuns true if sucessfull, false if pin was previously registered for something else.
48*/
49bool reserve_output_pin(uint8_t id, uint8_t from_instruction = OUT_ERROR_PIN_ALREADY_INUSE);
50
51/*
52 processes all pin related configuration instructions, exspects a PIN_CONF package.
53 it registers recording interrups for input pins, and registeres pin usage.
54*/
55void configure_pin(uint8_t instruction, uint8_t data);
56
57/*
58 checks if the pin is a valid output pin and sets the pin to that value.
59 it can also write output pins that are defind by other interfaces like SPI or AER
60*/
61void set_pin(uint8_t id, uint32_t data);
62
63/*
64 checks if the pin is a valid input or output pin and read the pin to that value.
65 it can also read output pins that are defind by other interfaces like SPI or AER
66*/
67void read_pin(uint8_t id);
68
69void debug_pin(uint8_t id, uint8_t value = HIGH);
70
71void pin_ISR(uint8_t id);
72void pin_ISR0();
73void pin_ISR1();
74void pin_ISR2();
75void pin_ISR3();
76void pin_ISR4();
77void pin_ISR5();
78void pin_ISR6();
79void pin_ISR7();
80void pin_ISR8();
81void pin_ISR9();
82void pin_ISR10();
83void pin_ISR11();
84void pin_ISR12();
85void pin_ISR13();
86void pin_ISR14();
87void pin_ISR15();
88void pin_ISR16();
89void pin_ISR17();
90void pin_ISR18();
91void pin_ISR19();
92void pin_ISR20();
93void pin_ISR21();
94void pin_ISR22();
95void pin_ISR23();
96void pin_ISR24();
97void pin_ISR25();
98void pin_ISR26();
99void pin_ISR27();
100void pin_ISR28();
101void pin_ISR29();
102void pin_ISR30();
103void pin_ISR31();
104void pin_ISR32();
105void pin_ISR33();
106void pin_ISR34();
107void pin_ISR35();
108void pin_ISR36();
109void pin_ISR37();
110void pin_ISR38();
111void pin_ISR39();
112void pin_ISR40();
113void pin_ISR41();
114void pin_ISR42();
115void pin_ISR43();
116void pin_ISR44();
117void pin_ISR45();
118void pin_ISR46();
119void pin_ISR47();
120void pin_ISR48();
121void pin_ISR49();
122void pin_ISR50();
123void pin_ISR51();
124void pin_ISR52();
125void pin_ISR53();
126void pin_ISR54();
127
128#endif
@ OUT_ERROR_PIN_ALREADY_INUSE
Definition: datatypes.h:527
void read_pin(uint8_t id)
void pin_ISR49()
void pin_ISR34()
void pin_ISR23()
void pin_ISR43()
void pin_ISR26()
void set_pin(uint8_t id, uint32_t data)
void pin_ISR44()
void pin_ISR35()
void pin_ISR24()
void pin_ISR10()
void configure_pin(uint8_t instruction, uint8_t data)
void pin_ISR17()
void pin_ISR52()
void pin_ISR39()
void pin_ISR33()
volatile bool output_pin_active[NUMBER_OF_DIGITAL_PINS]
void pin_ISR0()
void pin_ISR22()
bool reserve_output_pin(uint8_t id, uint8_t from_instruction=OUT_ERROR_PIN_ALREADY_INUSE)
void pin_ISR45()
void pin_ISR38()
void pin_ISR25()
void pin_ISR54()
void pin_ISR46()
void pin_ISR11()
bool reserve_input_pin(uint8_t id, uint8_t from_instruction=OUT_ERROR_PIN_ALREADY_INUSE)
void pin_ISR48()
void pin_ISR3()
void pin_ISR37()
void pin_ISR19()
void pin_ISR53()
void pin_ISR29()
void pin_ISR13()
void pin_ISR4()
void pin_ISR8()
void pin_ISR42()
void pin_ISR50()
void pin_ISR7()
void pin_ISR36()
void pin_ISR28()
void pin_ISR30()
void pin_ISR16()
void pin_ISR40()
void pin_ISR(uint8_t id)
void pin_ISR5()
void pin_ISR21()
void pin_ISR32()
void pin_ISR9()
void pin_ISR51()
void pin_ISR47()
void pin_ISR2()
void pin_ISR12()
void pin_ISR41()
volatile bool input_pin_active[NUMBER_OF_DIGITAL_PINS]
void pin_ISR31()
void debug_pin(uint8_t id, uint8_t value=HIGH)
void pin_ISR18()
void pin_ISR15()
void pin_ISR1()
void pin_ISR14()
void pin_ISR20()
void pin_ISR27()
void pin_ISR6()
#define NUMBER_OF_DIGITAL_PINS
Definition: uc_boards.h:110