annotate service/busyboxArduino/LiquidCrystal_V1.2.1/LiquidCrystal/FastIO.h @ 959:d05562532887

add LiquidCrystal_V1.2.1 lib Ignore-this: ddfe8b0c1d6e19f210684520859d5a57 darcs-hash:20150104073516-312f9-919b23acb8a7ff8ee237635640d3cf51ab6f89ad
author drewp <drewp@bigasterisk.com>
date Sat, 03 Jan 2015 23:35:16 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
959
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 // ---------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 // Created by Florian Fida on 20/01/12
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 // Copyright 2012 - Under creative commons license 3.0:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 // Attribution-ShareAlike CC BY-SA
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 // http://creativecommons.org/licenses/by-sa/3.0/
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 // This software is furnished "as is", without technical support, and with no
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 // warranty, express or implied, as to its usefulness for any purpose.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 // ---------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 // fio_shiftOut1 functions are based on Shif1 protocol developed by Roman Black
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 // (http://www.romanblack.com/shift1.htm)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 // Thread Safe: No
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 // Extendable: Yes
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 // @file FastIO.h
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 // This file implements basic fast IO routines.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 // @brief
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 // @version API 1.0.0
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 // @author Florian Fida -
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 // 2012-03-16 bperrybap mods for chipkit32 (pic32) Arduino
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 // support chipkit:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 // (https://github.com/chipKIT32/chipKIT32-MAX/blob/master/hardware/pic32/
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 // cores/pic32/wiring_digital.c)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 // ---------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 #ifndef _FAST_IO_H_
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 #define _FAST_IO_H_
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 #if (ARDUINO < 100)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 #include <WProgram.h>
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 #else
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 #include <Arduino.h>
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 #endif
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 #include <pins_arduino.h> // pleasing sanguino core
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 #include <inttypes.h>
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 #define SKIP 0x23
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 #if defined (__AVR__)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 #include <util/atomic.h> // for critical section management
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 typedef uint8_t fio_bit;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 typedef volatile uint8_t *fio_register;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 #elif defined(__PIC32MX__)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51 typedef uint32_t fio_bit;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 typedef volatile uint32_t *fio_register;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 #else
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 // fallback to Arduino standard digital i/o routines
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 #define FIO_FALLBACK
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 #define ATOMIC_BLOCK(dummy) if(true)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 #define ATOMIC_RESTORESTATE
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60 typedef uint8_t fio_bit;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 typedef uint8_t fio_register;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 #endif
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 #if !defined(FIO_FALLBACK) && !defined(ATOMIC_BLOCK)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 /*
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 * Define an ATOMIC_BLOCK that implements ATOMIC_FORCEON type
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 * Using the portable Arduino interrupts() and noInterrupts()
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 #define ATOMIC_RESTORESTATE ATOMIC_FORCEON // sorry, no support for save/restore yet.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72 #define ATOMIC_FORCEON uint8_t sreg_save \
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 __attribute__((__cleanup__(__iSeiParam))) = 0
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 static __inline__ uint8_t __iCliRetVal(void)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 {
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 noInterrupts();
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78 return(1);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 }
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 static __inline__ void __iSeiParam(const uint8_t *__s)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 {
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 interrupts();
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83 }
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84 #define ATOMIC_BLOCK(type) for(type, __Todo = __iCliRetVal(); __Todo; __Todo = 0)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 #endif // end of block to create compatible ATOMIC_BLOCK()
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 @abstract Get the output register for specified pin.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93 @discussion if fast digital IO is disabled this function returns NULL
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 @param pin[in] Number of a digital pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 @result Register
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97 fio_register fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state = LOW);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 @abstract Get the input register for specified pin.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102 @discussion if fast digital IO is disabled this function returns NULL
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 @param pin[in] Number of a digital pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 @result Register
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106 fio_register fio_pinToInputRegister(uint8_t pin);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 @abstract Find the bit which belongs to specified pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 @discussion if fast digitalWrite is disabled this function returns the pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 @param pin[in] Number of a digital pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 @result Bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 fio_bit fio_pinToBit(uint8_t pin);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119 @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 @abstract direct digital write
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 @discussion without any checks
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122 @discussion falls back to normal digitalWrite if fast io is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123 @param pinRegister[in] Register - ignored if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124 @param pinBit[in] Bit - Pin if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 @param value[in] desired output
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127 // __attribute__ ((always_inline)) /* let the optimizer decide that for now */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128 void fio_digitalWrite ( fio_register pinRegister, fio_bit pinBit, uint8_t value );
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 /**
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131 * This is where the magic happens that makes things fast.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
132 * Implemented as preprocessor directives to force inlining
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133 * SWITCH is fast for FIO but probably slow for FIO_FALLBACK so SWITCHTO is recommended if the value is known.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136 #ifndef FIO_FALLBACK
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137 #define fio_digitalWrite_LOW(reg,bit) *reg &= ~bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 #define fio_digitalWrite_HIGH(reg,bit) *reg |= bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139 #define fio_digitalWrite_SWITCH(reg,bit) *reg ^= bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140 #define fio_digitalWrite_SWITCHTO(reg,bit,val) fio_digitalWrite_SWITCH(reg,bit)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 #else
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 // reg -> dummy NULL, bit -> pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
143 #define fio_digitalWrite_HIGH(reg,bit) digitalWrite(bit,HIGH)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144 #define fio_digitalWrite_LOW(reg,bit) digitalWrite(bit,LOW)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
145 #define fio_digitalWrite_SWITCH(reg,bit) digitalWrite(bit, !digitalRead(bit))
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
146 #define fio_digitalWrite_SWITCHTO(reg,bit,val) digitalWrite(bit,val);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
147 #endif
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
148
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
149 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
150 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
151 @abstract direct digital read
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
152 @discussion without any checks
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
153 @discussion falls back to normal digitalRead if fast io is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
154 @param pinRegister[in] Register - ignored if fast io is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
155 @param pinBit[in] Bit - Pin if fast io is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
156 @result Value read from pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
157 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
158 int fio_digitalRead ( fio_register pinRegister, fio_bit pinBit );
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
159
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
160 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
161 @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
162 @abstract faster shift out
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
163 @discussion using fast digital write
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
164 @discussion falls back to normal digitalWrite if fastio is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
165 @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
166 @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
167 @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
168 @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
169 @param bitOrder[in] bit order
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
170 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
171 void fio_shiftOut( fio_register dataRegister, fio_bit dataBit, fio_register clockRegister,
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
172 fio_bit clockBit, uint8_t value, uint8_t bitOrder );
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
173
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
174 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
175 @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
176 @abstract faster shift out clear
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
177 @discussion using fast digital write
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
178 @discussion falls back to normal digitalWrite if fastio is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
179 @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
180 @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
181 @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
182 @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
183 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
184 void fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
185
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
187 * @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
188 * @abstract one wire shift out
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189 * @discussion protocol needs initialisation (fio_shiftOut1_init)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 * @param shift1Register[in] pins register
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
191 * @param shift1Bit[in] pins bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
192 * @param value[in] value to shift out, last byte is ignored and always shifted out LOW
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
193 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
194 void fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch = false);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
195 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
196 * @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
197 * @abstract one wire shift out
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
198 * @discussion protocol needs initialisation (fio_shiftOut1_init)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
199 * @param pin[in] digital pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
200 * @param value[in] value to shift out, last byte is ignored and always shifted out LOW
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
201 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
202 void fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch = false);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
203 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
204 * @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
205 * @abstract initializes one wire shift out protocol
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
206 * @discussion Puts pin to HIGH state and delays until Capacitors are charged.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
207 * @param shift1Register[in] pins register
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
208 * @param shift1Bit[in] pins bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
209 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
210 void fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
211 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
212 * @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
213 * @abstract initializes one wire shift out protocol
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
214 * @discussion Puts pin to HIGH state and delays until Capacitors are charged.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
215 * @param pin[in] digital pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
216 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
217 void fio_shiftOut1_init(uint8_t pin);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
218
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
219 #endif // FAST_IO_H