reworking the structure
parent
bbab8bdaee
commit
f1a55f7002
@ -0,0 +1,4 @@
|
|||||||
|
.
|
||||||
|
./arch/arm/common/inc
|
||||||
|
./arch/arm/SAM_D2X/hal/inc
|
||||||
|
./conf
|
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef _HAL_SAM_D2X_HPP_
|
||||||
|
#define _HAL_SAM_D2X_HPP_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
@ -1,8 +0,0 @@
|
|||||||
#ifndef _SAMD2X_HPP_
|
|
||||||
#define _SAMD2X_HPP_
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -0,0 +1,60 @@
|
|||||||
|
#ifndef _HDI_SAM_D2X_H_
|
||||||
|
#define _HDI_SAM_D2X_H_
|
||||||
|
#include "hal_arm.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !(defined(__ASSEMBLY__))
|
||||||
|
#ifndef __cplusplus
|
||||||
|
typedef volatile const uint32_t RoReg; // Read only 32-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile const uint16_t RoReg16; // Read only 16-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile const uint8_t RoReg8; // Read only 8-bit register (volatile const unsigned int)
|
||||||
|
#else
|
||||||
|
typedef volatile uint32_t RoReg; // Read only 32-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile uint16_t RoReg16; // Read only 16-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile uint8_t RoReg8; // Read only 8-bit register (volatile const unsigned int)
|
||||||
|
#endif
|
||||||
|
typedef volatile uint32_t WoReg; // Write only 32-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t WoReg16; // Write only 16-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t WoReg8; // Write only 8-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint32_t RwReg; // Write only 32-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t RwReg16; // Write only 16-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint8_t RwReg8; // Write only 8-bit register (volatile unsigned int)
|
||||||
|
#define CAST(type, value) ((type*)(value))
|
||||||
|
#define REG_ACCESS(type, address) (*(type*)(address))
|
||||||
|
#else
|
||||||
|
#define CAST(type, value) (value)
|
||||||
|
#define REG_ACCESS(type, address) (address)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum IRQn
|
||||||
|
{
|
||||||
|
// Cortex-M0+ Processor Exception Numbers
|
||||||
|
NonMaskableInt_IRQn = -14,
|
||||||
|
HardFault_IRQn = -13,
|
||||||
|
SVCall_IRQn = -5,
|
||||||
|
PendSV_IRQn = -2,
|
||||||
|
SysTick_IRQn = -1,
|
||||||
|
// samd21j18a specific interrupt numbers
|
||||||
|
PM_IRQn = 0,
|
||||||
|
SYSCTRL_IRQn = 1,
|
||||||
|
WDT_IRQn = 2,
|
||||||
|
RTC_IRQn = 3,
|
||||||
|
EIC_IRQn = 4,
|
||||||
|
NVMCTRL_IRQn = 5,
|
||||||
|
DMAC_IRQn = 6,
|
||||||
|
USB_IRQn = 7,
|
||||||
|
EVSYS_IRQ = 8,
|
||||||
|
SERCOM0_IRQn = 9,
|
||||||
|
SERCOM1_IRQn = 10,
|
||||||
|
SERCOM2_IRQn = 11,
|
||||||
|
SERCOM3_IRQn = 12,
|
||||||
|
SERCOM4_IRQn = 13,
|
||||||
|
SERCOM5_IRQn = 14
|
||||||
|
}IRQn_Type;
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
@ -0,0 +1,35 @@
|
|||||||
|
#ifndef _HAL_ARM_H_
|
||||||
|
#define _HAL_ARM_H_
|
||||||
|
|
||||||
|
#include "epenguin_conf.h"
|
||||||
|
|
||||||
|
#if !(EP_UARCH == __UARCH_ARM__)
|
||||||
|
#error This shouldn't be included unless arm is the uarch of choice!
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if !(defined(__ASSEMBLY__))
|
||||||
|
#include <stdint.h>
|
||||||
|
#ifndef __cplusplus
|
||||||
|
typedef volatile const uint32_t RoReg; // Read only 32-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile const uint16_t RoReg16; // Read only 16-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile const uint8_t RoReg8; // Read only 8-bit register (volatile const unsigned int)
|
||||||
|
#else
|
||||||
|
typedef volatile uint32_t RoReg; // Read only 32-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile uint16_t RoReg16; // Read only 16-bit register (volatile const unsigned int)
|
||||||
|
typedef volatile uint8_t RoReg8; // Read only 8-bit register (volatile const unsigned int)
|
||||||
|
#endif
|
||||||
|
typedef volatile uint32_t WoReg; // Write only 32-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t WoReg16; // Write only 16-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t WoReg8; // Write only 8-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint32_t RwReg; // Write only 32-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint16_t RwReg16; // Write only 16-bit register (volatile unsigned int)
|
||||||
|
typedef volatile uint8_t RwReg8; // Write only 8-bit register (volatile unsigned int)
|
||||||
|
#define CAST(type, value) ((type*)(value))
|
||||||
|
#define REG_ACCESS(type, address) (*(type*)(address))
|
||||||
|
#else
|
||||||
|
#define CAST(type, value) (value)
|
||||||
|
#define REG_ACCESS(type, address) (address)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -1,7 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
USART_Async x;
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
#ifndef _MCU_H_
|
|
||||||
#define _MCU_H_
|
|
||||||
|
|
||||||
#define MCU_ARCH_ARM (0)
|
|
||||||
#define MCU_ARCH_ARM64 (1)
|
|
||||||
#define MCU_ARCH_AVR (2)
|
|
||||||
|
|
||||||
#define MCU_MANUF_MICROCHIP (0)
|
|
||||||
|
|
||||||
#define MCU_TYPE atsamd2x
|
|
||||||
|
|
||||||
#define MCU_ARCH MCU_ARCH_ARM
|
|
||||||
#define MCU_MANUF MCU_MANUF_MICROCHIP
|
|
||||||
|
|
||||||
|
|
||||||
#if MCU_ARCH == MCU_ARCH_ARM
|
|
||||||
typedef mcu
|
|
||||||
#elif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,31 +0,0 @@
|
|||||||
I2C - Software Addressed Protocol
|
|
||||||
Clocked Protocol
|
|
||||||
Pins: SDA = Serial Data
|
|
||||||
SCL = Serial Clock
|
|
||||||
|
|
||||||
Speeds up to 400Khz, 1 Mhz
|
|
||||||
|
|
||||||
SPI - Serial Protocol Interface
|
|
||||||
Hardware Addressed Protocol
|
|
||||||
Clocked Protocol
|
|
||||||
|
|
||||||
Pins: MOSI (Master Out Slave In)
|
|
||||||
MISO (Master In Slave Out)
|
|
||||||
SCL Serial Clock
|
|
||||||
SS or nCS (Slave Select or not Chip Select)
|
|
||||||
|
|
||||||
Up to 20Mhz
|
|
||||||
|
|
||||||
USART Two Wire, Non Clocked Protocol
|
|
||||||
|
|
||||||
Pins:
|
|
||||||
TX: Transmit
|
|
||||||
RX: Receive
|
|
||||||
|
|
||||||
Baudrate = bits per second (sorta)
|
|
||||||
|
|
||||||
frequency = 100 / 1 time in seconds
|
|
||||||
|
|
||||||
9600
|
|
||||||
115200
|
|
||||||
38400
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifndef _USART_H_
|
|
||||||
#define _USART_H_
|
|
||||||
|
|
||||||
|
|
||||||
class Usart
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Usart();
|
|
||||||
~Usart();
|
|
||||||
|
|
||||||
void Write(const char* arr);
|
|
||||||
void Read(char* arr, int max_len);
|
|
||||||
private:
|
|
||||||
hal_usart _usart;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef _EPENGUIN_HAL_H_
|
||||||
|
#define _EPENGUIN_HAL_H_
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __MCU_H__
|
||||||
|
#define __MCU_H__
|
||||||
|
|
||||||
|
#include "epenguin_conf.h"
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
#ifndef __MCU_H__
|
|
||||||
#define __MCU_H__
|
|
||||||
|
|
||||||
#include "epenguin_conf.h"
|
|
||||||
|
|
||||||
#ifndef EP_UARCH
|
|
||||||
#error You must specify an architecture!
|
|
||||||
#elifndef EP_MCU_FAMILY
|
|
||||||
#error You must specify a mcu family!
|
|
||||||
#elifndef EP_MCU
|
|
||||||
#error You must specify a mcu!
|
|
||||||
#else
|
|
||||||
#if EP_UARCH == __UARCH_ARM__
|
|
||||||
#if EP_MCU_FAMILY == __SAM_D2X__
|
|
||||||
#if EP_MCU == __ATSAMD21J18A__
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
#elif EP_MCU
|
|
||||||
#endif
|
|
||||||
#elif EP_UARCH == __UARCH_ARM64__
|
|
||||||
|
|
||||||
#elif EP_UARCH == __UARCH_AVR__
|
|
||||||
|
|
||||||
#elif EP_UARCH == __UARCH_AVR32__
|
|
||||||
|
|
||||||
#elif EP_UARCH == __UARCH_RISCV__
|
|
||||||
|
|
||||||
#elif EP_UARCH == __UARCH_X86__
|
|
||||||
|
|
||||||
#else
|
|
||||||
#error Selected uarch not found! Try again =(
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue