📄 var_io.h
字号:
#define AT91_USART_TXD2 AT91_PIN(0,0,21) // USART 2 transmit data
#define AT91_USART_RXD2 AT91_PIN(0,0,22) // USART 2 receive data
#define AT91_SPI_SPCK AT91_PIN(0,0,23) // SPI Clock signal
#define AT91_SPI_MISO AT91_PIN(0,0,24) // SPI Master In Slave Out
#define AT91_SPI_MOIS AT91_PIN(0,0,25) // SPI Master Out Slave In
#define AT91_SPI_NPCS0 AT91_PIN(0,0,26) // SPI Peripheral Chip Select 0
#define AT91_SPI_NPCS1 AT91_PIN(0,0,27) // SPI Peripheral Chip Select 1
#define AT91_SPI_NPCS2 AT91_PIN(0,0,28) // SPI Peripheral Chip Select 2
#define AT91_SPI_NPCS3 AT91_PIN(0,0,29) // SPI Peripheral Chip Select 3
#define AT91_INT_IRQ4 AT91_PIN(1,0, 3) // External Interrupt 4
#define AT91_INT_IRQ5 AT91_PIN(1,0, 4) // External Interrupt 5
#define AT91_ADC_AD0TRIG AT91_PIN(1,0, 6) // ADC0 External Trigger
#define AT91_ADC_AD1TRIG AT91_PIN(1,0, 7) // ADC1 External Trigger
#define AT91_BOOT_BMS AT91_PIN(1,0,12) // Boot Mode Select
#define AT91_TC_TCLK0 AT91_PIN(1,0,14) // Timer 0 Clock signal
#define AT91_TC_TIOA0 AT91_PIN(1,0,15) // Timer 0 Signal A
#define AT91_TC_TIOB0 AT91_PIN(1,0,16) // Timer 0 Signal B
#define AT91_TC_TCLK1 AT91_PIN(1,0,17) // Timer 1 Clock signal
#define AT91_TC_TIOA1 AT91_PIN(1,0,18) // Timer 1 Signal A
#define AT91_TC_TIOB1 AT91_PIN(1,0,19) // Timer 1 Signal B
#define AT91_TC_TCLK2 AT91_PIN(1,0,20) // Timer 2 Clock signal
#define AT91_TC_TIOA2 AT91_PIN(1,0,21) // Timer 2 Signal A
#define AT91_TC_TIOB2 AT91_PIN(1,0,22) // Timer 2 Signal B
// PIOA
#define AT91_PIO_PSR_TCLK3 0x00000001 // Timer 3 Clock signal
#define AT91_PIO_PSR_TIOA3 0x00000002 // Timer 3 Signal A
#define AT91_PIO_PSR_TIOB3 0x00000004 // Timer 3 Signal B
#define AT91_PIO_PSR_TCLK4 0x00000008 // Timer 4 Clock signal
#define AT91_PIO_PSR_TIOA4 0x00000010 // Timer 4 Signal A
#define AT91_PIO_PSR_TIOB4 0x00000020 // Timer 4 Signal B
#define AT91_PIO_PSR_TCLK5 0x00000040 // Timer 5 Clock signal
#define AT91_PIO_PSR_TIOA5 0x00000080 // Timer 5 Signal A
#define AT91_PIO_PSR_TIOB5 0x00000100 // Timer 5 Signal B
#define AT91_PIO_PSR_IRQ0 0x00000200 // External Interrupt 0
#define AT91_PIO_PSR_IRQ1 0x00000400 // External Interrupt 1
#define AT91_PIO_PSR_IRQ2 0x00000800 // External Interrupt 2
#define AT91_PIO_PSR_IRQ3 0x00001000 // External Interrupt 3
#define AT91_PIO_PSR_FIQ 0x00002000 // Fast Interrupt
#define AT91_PIO_PSR_SCK0 0x00004000 // USART 0 Clock signal
#define AT91_PIO_PSR_TXD0 0x00008000 // USART 0 transmit data
#define AT91_PIO_PSR_RXD0 0x00010000 // USART 0 receive data
#define AT91_PIO_PSR_SCK1 0x00020000 // USART 1 Clock signal
#define AT91_PIO_PSR_TXD1 0x00040000 // USART 1 transmit data
#define AT91_PIO_PSR_RXD1 0x00080000 // USART 1 receive data
#define AT91_PIO_PSR_SCK2 0x00100000 // USART 2 Clock signal
#define AT91_PIO_PSR_TXD2 0x00200000 // USART 2 transmit data
#define AT91_PIO_PSR_RXD2 0x00400000 // USART 2 receive data
#define AT91_PIO_PSR_SPCK 0x00800000 // SPI Clock signal
#define AT91_PIO_PSR_MISO 0x01000000 // SPI Master In Slave Out
#define AT91_PIO_PSR_MOIS 0x02000000 // SPI Master Out Slave In
#define AT91_PIO_PSR_NPCS0 0x04000000 // SPI Peripheral Chip Select 0
#define AT91_PIO_PSR_NPCS1 0x08000000 // SPI Peripheral Chip Select 1
#define AT91_PIO_PSR_NPCS2 0x10000000 // SPI Peripheral Chip Select 2
#define AT91_PIO_PSR_NPCS3 0x20000000 // SPI Peripheral Chip Select 3
// PIOB
#define AT91_PIO_PSR_IRQ4 0x00000008 // External Interrupt 4
#define AT91_PIO_PSR_IRQ5 0x00000010 // External Interrupt 5
#define AT91_PIO_PSR_AD0TRIG 0x00000040 // ADC0 External Trigger
#define AT91_PIO_PSR_AD1TRIG 0x00000080 // ADC1 External Trigger
#define AT91_PIO_PSR_BMS 0x00040000 // Boot Mode Select
#define AT91_PIO_PSR_TCLK0 0x00080000 // Timer 0 Clock signal
#define AT91_PIO_PSR_TIOA0 0x00100000 // Timer 0 Signal A
#define AT91_PIO_PSR_TIOB0 0x00200000 // Timer 0 Signal B
#define AT91_PIO_PSR_TCLK1 0x00400000 // Timer 1 Clock signal
#define AT91_PIO_PSR_TIOA1 0x00800000 // Timer 1 Signal A
#define AT91_PIO_PSR_TIOB1 0x01000000 // Timer 1 Signal B
#define AT91_PIO_PSR_TCLK2 0x02000000 // Timer 2 Clock signal
#define AT91_PIO_PSR_TIOA2 0x04000000 // Timer 2 Signal A
#define AT91_PIO_PSR_TIOB2 0x08000000 // Timer 2 Signal B
#elif defined (CYGHWR_HAL_ARM_AT91SAM7)
#include <pkgconf/hal_arm_at91sam7.h>
#ifdef CYGHWR_HAL_ARM_AT91SAM7S
#define AT91_PWM_PWM0 AT91_PIN(0,0, 0) // Pulse Width Modulation 0
#define AT91_PWM_PWM1 AT91_PIN(0,0, 1) // Pulse Width Modulation 1
#define AT91_PWM_PWM2 AT91_PIN(0,0, 2) // Pulse Width Modulation 2
#define AT91_TWI_TWD AT91_PIN(0,0, 3) // Two Wire Data
#define AT91_TWI_TWCK AT91_PIN(0,0, 4) // Two Wire Clock
#define AT91_USART_RXD0 AT91_PIN(0,0, 5) // USART 0 Receive Data
#define AT91_USART_TXD0 AT91_PIN(0,0, 6) // USART 0 Transmit Data
#define AT91_USART_RTS0 AT91_PIN(0,0, 7) // USART 0 Ready To Send
#define AT91_USART_CTS0 AT91_PIN(0,0, 8) // USART 0 Clear To Send
#define AT91_DBG_DRXD AT91_PIN(0,0, 9) // Debug UART Receive
#define AT91_DBG_DTXD AT91_PIN(0,0,10) // Debug UART Transmit
#define AT91_SPI_NPCS0 AT91_PIN(0,0,11) // SPI Chip Select 0
#define AT91_SPI_MISO AT91_PIN(0,0,12) // SPI Input
#define AT91_SPI_MOIS AT91_PIN(0,0,13) // SPI Output
#define AT91_SPI_SPCK AT91_PIN(0,0,14) // SPI clock
#define AT91_S2C_TF AT91_PIN(0,0,15) // S2C Transmit Frame Sync
#define AT91_S2C_TK AT91_PIN(0,0,16) // S2C Transmit Clock
#define AT91_S2C_TD AT91_PIN(0,0,17) // S2C Transmit Data
#define AT91_S2C_RD AT91_PIN(0,0,18) // S2C Receive Data
#define AT91_S2C_RK AT91_PIN(0,0,19) // S2C Receive Clock
#define AT91_S2C_RF AT91_PIN(0,0,20) // S2C Receive Frame Sync
#if !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s32)
#define AT91_USART_RXD1 AT91_PIN(0,0,21) // USART 1 Receive Data
#define AT91_USART_TXD1 AT91_PIN(0,0,22) // USART 1 Transmit Data
#define AT91_USART_SCK1 AT91_PIN(0,0,23) // USART 1 Serial Clock
#define AT91_USART_RTS1 AT91_PIN(0,0,24) // USART 1 Ready To Send
#define AT91_USART_CTS1 AT91_PIN(0,0,25) // USART 1 Clear To Send
#define AT91_USART_DVD1 AT91_PIN(0,0,26) // USART 1 Data Carrier Detect
#define AT91_USART_DTR1 AT91_PIN(0,0,27) // USART 1 Data Terminal Ready
#define AT91_USART_DSR1 AT91_PIN(0,0,28) // USART 1 Data Set Ready
#define AT91_USART_RI1 AT91_PIN(0,0,29) // USART 2 Ring Indicator
#define AT91_INT_IRQ1 AT91_PIN(0,0,30) // Interrupt Request 1
#define AT91_SPI_NPCS1 AT91_PIN(0,0,31) // SPI Chip Select 1
#endif
#define AT91_TC_TIOA0 AT91_PIN(0,1, 0) // Timer/Counter 0 IO Line A
#define AT91_TC_TIOB0 AT91_PIN(0,1, 1) // Timer/Counter 0 IO Line B
#define AT91_USART_SCK0 AT91_PIN(0,1, 2) // USART 0 Serial Clock
#define AT91_SPI_NPCS3 AT91_PIN(0,1, 3) // SPI Chip Select 3
#define AT91_TC_TCLK0 AT91_PIN(0,1, 4) // Timer/Counter 0 Clock Input
#define AT91_SPI_NPCS3X AT91_PIN(0,1, 5) // SPI Chip Select 3 (again)
#define AT91_PCK_PCK0 AT91_PIN(0,1, 6) // Programmable Clock Output 0
#define AT91_PWM_PWM3 AT91_PIN(0,1, 7) // Pulse Width Modulation #3
#define AT91_ADC_ADTRG AT91_PIN(0,1, 8) // ADC Trigger
#define AT91_SPI_NPCS1X AT91_PIN(0,1, 9) // SPI Chip Select 1
#define AT91_SPI_NPCS2 AT91_PIN(0,1,10) // SPI Chip Select 2
#define AT91_PWM_PWM0X AT91_PIN(0,1,11) // Pulse Width Modulation #0
#define AT91_PIO_PWM_PWM1X AT91_PIN(0,1,12) // Pulse Width Modulation #1
#define AT91_PIO_PWM_PWM2X AT91_PIN(0,1,13) // Pulse Width Modulation #2
#define AT91_PIO_PWM_PWM4X AT91_PIN(0,1,14) // Pulse Width Modulation #4
#define AT91_TC_TIOA1 AT91_PIN(0,1,15) // Timer/Counter 1 IO Line A
#define AT91_TC_TIOB1 AT91_PIN(0,1,16) // Timer/Counter 1 IO Line B
#define AT91_PCK_PCK1 AT91_PIN(0,1,17) // Programmable Clock Output 1
#define AT91_PCK_PCK2 AT91_PIN(0,1,18) // Programmable Clock Output 2
#define AT91_INT_FIQ AT91_PIN(0,1,19) // Fast Interrupt Request
#define AT91_INT_IRQ0 AT91_PIN(0,1,20) // Interrupt Request 0
#if !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s32)
#define AT91_PCK_PCK1X AT91_PIN(0,1,21) // Programmable Clock Output 1
#define AT91_SPI_NPCS3XX AT91_PIN(0,1,22) // SPI Chip Select 3 (yet again)
#define AT91_PWM_PWM0XX AT91_PIN(0,1,23) // Pulse Width Modulation #0
#define AT91_PWM_PWM1XX AT91_PIN(0,1,24) // Pulse Width Modulation #1
#define AT91_PWM_PWM2XX AT91_PIN(0,1,25) // Pulse Width Modulation 2
#define AT91_TC_TIOA2 AT91_PIN(0,1,26) // Timer/Counter 2 IO Line A
#define AT91_TC_TIOB2 AT91_PIN(0,1,27) // Timer/Counter 2 IO Line B
#define AT91_TC_TCLK1 AT91_PIN(0,1,28) // External Clock Input 1
#define AT91_TC_TCLK2 AT91_PIN(0,1,29) // External Clock Input 2
#define AT91_SPI_NPCS2X AT91_PIN(0,1,30) // SPI Chip Select 2 (again)
#define AT91_PCK_PCK2X AT91_PIN(0,1,31) // Programmable Clock Output 2
#endif //!defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s32)
// PIO Peripheral A
#define AT91_PIO_PSR_PWM0 0x00000001 // Pulse Width Modulation 0
#define AT91_PIO_PSR_PWM1 0x00000002 // Pulse Width Modulation 1
#define AT91_PIO_PSR_PWM2 0x00000004 // Pulse Width Modulation 2
#define AT91_PIO_PSR_TWD 0x00000008 // Two Wire Data
#define AT91_PIO_PSR_TWCK 0x00000010 // Two Wire Clock
#define AT91_PIO_PSR_RXD0 0x00000020 // USART 0 Receive Data
#define AT91_PIO_PSR_TXD0 0x00000040 // USART 0 Transmit Data
#define AT91_PIO_PSR_RTS0 0x00000080 // USART 0 Ready To Send
#define AT91_PIO_PSR_CTS0 0x00000100 // USART 0 Clear To Send
#define AT91_PIO_PSR_DRXD 0x00000200 // Debug UART Receive
#define AT91_PIO_PSR_DTXD 0x00000400 // Debug UART Transmit
#define AT91_PIO_PSR_NPCS0 0x00000800 // SPI Chip Select 0
#define AT91_PIO_PSR_MISO 0x00001000 // SPI Input
#define AT91_PIO_PSR_MOIS 0x00002000 // SPI Output
#define AT91_PIO_PSR_SPCK 0x00004000 // SPI clock
#define AT91_PIO_PSR_TF 0x00008000 // S2C Transmit Frame Sync
#define AT91_PIO_PSR_TK 0x00010000 // S2C Transmit Clock
#define AT91_PIO_PSR_TD 0x00020000 // S2C Transmit Data
#define AT91_PIO_PSR_RD 0x00040000 // S2C Receive Data
#define AT91_PIO_PSR_RK 0x00080000 // S2C Receive Clock
#define AT91_PIO_PSR_RF 0x00100000 // S2C Receive Frame Sync
#if !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s32)
#define AT91_PIO_PSR_RXD1 0x00200000 // USART 1 Receive Data
#define AT91_PIO_PSR_TXD1 0x00400000 // USART 1 Transmit Data
#define AT91_PIO_PSR_SCK1 0x00800000 // USART 1 Serial Clock
#define AT91_PIO_PSR_RTS1 0x01000000 // USART 1 Ready To Send
#define AT91_PIO_PSR_CTS1 0x02000000 // USART 1 Clear To Send
#define AT91_PIO_PSR_DCD1 0x04000000 // USART 1 Data Carrier Detect
#define AT91_PIO_PSR_DTR1 0x08000000 // USART 1 Data Terminal Ready
#define AT91_PIO_PSR_DSR1 0x10000000 // USART 1 Data Set Ready
#define AT91_PIO_PSR_RI1 0x20000000 // USART 2 Ring Indicator
#define AT91_PIO_PSR_IRQ1 0x40000000 // Interrupt Request 1
#define AT91_PIO_PSR_NPCS1 0x80000000 // SPI Chip Select 1
#endif // !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s64)
// PIO Peripheral B
#define AT91_PIO_PSR_TIOA0 0x00000001 // Timer/Counter 0 IO Line A
#define AT91_PIO_PSR_TIOB0 0x00000002 // Timer/Counter 0 IO Line B
#define AT91_PIO_PSR_SCK0 0x00000004 // USART 0 Serial Clock
#define AT91_PIO_PSR_NPCS3 0x00000008 // SPI Chip Select 3
#define AT91_PIO_PSR_TCLK0 0x00000010 // Timer/Counter 0 Clock Input
#define AT91_PIO_PSR_NPCS3X 0x00000020 // SPI Chip Select 3 (again)
#define AT91_PIO_PSR_PCK0 0x00000040 // Programmable Clock Output 0
#define AT91_PIO_PSR_PWM3 0x00000080 // Pulse Width Modulation #3
#define AT91_PIO_PSR_ADTRG 0x00000100 // ADC Trigger
#define AT91_PIO_PSR_NPCS1X 0x00000200 // SPI Chip Select 1 (again)
#define AT91_PIO_PSR_NPCS2 0x00000400 // SPI Chip Select 2
#define AT91_PIO_PSR_PWMOX 0x00000800 // Pulse Width Modulation #0 (again)
#define AT91_PIO_PSR_PWM1X 0x00001000 // Pulse Width Modulation #1 (again)
#define AT91_PIO_PSR_PWM2X 0x00002000 // Pulse Width Modulation #2 (again)
#define AT91_PIO_PSR_PWM3X 0x00004000 // Pulse Width Modulation #4 (again)
#define AT91_PIO_PSR_TIOA1 0x00008000 // Timer/Counter 1 IO Line A
#define AT91_PIO_PSR_TIOB1 0x00010000 // Timer/Counter 1 IO Line B
#define AT91_PIO_PSR_PCK1 0x00020000 // Programmable Clock Output 1
#define AT91_PIO_PSR_PCK2 0x00040000 // Programmable Clock Output 2
#define AT91_PIO_PSR_FIQ 0x00080000 // Fast Interrupt Request
#define AT91_PIO_PSR_IRQ0 0x00100000 // Interrupt Request 0
#if !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s32)
#define AT91_PIO_PSR_PCK1X 0x00200000 // Programmable Clock Output 1(again)
#define AT91_PIO_PSR_NPCS3XX 0x00400000 // SPI Chip Select 3 (yet again)
#define AT91_PIO_PSR_PWMOXX 0x00800000 // Pulse Width Modulation #0 (again)
#define AT91_PIO_PSR_PWM1XX 0x01000000 // Pulse Width Modulation #1 (again)
#define AT91_PIO_PSR_PWM2XX 0x02000000 // Pulse Width Modulation #2 (again)
#define AT91_PIO_PSR_TIOA2 0x04000000 // Timer/Counter 2 IO Line A
#define AT91_PIO_PSR_TIOB2 0x08000000 // Timer/Counter 2 IO Line B
#define AT91_PIO_PSR_TCLK1 0x10000000 // External Clock Input 1
#define AT91_PIO_PSR_TCLK2 0x20000000 // External Clock Input 2
#define AT91_PIO_PSR_NPCS2X 0x40000000 // SPI Chip Select 2 (again)
#define AT91_PIO_PSR_PCK2X 0x80000000 // Programmable Clock Output 2(again)
#endif // !defined(CYGHWR_HAL_ARM_AT91SAM7S_at91sam7s64)
#endif // CYGHWR_HAL_ARM_AT91SAM7S
#ifdef CYGHWR_HAL_ARM_AT91SAM7X
// PIO Controller A, peripheral A
#define AT91_USART_RXD0 AT91_PIN(0,0, 0) // USART 0 Receive Data
#define AT91_USART_TXD0 AT91_PIN(0,0, 1) // USART 0 Transmit Data
#define AT91_USART_SCK0 AT91_PIN(0,0, 2) // USART 0 Serial Clock
#define AT91_USART_RTS0 AT91_PIN(0,0, 3) // USART 0 Request To Send
#define AT91_USART_CTS0 AT91_PIN(0,0, 4) // USART 0 Clear To Send
#define AT91_USART_RXD1 AT91_PIN(0,0, 5) // USART 1 Receive Data
#define AT91_USART_TXD1 AT91_PIN(0,0, 6) // USART 1 Transmit Data
#define AT91_USART_SCK1 AT91_PIN(0,0, 7) // USART 1 Serial Clock
#define AT91_USART_RTS1 AT91_PIN(0,0, 8) // USART 1 Request To Send
#define AT91_USART_CTS1 AT91_PIN(0,0, 9) // USART 1 Clear To Send
#define AT91_TWI_TWD AT91_PIN(0,0,10) // Two Wire Data
#define AT91_TWI_TWCK AT91_PIN(0,0,11) // Two Wire Clock
#define AT91_SPI_NPCS0 AT91_PIN(0,0,12) // SPI 0 Chip Select 0
#define AT91_SPI_NPCS1 AT91_PIN(0,0,13) // SPI 0 Chip Select 1
#define AT91_SPI_NPCS2 AT91_PIN(0,0,14) // SPI 0 Chip Select 2
#define AT91_SPI_NPCS3 AT91_PIN(0,0,15) // SPI 0 Chip Select 3
#define AT91_SPI_MISO AT91_PIN(0,0,16) // SPI 0 Master In Slave Out
#define AT91_SPI_MOIS AT91_PIN(0,0,17) // SPI 0 Master Out Slave In
#define AT91_SPI_SPCK AT91_PIN(0,0,18) // SPI 0 Clock
#define AT91_CAN_CANRX AT91_PIN(0,0,19) // CAN Receive
#define AT91_CAN_CANTX AT91_PIN(0,0,20) // CAN Transmit
#define AT91_SSC_TF AT91_PIN(0,0,21) // SSC Transmit Frame Sync
#define AT91_S2C_TK AT91_PIN(0,0,22) // SSC Transmit Clock
#define AT91_S2C_TD AT91_PIN(0,0,23) // SSC Transmit Data
#define AT91_S2C_RD AT91_PIN(0,0,24) // SSC Receive Data
#define AT91_S2C_RK AT91_PIN(0,0,25) // SSC Receive Clock
#define AT91_S2C_RF AT91_PIN(0,0,26) // SSC Receive Frame Sync
#define AT91_DBG_DRXD AT91_PIN(0,0,27) // DBGU Receive Data
#define AT91_DBG_DTXD AT91_PIN(0,0,28) // DBGU Transmit Data
#define AT91_INT_FIQ AT91_PIN(0,0,29) // Fast Interrupt Request
#define AT91_INT_IRQ0 AT91_PIN(0,0,30) // Interrupt Request 0
//PIO controller A, peripheral B
#define AT91_SPI1_NPCS1 AT91_PIN(0,1, 2) // SPI 1 Chip Select 1
#define AT91_SPI1_NPCS2 AT91_PIN(0,1, 3) // SPI 1 Chip Select 2
#define AT91_SPI1_NPCS3 AT91_PIN(0,1, 4) // SPI 1 Chip Select 3
#define AT91_SPI_NPCS1X AT91_PIN(0,1, 7) // SPI 0 Chip Select 1
#define AT91_SPI_NPCS2X AT91_PIN(0,1, 8) // SPI 0 Chip Select 2
#define AT91_SPI_NPCS3X AT91_PIN(0,1, 9) // SPI 0 Chip Select 3
#define AT91_PCK_PCK1 AT91_PIN(0,1,13) // Programmable Clock Output 1
#define AT91_INT_IRQ1 AT91_PIN(0,1,14) // Interrupt Request 1
#define AT91_TC_TCLK1 AT91_PIN(0,1,15) // Timer/Counter 1 Clock Input
#define AT91_SPI1_NPCS0 AT91_PIN(0,1,21) // SPI 1 Chip Select 0
#define AT91_SPI1_SPCK AT91_PIN(0,1,22) // SPI 1 Clock
#define AT91_SPI1_MOSI AT91_PIN(0,1,23) // SPI 1 Master Out Slave In
#define AT91_SPI1_MISO AT91_PIN(0,1,24) // SPI 0 Master In Slave Out
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -