periph_cpu.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 HAW Hamburg
3  * 2016 Freie Universität Berlin
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser
6  * General Public License v2.1. See the file LICENSE in the top level
7  * directory for more details.
8  */
9 
21 #ifndef PERIPH_CPU_H
22 #define PERIPH_CPU_H
23 
24 #include "periph_cpu_common.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
34 #define PM_NUM_MODES (5)
35 #define AVR8_PM_SLEEP_MODE_0 SLEEP_MODE_PWR_DOWN
36 #define AVR8_PM_SLEEP_MODE_1 SLEEP_MODE_PWR_SAVE
37 #define AVR8_PM_SLEEP_MODE_2 SLEEP_MODE_STANDBY
38 #define AVR8_PM_SLEEP_MODE_3 SLEEP_MODE_ADC
44 #define GPIO_PIN(x, y) ((x << 4) | y)
45 
49 enum {
50  PORT_B = 1,
51  PORT_C = 2,
52  PORT_D = 3
53 };
54 
60 #define CPU_ATMEGA_EXT_INTS { GPIO_PIN(PORT_D, 2), \
61  GPIO_PIN(PORT_D, 3) }
62 
66 static inline uint8_t atmega_pin2exti(uint8_t port_num, uint8_t pin_num)
67 {
68  (void)port_num;
69  return pin_num - 2;
70 }
71 
75 static inline bool atmega_has_pin_exti(uint8_t port_num, uint8_t pin_num)
76 {
77  if (port_num == PORT_D) {
78  return ((pin_num == 2) || (pin_num == 3));
79  }
80 
81  return false;
82 }
83 
88 #define I2C_PORT_REG PORTC
89 #define I2C_PIN_MASK (1 << PORTC4) | (1 << PORTC5)
96 #define EEPROM_SIZE (1024U) /* 1kB */
99 #ifdef __cplusplus
100 }
101 #endif
102 
103 #include "periph_conf.h"
104 #include "default_timer_config.h"
105 
106 #endif /* PERIPH_CPU_H */
@ PORT_B
port B
Definition: periph_cpu.h:48
@ PORT_C
port C
Definition: periph_cpu.h:49
@ PORT_D
port D
Definition: periph_cpu.h:50
static bool atmega_has_pin_exti(uint8_t port_num, uint8_t pin_num)
Check if the given pin can be used as external interrupt.
Definition: periph_cpu.h:75
static uint8_t atmega_pin2exti(uint8_t port_num, uint8_t pin_num)
Get the interrupt vector number of the given GPIO pin.
Definition: periph_cpu.h:66
Default timer configuration.