| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /*
- * Copyright 2012 by Embedded Technologies s.r.o
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTEON) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * For additional information see http://www.ethernut.de/
- */
- #ifndef _DEV_GPIO_H_
- #error "Do not include this file directly. Use dev/gpio.h instead!"
- #endif
- #include <stdint.h>
- /*
- * GPIO Port Definitions
- */
- #define PORTA 0
- #define PORTB 1
- #define PORTC 2
- #define PORTD 3
- #define PORTE 4
- #define PORTF 5
- #define PORTG 6
- #define PORTH 7
- #define PORTJ 8
- /*
- * GPIO PortPin Definitions
- */
- #define PTA0 0
- #define PTA1 1
- #define PTA2 2
- #define PTA3 3
- #define PTA4 4
- #define PTA5 5
- #define PTA6 6
- #define PTA7 7
- #define PTB0 10
- #define PTB1 11
- #define PTB2 12
- #define PTB3 13
- #define PTB4 14
- #define PTB5 15
- #define PTB6 16
- #define PTB7 17
- #define PTC0 20
- #define PTC1 21
- #define PTC2 22
- #define PTC3 23
- #define PTC4 24
- #define PTC5 25
- #define PTC6 26
- #define PTC7 27
- #define PTD0 30
- #define PTD1 31
- #define PTD2 32
- #define PTD3 33
- #define PTD4 34
- #define PTD5 35
- #define PTD6 36
- #define PTD7 37
- #define PTE0 40
- #define PTE1 41
- #define PTE2 42
- #define PTE3 43
- #define PTE4 44
- #define PTE5 45
- #define PTE6 46
- #define PTE7 47
- #define PTF0 60
- #define PTF1 61
- #define PTF2 62
- #define PTF3 63
- #define PTF4 64
- #define PTF5 65
- #define PTF6 66
- #define PTF7 67
- #define PTG0 80
- #define PTG1 81
- #define PTG2 82
- #define PTG3 83
- #define PTG4 84
- #define PTG5 85
- #define PTG6 86
- #define PTG7 87
- #define PTH0 100
- #define PTH1 101
- #define PTH2 102
- #define PTH3 103
- #define PTH4 104
- #define PTH5 105
- #define PTH6 106
- #define PTH7 107
- #define PTJ0 110
- #define PTJ1 111
- #define PTJ2 112
- #define PTJ3 113
- #define PTJ4 114
- #define PTJ5 115
- #define PTJ6 116
- #define PTJ7 117
- /*
- * GPIO PortPins Initialization
- */
- #include "gpio_mcf51cn_iic1.h"
- #include "gpio_mcf51cn_iic2.h"
- #include "gpio_mcf51cn_sci1.h"
- #include "gpio_mcf51cn_sci2.h"
- #include "gpio_mcf51cn_sci3.h"
- /*
- * GPIO API
- */
- #define GPIO_CFG_INPUT 0x00000000
- #define GPIO_CFG_ALT1 0x00000001
- #define GPIO_CFG_ALT2 0x00000002
- #define GPIO_CFG_ALT3 0x00000003
- #define GPIO_CFG_OUTPUT 0x00000004
- #define GPIO_CFG_PULLUP 0x00000010
- #define GPIO_CFG_SLEW_RATE 0x00000020
- #define GPIO_CFG_DRIVE_STRENGTH 0x00000040
- #define GPIO_CFG_INPUT_FILTER 0x00000080
- #define GPIO_CFG_DEBOUNCE 0 // not supported
- #define GpioPinGet(bank, bit) ((MCF_GPIO_D(bank) >> bit) & 0x1)
- #define GpioPinSet(bank, bit, value) (value) ? (GpioPinSetHigh(bank, bit)) : (GpioPinSetLow(bank, bit))
- #define GpioPinSetHigh(bank, bit) MCF_GPIO_D(bank) |= _BV(bit)
- #define GpioPinSetLow(bank, bit) MCF_GPIO_D(bank) &= ~_BV(bit)
- #define GpioPortGet(bank) MCF_GPIO_D(bank)
- #define GpioPortSet(bank, value) MCF_GPIO_D(bank) = (value)
- #define GpioPortSetHigh(bank, mask) MCF_GPIO_D(bank) |= (mask)
- #define GpioPortSetLow(bank, mask) MCF_GPIO_D(bank) &= ~(mask)
- extern uint32_t GpioPinConfigGet(int bank, int bit);
- extern int GpioPinConfigSet(int bank, int bit, uint32_t flags);
- extern int GpioPortConfigSet(int bank, uint32_t mask, uint32_t flags);
|