1
0
mirror of synced 2024-11-24 02:04:24 +01:00

Add macro for disabling and enabling internal pullups.

This commit is contained in:
Mika Tuupola 2011-10-17 22:40:58 +03:00
parent 5eba9dde1c
commit 6b889b0ae5
2 changed files with 18 additions and 33 deletions

View File

@ -32,9 +32,7 @@
void init(void) { void init(void) {
/* Make PORTD2..7 PORTD0..1 (Arduino digital 2..10) input by clearing bits in DDR */ /* Switch inputs. */
//DDRD &= ~(_BV(PORTD2) | _BV(PORTD3) | _BV(PORTD4) | _BV(PORTD5) | _BV(PORTD6) | _BV(PORTD7));
//DDRB &= ~(_BV(PORTB0) | _BV(PORTB1));
pin_mode(2, INPUT); pin_mode(2, INPUT);
pin_mode(3, INPUT); pin_mode(3, INPUT);
pin_mode(4, INPUT); pin_mode(4, INPUT);
@ -49,32 +47,20 @@ void init(void) {
/* when you externally drive that pin to zero(i.e. connect to ground / or pull-down), */ /* when you externally drive that pin to zero(i.e. connect to ground / or pull-down), */
/* only then it will be read as 0. */ /* only then it will be read as 0. */
/* Enable pullups by setting bits in PORT. Default state is now high. */ pin_pullup(2, DISABLE);
PORTD |= (_BV(PORTD2) | _BV(PORTD3) | _BV(PORTD4) | _BV(PORTD5) | _BV(PORTD6) | _BV(PORTD7)); pin_pullup(3, DISABLE);
PORTB |= (_BV(PORTB0) | _BV(PORTB1)); pin_pullup(4, DISABLE);
pin_pullup(5, DISABLE);
pin_pullup(6, DISABLE);
pin_pullup(7, DISABLE);
pin_pullup(8, DISABLE);
pin_pullup(9, DISABLE);
/* Disable pullups by clearing bits in PORT. Default state is now low. */ /* Blinken led. */
/*
PORTD &= ~(_BV(PORTD2) | _BV(PORTD3) | _BV(PORTD4) | _BV(PORTD5) | _BV(PORTD6) | _BV(PORTD7));
PORTB &= ~(_BV(PORTB0) | _BV(PORTB1));
*/
/* Make PORTB5 (Arduino digital 13) an output by setting bit in DDR. */
//DDRB |= _BV(PORTB5);
pin_mode(13, OUTPUT); pin_mode(13, OUTPUT);
} }
/*
int digital_read(int input_register, int pin) {
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
}
void digital_write(int input_register, int pin) {
input_register |= _BV(pin);
}
*/
int main(void) { int main(void) {
init(); init();
@ -83,19 +69,12 @@ int main(void) {
stdin = &uart_input; stdin = &uart_input;
int value; int value;
//char buffer[9];
while (1) { while (1) {
/* Blink led by toggling state of PORTB5 (Arduino digital 13). */ /* Blink led by toggling state of PORTB5 (Arduino digital 13). */
PORTB ^= _BV(PORTB5); PORTB ^= _BV(PORTB5);
/*
puts("PINB");
value = PINB;
itoa(value, buffer, 2);
puts(buffer);
*/
value = digital_read(2); value = digital_read(2);
printf("%d", value); printf("%d", value);

View File

@ -25,7 +25,8 @@
#define INPUT 0x0 #define INPUT 0x0
#define OUTPUT 0x1 #define OUTPUT 0x1
#define ENABLE 0x1
#define DISABLE 0x0
#define ARDUINOPIN_TO_TIMERID(x) TIMER_AT_PIN_##x #define ARDUINOPIN_TO_TIMERID(x) TIMER_AT_PIN_##x
#define ARDUINOPIN_TO_TCCRID(x) TCCR_AT_PIN_##x #define ARDUINOPIN_TO_TCCRID(x) TCCR_AT_PIN_##x
@ -548,9 +549,14 @@
#define D_WRITE_0x1(pin) D_WRITE_HIGH(pin) #define D_WRITE_0x1(pin) D_WRITE_HIGH(pin)
#define D_WRITE_0x0(pin) D_WRITE_LOW(pin) #define D_WRITE_0x0(pin) D_WRITE_LOW(pin)
#define D_WRITE_ENABLE(pin) D_WRITE_HIGH(pin)
#define D_WRITE_DISABLE(pin) D_WRITE_LOW(pin)
#define SET_OUTPUT(pin) EXPAND_WRAPPER(_SET_OUTPUT, ARDUINOPIN_TO_PORTID(pin), ARDUINOPIN_TO_PORTMSK(pin) ) #define SET_OUTPUT(pin) EXPAND_WRAPPER(_SET_OUTPUT, ARDUINOPIN_TO_PORTID(pin), ARDUINOPIN_TO_PORTMSK(pin) )
#define SET_INPUT(pin) EXPAND_WRAPPER(_SET_INTPUT, ARDUINOPIN_TO_PORTID(pin), ARDUINOPIN_TO_PORTMSK(pin) ) #define SET_INPUT(pin) EXPAND_WRAPPER(_SET_INTPUT, ARDUINOPIN_TO_PORTID(pin), ARDUINOPIN_TO_PORTMSK(pin) )
#define pin_mode(pin, mode) SET_##mode(pin) #define pin_mode(pin, mode) SET_##mode(pin)
#define pin_pullup(pin, val) D_WRITE_##val(pin)
#endif /* PINS_H */ #endif /* PINS_H */