From da34d97efb21719b2b332f8c60b2750d11bcde1f Mon Sep 17 00:00:00 2001 From: Otto Mattik Date: Thu, 8 Jul 2021 18:10:55 +0200 Subject: git: update to v1.0 --- armen.h | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 armen.h (limited to 'armen.h') diff --git a/armen.h b/armen.h new file mode 100644 index 0000000..404d05a --- /dev/null +++ b/armen.h @@ -0,0 +1,197 @@ +/************************************************************************/ +/* */ +/* - armen a tiny operating system - */ +/* */ +/* File: armen.h */ +/* Description: armen api */ +/* Version: 1.0 */ +/* Author: Otto Mattik */ +/* */ +/* (C)Copyright Otto Mattik 2014-2021. */ +/* */ +/* This file is a part of 'armen' (a tiny operating system). */ +/* 'armen" is distributed under the CeCILL-V2.1 licence. For more */ +/* details about this licence, please visit the website cecill.info */ +/* */ +/************************************************************************/ + +#ifndef _ARMEN_H_ +#define _ARMEN_H_ + +#include + +#define FALSE 0 +#define TRUE 1 + +/* + * events +*/ +#define EVENT_UART0 0x0001 +#define EVENT_UART1 0x0002 +#define EVENT_UART2 0x0004 +#define EVENT_UART3 0x0008 +#define EVENT_TIMER1 0x0010 +#define EVENT_TIMER2 0x0020 +#define EVENT_INT0 0x0040 +#define EVENT_INT1 0x0080 +#define EVENT_INT2 0x0100 +#define EVENT_PCINT0 0x0200 +#define EVENT_PCINT1 0x0400 +#define EVENT_PCINT2 0x0800 +#define EVENT_USER 0x2000 + +#define EVENT_PCINT EVENT_PCINT0 + +/* + * gpio +*/ +#define GPIO_INPUT 0 +#define GPIO_OUTPUT 1 + +#define GPIO_LOW 0 +#define GPIO_HIGH 1 + +#define GPIO0 0 +#define GPIO1 1 +#define GPIO2 2 +#define GPIO3 3 +#define GPIO4 4 +#define GPIO5 5 +#define GPIO6 6 +#define GPIO7 7 +#define GPIO8 8 +#define GPIO9 9 +#define GPIO10 10 +#define GPIO11 11 +#define GPIO12 12 +#define GPIO13 13 +#define GPIO14 14 +#define GPIO15 15 +#define GPIO16 16 +#define GPIO17 17 +#define GPIO18 18 +#define GPIO19 19 +#define GPIO20 20 +#define GPIO21 21 +#define GPIO22 22 +#define GPIO23 23 + +/* + * uart features +*/ +#if defined(UART) && (UART != 0) + #define B1200 0 + #define B2400 1 + #define B4800 2 + #define B9600 3 + #define B19200 4 + #define B38400 5 + #define B57600 6 + #define B115200 7 + #define BAUDRATE 7 + #define ECHOO 8 /* echo on output */ +#endif + +/* + * analog conversion +*/ +#ifdef USE_ADC + #define ADC_REF_VCC 0 + #define ADC_REF_EXT 1 + #define ADC_REF_INT1V1 2 + #define ADC_REF_INT2V2 3 + #define ADC_REF_INT2V56 3 + #define ADC_REF_INT4V096 4 +#endif + +/* + * pulse witdth modulation +*/ +#ifdef USE_PWM + #define PWM_SCALE_1 1 + #define PWM_SCALE_8 2 + #define PWM_SCALE_64 3 + #define PWM_SCALE_256 4 + #define PWM_SCALE_1024 5 +#endif + +/* + * pin change interruptions +*/ +#ifdef USE_PCINT + #define INT_LOW 0 + #define INT_CHANGE 1 + #define INT_RISING 2 + #define INT_FALLING 3 + #define INT_DISABLE 4 +#endif + +typedef int8_t thread_t; +typedef uint32_t sem_t; +#ifdef USE_BIG_TIMER +typedef uint32_t timer_t; +#else +typedef uint16_t timer_t; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern void armen_start( void ); + +extern uint16_t wait_event( uint16_t events ); +extern void send_user_event( void ); +extern timer_t get_timer( uint8_t timer ); +extern int8_t set_timer( uint8_t timer, timer_t msecs ); +extern void sleep( timer_t msecs ); +extern void delay( uint16_t usecs ); +extern uint32_t get_time( void ); + +extern thread_t thread_self( void ); +extern thread_t thread_create( void* (*start)(void*), void* arg ); +extern void thread_exit( void* retval ); +#ifdef USE_FULL_THREAD +extern void thread_cancel( thread_t thread ); +extern void thread_join( thread_t thread, void** retval ); +extern uint8_t thread_nice( thread_t thread, uint8_t priority ); +#endif + +extern uint8_t test_and_set( void* lock ); +#ifdef USE_SEM +extern void sem_init( sem_t* sem, uint8_t value ); +extern void sem_wait( sem_t* sem ); +extern void sem_post( sem_t* sem ); +#endif + +extern void gpio_pin_mode( uint8_t gpio, uint8_t mode, ... ); +extern int8_t gpio_pin_get( uint8_t gpio ); +extern void gpio_pin_set( uint8_t gpio, uint8_t value ); +#ifdef USE_ADC +extern void gpio_adc_ref( uint8_t ref ); +extern int16_t gpio_adc_get( uint8_t gpio ); +#endif +#ifdef USE_PWM +extern void gpio_pwm_freq( uint8_t scale ); +extern void gpio_pwm_set( uint8_t gpio, uint8_t percent ); +#endif +#ifdef USE_PCINT +extern void gpio_int_enable( uint8_t interrupt, uint8_t mode ); +extern void gpio_pcint_enable( uint8_t gpio, uint8_t enable ); +#endif + +#if defined(UART) && (UART != 0) +extern int8_t uart_open( uint8_t device, uint8_t config ); +extern int8_t uart_close( uint8_t device ); +extern int8_t uart_read( uint8_t device, uint8_t* byte ); +extern int8_t uart_write( uint8_t device, uint8_t byte ); +extern char uart_getchar( uint8_t device ); +extern void uart_putchar( uint8_t device, char c ); +extern void uart_putstr( uint8_t device, char* s ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif -- cgit v1.2.1