hadif azli / Mbed 2 deprecated TEST123

Dependencies:   mbed Blynk

Committer:
lixianyu
Date:
Fri Jun 10 15:20:20 2016 +0000
Revision:
0:d8f4c441e032
u8glib???????????i2c???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 0:d8f4c441e032 1 /*
lixianyu 0:d8f4c441e032 2
lixianyu 0:d8f4c441e032 3 u8g_com_io.c
lixianyu 0:d8f4c441e032 4
lixianyu 0:d8f4c441e032 5 abstraction layer for low level i/o
lixianyu 0:d8f4c441e032 6
lixianyu 0:d8f4c441e032 7 Universal 8bit Graphics Library
lixianyu 0:d8f4c441e032 8
lixianyu 0:d8f4c441e032 9 Copyright (c) 2012, olikraus@gmail.com
lixianyu 0:d8f4c441e032 10 All rights reserved.
lixianyu 0:d8f4c441e032 11
lixianyu 0:d8f4c441e032 12 Redistribution and use in source and binary forms, with or without modification,
lixianyu 0:d8f4c441e032 13 are permitted provided that the following conditions are met:
lixianyu 0:d8f4c441e032 14
lixianyu 0:d8f4c441e032 15 * Redistributions of source code must retain the above copyright notice, this list
lixianyu 0:d8f4c441e032 16 of conditions and the following disclaimer.
lixianyu 0:d8f4c441e032 17
lixianyu 0:d8f4c441e032 18 * Redistributions in binary form must reproduce the above copyright notice, this
lixianyu 0:d8f4c441e032 19 list of conditions and the following disclaimer in the documentation and/or other
lixianyu 0:d8f4c441e032 20 materials provided with the distribution.
lixianyu 0:d8f4c441e032 21
lixianyu 0:d8f4c441e032 22 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
lixianyu 0:d8f4c441e032 23 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
lixianyu 0:d8f4c441e032 24 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
lixianyu 0:d8f4c441e032 25 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lixianyu 0:d8f4c441e032 26 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
lixianyu 0:d8f4c441e032 27 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
lixianyu 0:d8f4c441e032 28 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
lixianyu 0:d8f4c441e032 29 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
lixianyu 0:d8f4c441e032 30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lixianyu 0:d8f4c441e032 31 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
lixianyu 0:d8f4c441e032 32 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
lixianyu 0:d8f4c441e032 33 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
lixianyu 0:d8f4c441e032 34 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lixianyu 0:d8f4c441e032 35
lixianyu 0:d8f4c441e032 36 Update for ATOMIC operation done (01 Jun 2013)
lixianyu 0:d8f4c441e032 37 U8G_ATOMIC_OR(ptr, val)
lixianyu 0:d8f4c441e032 38 U8G_ATOMIC_AND(ptr, val)
lixianyu 0:d8f4c441e032 39 U8G_ATOMIC_START();
lixianyu 0:d8f4c441e032 40 U8G_ATOMIC_END();
lixianyu 0:d8f4c441e032 41
lixianyu 0:d8f4c441e032 42 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) Convert to internal number: AVR: port*8+bitpos, ARM: port*16+bitpos
lixianyu 0:d8f4c441e032 43 void u8g_SetPinOutput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 44 void u8g_SetPinInput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 45 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level)
lixianyu 0:d8f4c441e032 46 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 47
lixianyu 0:d8f4c441e032 48
lixianyu 0:d8f4c441e032 49 */
lixianyu 0:d8f4c441e032 50
lixianyu 0:d8f4c441e032 51 #include "u8g.h"
lixianyu 0:d8f4c441e032 52
lixianyu 0:d8f4c441e032 53 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 54
lixianyu 0:d8f4c441e032 55 #include <avr/interrupt.h>
lixianyu 0:d8f4c441e032 56 #include <avr/io.h>
lixianyu 0:d8f4c441e032 57
lixianyu 0:d8f4c441e032 58 typedef volatile uint8_t * IO_PTR;
lixianyu 0:d8f4c441e032 59
lixianyu 0:d8f4c441e032 60 /* create internal pin number */
lixianyu 0:d8f4c441e032 61 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos)
lixianyu 0:d8f4c441e032 62 {
lixianyu 0:d8f4c441e032 63 port <<= 3;
lixianyu 0:d8f4c441e032 64 port += bitpos;
lixianyu 0:d8f4c441e032 65 return port;
lixianyu 0:d8f4c441e032 66 }
lixianyu 0:d8f4c441e032 67
lixianyu 0:d8f4c441e032 68 const IO_PTR u8g_avr_ddr_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 69 #ifdef DDRA
lixianyu 0:d8f4c441e032 70 &DDRA,
lixianyu 0:d8f4c441e032 71 #else
lixianyu 0:d8f4c441e032 72 0,
lixianyu 0:d8f4c441e032 73 #endif
lixianyu 0:d8f4c441e032 74 &DDRB,
lixianyu 0:d8f4c441e032 75 #ifdef DDRC
lixianyu 0:d8f4c441e032 76 &DDRC,
lixianyu 0:d8f4c441e032 77 #ifdef DDRD
lixianyu 0:d8f4c441e032 78 &DDRD,
lixianyu 0:d8f4c441e032 79 #ifdef DDRE
lixianyu 0:d8f4c441e032 80 &DDRE,
lixianyu 0:d8f4c441e032 81 #ifdef DDRF
lixianyu 0:d8f4c441e032 82 &DDRF,
lixianyu 0:d8f4c441e032 83 #ifdef DDRG
lixianyu 0:d8f4c441e032 84 &DDRG,
lixianyu 0:d8f4c441e032 85 #ifdef DDRH
lixianyu 0:d8f4c441e032 86 &DDRH,
lixianyu 0:d8f4c441e032 87 #endif
lixianyu 0:d8f4c441e032 88 #endif
lixianyu 0:d8f4c441e032 89 #endif
lixianyu 0:d8f4c441e032 90 #endif
lixianyu 0:d8f4c441e032 91 #endif
lixianyu 0:d8f4c441e032 92 #endif
lixianyu 0:d8f4c441e032 93 };
lixianyu 0:d8f4c441e032 94
lixianyu 0:d8f4c441e032 95
lixianyu 0:d8f4c441e032 96 const IO_PTR u8g_avr_port_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 97 #ifdef PORTA
lixianyu 0:d8f4c441e032 98 &PORTA,
lixianyu 0:d8f4c441e032 99 #else
lixianyu 0:d8f4c441e032 100 0,
lixianyu 0:d8f4c441e032 101 #endif
lixianyu 0:d8f4c441e032 102 &PORTB,
lixianyu 0:d8f4c441e032 103 #ifdef PORTC
lixianyu 0:d8f4c441e032 104 &PORTC,
lixianyu 0:d8f4c441e032 105 #ifdef PORTD
lixianyu 0:d8f4c441e032 106 &PORTD,
lixianyu 0:d8f4c441e032 107 #ifdef PORTE
lixianyu 0:d8f4c441e032 108 &PORTE,
lixianyu 0:d8f4c441e032 109 #ifdef PORTF
lixianyu 0:d8f4c441e032 110 &PORTF,
lixianyu 0:d8f4c441e032 111 #ifdef PORTG
lixianyu 0:d8f4c441e032 112 &PORTG,
lixianyu 0:d8f4c441e032 113 #ifdef PORTH
lixianyu 0:d8f4c441e032 114 &PORTH,
lixianyu 0:d8f4c441e032 115 #endif
lixianyu 0:d8f4c441e032 116 #endif
lixianyu 0:d8f4c441e032 117 #endif
lixianyu 0:d8f4c441e032 118 #endif
lixianyu 0:d8f4c441e032 119 #endif
lixianyu 0:d8f4c441e032 120 #endif
lixianyu 0:d8f4c441e032 121 };
lixianyu 0:d8f4c441e032 122
lixianyu 0:d8f4c441e032 123 const IO_PTR u8g_avr_pin_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 124 #ifdef PINA
lixianyu 0:d8f4c441e032 125 &PINA,
lixianyu 0:d8f4c441e032 126 #else
lixianyu 0:d8f4c441e032 127 0,
lixianyu 0:d8f4c441e032 128 #endif
lixianyu 0:d8f4c441e032 129 &PINB,
lixianyu 0:d8f4c441e032 130 #ifdef PINC
lixianyu 0:d8f4c441e032 131 &PINC,
lixianyu 0:d8f4c441e032 132 #ifdef PIND
lixianyu 0:d8f4c441e032 133 &PIND,
lixianyu 0:d8f4c441e032 134 #ifdef PINE
lixianyu 0:d8f4c441e032 135 &PINE,
lixianyu 0:d8f4c441e032 136 #ifdef PINF
lixianyu 0:d8f4c441e032 137 &PINF,
lixianyu 0:d8f4c441e032 138 #ifdef PING
lixianyu 0:d8f4c441e032 139 &PING,
lixianyu 0:d8f4c441e032 140 #ifdef PINH
lixianyu 0:d8f4c441e032 141 &PINH,
lixianyu 0:d8f4c441e032 142 #endif
lixianyu 0:d8f4c441e032 143 #endif
lixianyu 0:d8f4c441e032 144 #endif
lixianyu 0:d8f4c441e032 145 #endif
lixianyu 0:d8f4c441e032 146 #endif
lixianyu 0:d8f4c441e032 147 #endif
lixianyu 0:d8f4c441e032 148 };
lixianyu 0:d8f4c441e032 149
lixianyu 0:d8f4c441e032 150 static volatile uint8_t *u8g_get_avr_io_ptr(const IO_PTR *base, uint8_t offset)
lixianyu 0:d8f4c441e032 151 {
lixianyu 0:d8f4c441e032 152 volatile uint8_t * tmp;
lixianyu 0:d8f4c441e032 153 base += offset;
lixianyu 0:d8f4c441e032 154 memcpy_P(&tmp, base, sizeof(volatile uint8_t * PROGMEM));
lixianyu 0:d8f4c441e032 155 return tmp;
lixianyu 0:d8f4c441e032 156 }
lixianyu 0:d8f4c441e032 157
lixianyu 0:d8f4c441e032 158 /* set direction to output of the specified pin (internal pin number) */
lixianyu 0:d8f4c441e032 159 void u8g_SetPinOutput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 160 {
lixianyu 0:d8f4c441e032 161 *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) |= _BV(internal_pin_number&7);
lixianyu 0:d8f4c441e032 162 }
lixianyu 0:d8f4c441e032 163
lixianyu 0:d8f4c441e032 164 void u8g_SetPinInput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 165 {
lixianyu 0:d8f4c441e032 166 *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) &= ~_BV(internal_pin_number&7);
lixianyu 0:d8f4c441e032 167 }
lixianyu 0:d8f4c441e032 168
lixianyu 0:d8f4c441e032 169 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level)
lixianyu 0:d8f4c441e032 170 {
lixianyu 0:d8f4c441e032 171 volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_port_P, internal_pin_number>>3);
lixianyu 0:d8f4c441e032 172
lixianyu 0:d8f4c441e032 173 if ( level == 0 )
lixianyu 0:d8f4c441e032 174 {
lixianyu 0:d8f4c441e032 175 U8G_ATOMIC_AND(tmp, ~_BV(internal_pin_number&7));
lixianyu 0:d8f4c441e032 176 // *tmp &= ~_BV(internal_pin_number&7);
lixianyu 0:d8f4c441e032 177 }
lixianyu 0:d8f4c441e032 178 else
lixianyu 0:d8f4c441e032 179 {
lixianyu 0:d8f4c441e032 180 U8G_ATOMIC_OR(tmp, _BV(internal_pin_number&7));
lixianyu 0:d8f4c441e032 181 //*tmp |= _BV(internal_pin_number&7);
lixianyu 0:d8f4c441e032 182 }
lixianyu 0:d8f4c441e032 183
lixianyu 0:d8f4c441e032 184 }
lixianyu 0:d8f4c441e032 185
lixianyu 0:d8f4c441e032 186 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 187 {
lixianyu 0:d8f4c441e032 188 volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_pin_P, internal_pin_number>>3);
lixianyu 0:d8f4c441e032 189 if ( ((*tmp) & _BV(internal_pin_number&7)) != 0 )
lixianyu 0:d8f4c441e032 190 return 1;
lixianyu 0:d8f4c441e032 191 return 0;
lixianyu 0:d8f4c441e032 192 }
lixianyu 0:d8f4c441e032 193
lixianyu 0:d8f4c441e032 194 #elif defined (__MSP430__)
lixianyu 0:d8f4c441e032 195 #include <msp430.h>
lixianyu 0:d8f4c441e032 196
lixianyu 0:d8f4c441e032 197 typedef volatile uint8_t * IO_PTR;
lixianyu 0:d8f4c441e032 198
lixianyu 0:d8f4c441e032 199 // MSP430 F5XXX / F6XXX series.
lixianyu 0:d8f4c441e032 200 const IO_PTR u8g_msp_ddr_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 201 &P1DIR
lixianyu 0:d8f4c441e032 202 ,&P2DIR
lixianyu 0:d8f4c441e032 203 ,&P3DIR
lixianyu 0:d8f4c441e032 204 ,&P4DIR
lixianyu 0:d8f4c441e032 205 ,&P5DIR
lixianyu 0:d8f4c441e032 206 ,&P6DIR
lixianyu 0:d8f4c441e032 207 ,&P7DIR
lixianyu 0:d8f4c441e032 208 ,&P8DIR
lixianyu 0:d8f4c441e032 209 #if defined (__MSP430_HAS_PORT9_R__)
lixianyu 0:d8f4c441e032 210 ,&P9DIR
lixianyu 0:d8f4c441e032 211 #if defined (__MSP430_HAS_PORT10_R__)
lixianyu 0:d8f4c441e032 212 ,&P10DIR
lixianyu 0:d8f4c441e032 213 #endif
lixianyu 0:d8f4c441e032 214 #endif
lixianyu 0:d8f4c441e032 215 };
lixianyu 0:d8f4c441e032 216
lixianyu 0:d8f4c441e032 217 const IO_PTR u8g_msp_port_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 218 &P1OUT
lixianyu 0:d8f4c441e032 219 ,&P2OUT
lixianyu 0:d8f4c441e032 220 ,&P3OUT
lixianyu 0:d8f4c441e032 221 ,&P4OUT
lixianyu 0:d8f4c441e032 222 ,&P5OUT
lixianyu 0:d8f4c441e032 223 ,&P6OUT
lixianyu 0:d8f4c441e032 224 ,&P7OUT
lixianyu 0:d8f4c441e032 225 ,&P8OUT
lixianyu 0:d8f4c441e032 226 #if defined (__MSP430_HAS_PORT9_R__)
lixianyu 0:d8f4c441e032 227 ,&P9OUT
lixianyu 0:d8f4c441e032 228 #if defined (__MSP430_HAS_PORT10_R__)
lixianyu 0:d8f4c441e032 229 ,&P10OUT
lixianyu 0:d8f4c441e032 230 #endif
lixianyu 0:d8f4c441e032 231 #endif
lixianyu 0:d8f4c441e032 232 };
lixianyu 0:d8f4c441e032 233
lixianyu 0:d8f4c441e032 234 const IO_PTR u8g_msp_pin_P[] PROGMEM = {
lixianyu 0:d8f4c441e032 235 &P1IN
lixianyu 0:d8f4c441e032 236 ,&P2IN
lixianyu 0:d8f4c441e032 237 ,&P3IN
lixianyu 0:d8f4c441e032 238 ,&P4IN
lixianyu 0:d8f4c441e032 239 ,&P5IN
lixianyu 0:d8f4c441e032 240 ,&P6IN
lixianyu 0:d8f4c441e032 241 ,&P7IN
lixianyu 0:d8f4c441e032 242 ,&P8IN
lixianyu 0:d8f4c441e032 243 #if defined (__MSP430_HAS_PORT9_R__)
lixianyu 0:d8f4c441e032 244 ,&P9IN
lixianyu 0:d8f4c441e032 245 #if defined (__MSP430_HAS_PORT10_R__)
lixianyu 0:d8f4c441e032 246 ,&P10IN
lixianyu 0:d8f4c441e032 247 #endif
lixianyu 0:d8f4c441e032 248 #endif
lixianyu 0:d8f4c441e032 249 };
lixianyu 0:d8f4c441e032 250
lixianyu 0:d8f4c441e032 251 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos)
lixianyu 0:d8f4c441e032 252 {
lixianyu 0:d8f4c441e032 253 port <<= 3;
lixianyu 0:d8f4c441e032 254 port += bitpos;
lixianyu 0:d8f4c441e032 255 return port;
lixianyu 0:d8f4c441e032 256 }
lixianyu 0:d8f4c441e032 257
lixianyu 0:d8f4c441e032 258 void u8g_SetPinOutput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 259 {
lixianyu 0:d8f4c441e032 260 uint8_t port = (internal_pin_number >> 3)-1;
lixianyu 0:d8f4c441e032 261 uint8_t output = 1 << (internal_pin_number & 0x07);
lixianyu 0:d8f4c441e032 262 *u8g_msp_ddr_P[port] |= output;
lixianyu 0:d8f4c441e032 263 }
lixianyu 0:d8f4c441e032 264
lixianyu 0:d8f4c441e032 265 void u8g_SetPinInput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 266 {
lixianyu 0:d8f4c441e032 267 uint8_t port = (internal_pin_number >> 3)-1;
lixianyu 0:d8f4c441e032 268 *u8g_msp_ddr_P[port] &= ~(1 << (internal_pin_number & 0x07));
lixianyu 0:d8f4c441e032 269 }
lixianyu 0:d8f4c441e032 270
lixianyu 0:d8f4c441e032 271 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level)
lixianyu 0:d8f4c441e032 272 {
lixianyu 0:d8f4c441e032 273 uint8_t port = (internal_pin_number >> 3)-1;
lixianyu 0:d8f4c441e032 274 if (level == 0)
lixianyu 0:d8f4c441e032 275 {
lixianyu 0:d8f4c441e032 276 *u8g_msp_port_P[port] &= ~(1 << (internal_pin_number & 0x07));
lixianyu 0:d8f4c441e032 277 }
lixianyu 0:d8f4c441e032 278 else
lixianyu 0:d8f4c441e032 279 {
lixianyu 0:d8f4c441e032 280 *u8g_msp_port_P[port]|= (1 << (internal_pin_number & 0x07));
lixianyu 0:d8f4c441e032 281 }
lixianyu 0:d8f4c441e032 282 }
lixianyu 0:d8f4c441e032 283
lixianyu 0:d8f4c441e032 284 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 285 {
lixianyu 0:d8f4c441e032 286 uint8_t port = (internal_pin_number >> 3)-1;
lixianyu 0:d8f4c441e032 287 uint8_t tmp = *u8g_msp_pin_P[port];
lixianyu 0:d8f4c441e032 288 if (tmp & (1 << (internal_pin_number & 0x07)))
lixianyu 0:d8f4c441e032 289 {
lixianyu 0:d8f4c441e032 290 return 1;
lixianyu 0:d8f4c441e032 291 }
lixianyu 0:d8f4c441e032 292 return 0;
lixianyu 0:d8f4c441e032 293 }
lixianyu 0:d8f4c441e032 294
lixianyu 0:d8f4c441e032 295 #elif defined(U8G_RASPBERRY_PI)
lixianyu 0:d8f4c441e032 296
lixianyu 0:d8f4c441e032 297 #include <wiringPi.h>
lixianyu 0:d8f4c441e032 298 //#include "/usr/local/include/wiringPi.h"
lixianyu 0:d8f4c441e032 299
lixianyu 0:d8f4c441e032 300 void u8g_SetPinOutput(uint8_t internal_pin_number) {
lixianyu 0:d8f4c441e032 301 pinMode(internal_pin_number, OUTPUT);
lixianyu 0:d8f4c441e032 302 }
lixianyu 0:d8f4c441e032 303
lixianyu 0:d8f4c441e032 304 void u8g_SetPinInput(uint8_t internal_pin_number) {
lixianyu 0:d8f4c441e032 305 pinMode(internal_pin_number, INPUT);
lixianyu 0:d8f4c441e032 306 }
lixianyu 0:d8f4c441e032 307
lixianyu 0:d8f4c441e032 308 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) {
lixianyu 0:d8f4c441e032 309 digitalWrite(internal_pin_number, level);
lixianyu 0:d8f4c441e032 310 }
lixianyu 0:d8f4c441e032 311
lixianyu 0:d8f4c441e032 312 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) {
lixianyu 0:d8f4c441e032 313 return digitalRead(internal_pin_number);
lixianyu 0:d8f4c441e032 314 }
lixianyu 0:d8f4c441e032 315
lixianyu 0:d8f4c441e032 316
lixianyu 0:d8f4c441e032 317 #else
lixianyu 0:d8f4c441e032 318
lixianyu 0:d8f4c441e032 319 /* convert "port" and "bitpos" to internal pin number */
lixianyu 0:d8f4c441e032 320 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos)
lixianyu 0:d8f4c441e032 321 {
lixianyu 0:d8f4c441e032 322 port <<= 3;
lixianyu 0:d8f4c441e032 323 port += bitpos;
lixianyu 0:d8f4c441e032 324 return port;
lixianyu 0:d8f4c441e032 325 }
lixianyu 0:d8f4c441e032 326
lixianyu 0:d8f4c441e032 327 void u8g_SetPinOutput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 328 {
lixianyu 0:d8f4c441e032 329 }
lixianyu 0:d8f4c441e032 330
lixianyu 0:d8f4c441e032 331 void u8g_SetPinInput(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 332 {
lixianyu 0:d8f4c441e032 333 }
lixianyu 0:d8f4c441e032 334
lixianyu 0:d8f4c441e032 335 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level)
lixianyu 0:d8f4c441e032 336 {
lixianyu 0:d8f4c441e032 337 }
lixianyu 0:d8f4c441e032 338
lixianyu 0:d8f4c441e032 339 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number)
lixianyu 0:d8f4c441e032 340 {
lixianyu 0:d8f4c441e032 341 return 0;
lixianyu 0:d8f4c441e032 342 }
lixianyu 0:d8f4c441e032 343
lixianyu 0:d8f4c441e032 344 #endif
lixianyu 0:d8f4c441e032 345
lixianyu 0:d8f4c441e032 346
lixianyu 0:d8f4c441e032 347 #if defined(U8G_WITH_PINLIST)
lixianyu 0:d8f4c441e032 348
lixianyu 0:d8f4c441e032 349 void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi)
lixianyu 0:d8f4c441e032 350 {
lixianyu 0:d8f4c441e032 351 uint8_t pin;
lixianyu 0:d8f4c441e032 352 pin = u8g->pin_list[pi];
lixianyu 0:d8f4c441e032 353 if ( pin != U8G_PIN_NONE )
lixianyu 0:d8f4c441e032 354 u8g_SetPinOutput(pin);
lixianyu 0:d8f4c441e032 355 }
lixianyu 0:d8f4c441e032 356
lixianyu 0:d8f4c441e032 357 void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level)
lixianyu 0:d8f4c441e032 358 {
lixianyu 0:d8f4c441e032 359 uint8_t pin;
lixianyu 0:d8f4c441e032 360 pin = u8g->pin_list[pi];
lixianyu 0:d8f4c441e032 361 if ( pin != U8G_PIN_NONE )
lixianyu 0:d8f4c441e032 362 u8g_SetPinLevel(pin, level);
lixianyu 0:d8f4c441e032 363 }
lixianyu 0:d8f4c441e032 364
lixianyu 0:d8f4c441e032 365 #else /* defined(U8G_WITH_PINLIST) */
lixianyu 0:d8f4c441e032 366 void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi)
lixianyu 0:d8f4c441e032 367 {
lixianyu 0:d8f4c441e032 368 }
lixianyu 0:d8f4c441e032 369
lixianyu 0:d8f4c441e032 370 void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level)
lixianyu 0:d8f4c441e032 371 {
lixianyu 0:d8f4c441e032 372 }
lixianyu 0:d8f4c441e032 373
lixianyu 0:d8f4c441e032 374 #endif /* defined(U8G_WITH_PINLIST) */
lixianyu 0:d8f4c441e032 375