WConstants
Dependents: ZZ_SSL_Main_L476 Sample_program_Font72
WConstants.h
- Committer:
- Allar
- Date:
- 2017-06-01
- Revision:
- 0:35d94fa8cf10
File content as of revision 0:35d94fa8cf10:
/* $Id: WConstants.h 1156 2011-06-07 04:01:16Z bhagman $
||
|| @author Hernando Barragan <b@wiring.org.co>
|| @url http://wiring.org.co/
|| @contribution Brett Hagman <bhagman@wiring.org.co>
|| @contribution Alexander Brevig <abrevig@wiring.org.co>
||
|| @description
|| | Main constant and macro definitions for Wiring.
|| |
|| | Wiring Common API
|| #
||
|| @license Please see cores/Common/License.txt.
||
*/
#ifndef WCONSTANTS_H
#define WCONSTANTS_H
#include <stdint.h>
// Wiring API version for libraries
// this is passed in at compile-time
#ifndef WIRING
#define WIRING 101
#endif
// passed in at compile-time
#ifndef F_CPU
//#define F_CPU 16000000L
//#warning "F_CPU was not defined. Default to 16 MHz."
#endif
/*************************************************************
* Constants
*************************************************************/
#define LOW 0x0
#define HIGH 0x1
//#define HIGH 0xFF
#define INPUT 0x0
#define OUTPUT 0x1
//#define OUTPUT 0xFF
#define CHANGE 1
#define FALLING 2
#define RISING 3
#define LSBFIRST 0x0
#define MSBFIRST 0x1
#define true 0x1
#define false 0x0
#define TRUE 0x1
#define FALSE 0x0
#define null NULL
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
#define PI (3.1415926535897932384626433832795)
#define TWO_PI (6.283185307179586476925286766559)
#define HALF_PI (1.5707963267948966192313216916398)
#define EPSILON (0.0001)
#define DEG_TO_RAD (0.017453292519943295769236907684886)
#define RAD_TO_DEG (57.295779513082320876798154814105)
/*************************************************************
* Digital Constants
*************************************************************/
#define PORT0 0
#define PORT1 1
#define PORT2 2
#define PORT3 3
#define PORT4 4
#define PORT5 5
#define PORT6 6
#define PORT7 7
#define PORT8 8
#define PORT9 9
/*************************************************************
* Useful macros
*************************************************************/
/*#define int(x) ((int)(x))
#define char(x) ((char)(x))
#define long(x) ((long)(x))
#define byte(x) ((uint8_t)(x))
#define float(x) ((float)(x))
#define boolean(x) ((uint8_t)((x)==0?false:true))
*/
#define word(...) makeWord(__VA_ARGS__)
#define sq(x) ((x)*(x))
//#define abs(x) ((x)>0?(x):-(x))
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
//#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
#define radians(deg) ((deg)*DEG_TO_RAD)
#define degrees(rad) ((rad)*RAD_TO_DEG)
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
#define bit(x) (1UL<<(x))
#define setBits(x, y) ((x)|=(y))
#define clearBits(x, y) ((x)&=(~(y)))
//#define setBit(x, y) setBits((x), (bit((y))))
//#define clearBit(x, y) clearBits((x), (bit((y))))
#define bitsSet(x,y) (((x) & (y)) == (y))
#define bitsClear(x,y) (((x) & (y)) == 0)
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
#define lowByte(x) ((uint8_t) ((x) & 0x00ff))
#define highByte(x) ((uint8_t) ((x)>>8))
#define clockCyclesPerMicrosecond() (F_CPU / 1000000L)
#define clockCyclesToMicroseconds(a) ((a) / clockCyclesPerMicrosecond())
#define microsecondsToClockCycles(a) ((a) * clockCyclesPerMicrosecond())
/*************************************************************
* Typedefs
*************************************************************/
typedef unsigned int word;
typedef uint8_t byte;
typedef uint8_t boolean;
typedef void (*voidFuncPtr)(void);
#endif
// WCONSTANTS_H