aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/d_lowspeed.r
diff options
context:
space:
mode:
Diffstat (limited to 'AT91SAM7S256/Source/d_lowspeed.r')
-rw-r--r--AT91SAM7S256/Source/d_lowspeed.r136
1 files changed, 15 insertions, 121 deletions
diff --git a/AT91SAM7S256/Source/d_lowspeed.r b/AT91SAM7S256/Source/d_lowspeed.r
index 93f0fb8..9741f0c 100644
--- a/AT91SAM7S256/Source/d_lowspeed.r
+++ b/AT91SAM7S256/Source/d_lowspeed.r
@@ -56,12 +56,10 @@ typedef struct
static LOWSPEEDPARAMETERS LowSpeedData[4];
+__ramdata
ULONG DATA_PINS[4] = {CHANNEL_ONE_DATA, CHANNEL_TWO_DATA, CHANNEL_THREE_DATA, CHANNEL_FOUR_DATA};
+__ramdata
ULONG CLK_PINS[4] = {CHANNEL_ONE_CLK, CHANNEL_TWO_CLK, CHANNEL_THREE_CLK, CHANNEL_FOUR_CLK};
-const ULONG CLK_OR_DATA_PINS[4] = {CHANNEL_ONE_CLK | CHANNEL_ONE_DATA,
- CHANNEL_TWO_CLK | CHANNEL_TWO_DATA,
- CHANNEL_THREE_CLK | CHANNEL_THREE_DATA,
- CHANNEL_FOUR_CLK | CHANNEL_FOUR_DATA};
#define LOWSPEED_CHANNEL1 0
#define LOWSPEED_CHANNEL2 1
@@ -145,120 +143,15 @@ const ULONG CLK_OR_DATA_PINS[4] = {CHANNEL_ONE_CLK | CHANNEL_ONE_DATA,
#define SETDebugOutputLow *AT91C_PIOA_CODR = 0x20000000
-#define SETClkComOneHigh *AT91C_PIOA_SODR = CHANNEL_ONE_CLK
-
-#define SETClkComOneLow *AT91C_PIOA_CODR = CHANNEL_ONE_CLK
-
-#define GetClkComOnePinLevel *AT91C_PIOA_PDSR & CHANNEL_ONE_CLK
-
-#define SETClkComTwoHigh *AT91C_PIOA_SODR = CHANNEL_TWO_CLK
-
-#define SETClkComTwoLow *AT91C_PIOA_CODR = CHANNEL_TWO_CLK
-
-#define GetClkComTwoPinLevel *AT91C_PIOA_PDSR & CHANNEL_TWO_CLK
-
-#define SETClkComThreeHigh *AT91C_PIOA_SODR = CHANNEL_THREE_CLK
-
-#define SETClkComThreeLow *AT91C_PIOA_CODR = CHANNEL_THREE_CLK
-
-#define GetClkComThreePinLevel *AT91C_PIOA_PDSR & CHANNEL_THREE_CLK
-
-#define SETClkComFourHigh *AT91C_PIOA_SODR = CHANNEL_FOUR_CLK
-
-#define SETClkComFourLow *AT91C_PIOA_CODR = CHANNEL_FOUR_CLK
-
-#define GetClkComFourPinLevel *AT91C_PIOA_PDSR & CHANNEL_FOUR_CLK
-
-
-#define SETDataComOneHigh *AT91C_PIOA_SODR = CHANNEL_ONE_DATA
-
-#define SETDataComOneLow *AT91C_PIOA_CODR = CHANNEL_ONE_DATA
-
-#define GetDataComOnePinLevel *AT91C_PIOA_PDSR & CHANNEL_ONE_DATA
-
-#define GETDataComOnePinDirection *AT91C_PIOA_OSR & CHANNEL_ONE_DATA
-
-#define SETDataComTwoHigh *AT91C_PIOA_SODR = CHANNEL_TWO_DATA
-
-#define SETDataComTwoLow *AT91C_PIOA_CODR = CHANNEL_TWO_DATA
-
-#define GetDataComTwoPinLevel *AT91C_PIOA_PDSR & CHANNEL_TWO_DATA
-
-#define GETDataComTwoPinDirection *AT91C_PIOA_OSR & CHANNEL_TWO_DATA
-
-#define SETDataComThreeHigh *AT91C_PIOA_SODR = CHANNEL_THREE_DATA
-
-#define SETDataComThreeLow *AT91C_PIOA_CODR = CHANNEL_THREE_DATA
-
-#define GetDataComThreePinLevel *AT91C_PIOA_PDSR & CHANNEL_THREE_DATA
-
-#define GETDataComThreePinDirection *AT91C_PIOA_OSR & CHANNEL_THREE_DATA
-
-#define SETDataComFourHigh *AT91C_PIOA_SODR = CHANNEL_FOUR_DATA
-
-#define SETDataComFourLow *AT91C_PIOA_CODR = CHANNEL_FOUR_DATA
-
-#define GetDataComFourPinLevel *AT91C_PIOA_PDSR & CHANNEL_FOUR_DATA
-
-#define GETDataComFourPinDirection *AT91C_PIOA_OSR & CHANNEL_FOUR_DATA
-
-#define SETDataComOneToInput *AT91C_PIOA_ODR = CHANNEL_ONE_DATA;
-
-#define SETDataComOneToOutput *AT91C_PIOA_OER = CHANNEL_ONE_DATA;
-
-#define SETDataComTwoToInput *AT91C_PIOA_ODR = CHANNEL_TWO_DATA;
-
-#define SETDataComTwoToOutput *AT91C_PIOA_OER = CHANNEL_TWO_DATA;
-
-#define SETDataComThreeToInput *AT91C_PIOA_ODR = CHANNEL_THREE_DATA;
-
-#define SETDataComThreeToOutput *AT91C_PIOA_OER = CHANNEL_THREE_DATA;
-
-#define SETDataComFourToInput *AT91C_PIOA_ODR = CHANNEL_FOUR_DATA;
-
-#define SETDataComFourToOutput *AT91C_PIOA_OER = CHANNEL_FOUR_DATA;
-
-#define DISABLEPullupDataComOne *AT91C_PIOA_PPUDR = CHANNEL_ONE_DATA;
-
-#define DISABLEPullupClkComOne *AT91C_PIOA_PPUDR = CHANNEL_ONE_CLK;
-
-#define DISABLEPullupDataComTwo *AT91C_PIOA_PPUDR = CHANNEL_TWO_DATA;
-
-#define DISABLEPullupClkComTwo *AT91C_PIOA_PPUDR = CHANNEL_TWO_CLK;
-
-#define DISABLEPullupDataComThree *AT91C_PIOA_PPUDR = CHANNEL_THREE_DATA;
-
-#define DISABLEPullupClkComThree *AT91C_PIOA_PPUDR = CHANNEL_THREE_CLK;
-
-#define DISABLEPullupDataComFour *AT91C_PIOA_PPUDR = CHANNEL_FOUR_DATA;
-
-#define DISABLEPullupClkComFour *AT91C_PIOA_PPUDR = CHANNEL_FOUR_CLK;
-
-#define ENABLEPullupDataComOne *AT91C_PIOA_PPUER = CHANNEL_ONE_DATA;
-
-#define ENABLEPullupClkComOne *AT91C_PIOA_PPUER = CHANNEL_ONE_CLK;
-
-#define ENABLEPullupDataComTwo *AT91C_PIOA_PPUER = CHANNEL_TWO_DATA;
-
-#define ENABLEPullupClkComTwo *AT91C_PIOA_PPUER = CHANNEL_TWO_CLK;
-
-#define ENABLEPullupDataComThree *AT91C_PIOA_PPUER = CHANNEL_THREE_DATA;
-
-#define ENABLEPullupClkComThree *AT91C_PIOA_PPUER = CHANNEL_THREE_CLK;
-
-#define ENABLEPullupDataComFour *AT91C_PIOA_PPUER = CHANNEL_FOUR_DATA;
-
-#define ENABLEPullupClkComFour *AT91C_PIOA_PPUER = CHANNEL_FOUR_CLK;
-
#define SETClkLow(ChannelNr) {\
- *AT91C_PIOA_CODR = CLK_PINS[ChannelNr];\
+ *AT91C_PIOA_CODR = CLK_PINS[ChannelNr];\
LowSpeedData[ChannelNr].ClkStatus = 0;\
- }
+}
#define SETClkHigh(ChannelNr) {\
*AT91C_PIOA_SODR = CLK_PINS[ChannelNr];\
LowSpeedData[ChannelNr].ClkStatus = 1;\
- }
+}
#define SETDataLow(ChannelNr) {\
*AT91C_PIOA_CODR = DATA_PINS[ChannelNr];\
@@ -272,13 +165,13 @@ const ULONG CLK_OR_DATA_PINS[4] = {CHANNEL_ONE_CLK | CHANNEL_ONE_DATA,
*AT91C_PIOA_ODR = DATA_PINS[ChannelNr];\
}
+
#define SETDataToOutput(ChannelNr) {\
*AT91C_PIOA_OER = DATA_PINS[ChannelNr];\
}
-#define GetClkPinLevel(ChannelNr) (*AT91C_PIOA_PDSR & CLK_PINS[ChannelNr])
+#define GetClkPinLevel(ChannelNr) (*AT91C_PIOA_PDSR & CLK_PINS[ChannelNr])
#define GetDataPinLevel(ChannelNr) (*AT91C_PIOA_PDSR & DATA_PINS[ChannelNr])
-#define GETDataPinDirection(ChannelNr) (*AT91C_PIOA_OSR & DATA_PINS[ChannelNr])
#define ENABLEPWMTimerForLowCom {\
*AT91C_PWMC_ENA = AT91C_PWMC_CHID0; /* Enable PWM output channel 0 */\
@@ -606,19 +499,20 @@ __ramfunc void LowSpeedPwmIrqHandler(void)
}
}
-
#define ENABLETxPins(ChannelNumber) {\
- *AT91C_PIOA_PER = CLK_OR_DATA_PINS[ChannelNumber]; /* Enable PIO on PA20 & PA28 */\
- *AT91C_PIOA_PPUDR = CLK_OR_DATA_PINS[ChannelNumber]; /* Disable Pull-up resistor */\
- *AT91C_PIOA_ODR = CLK_OR_DATA_PINS[ChannelNumber]; /* PA20 & PA28 set to Input */\
+ ULONG Tmp = CLK_PINS[ChannelNumber] | DATA_PINS[ChannelNumber];\
+ *AT91C_PIOA_PER = Tmp; /* Enable PIO */\
+ *AT91C_PIOA_PPUDR = Tmp; /* Disable Pull-up resistor */\
+ *AT91C_PIOA_ODR = Tmp; /* PIO set to Input */\
}
#define TxData(ChannelNumber, Status, DataOutBuffer, NumberOfByte) {\
if ((GetDataPinLevel(ChannelNumber) && GetClkPinLevel(ChannelNumber)) && (LowSpeedData[ChannelNumber].ChannelState == LOWSPEED_IDLE))\
{\
- *AT91C_PIOA_PER = CLK_OR_DATA_PINS[ChannelNumber]; /* Enable PIO on PA20 & PA28 */\
- *AT91C_PIOA_OER = CLK_OR_DATA_PINS[ChannelNumber]; /* PA20 & PA28 set to Output */\
- *AT91C_PIOA_PPUDR = CLK_OR_DATA_PINS[ChannelNumber]; /* Disable Pull-up resistor */\
+ ULONG Tmp = CLK_PINS[ChannelNumber] | DATA_PINS[ChannelNumber];\
+ *AT91C_PIOA_PER = Tmp; /* Enable PIO */\
+ *AT91C_PIOA_OER = Tmp; /* POI set to Output */\
+ *AT91C_PIOA_PPUDR = Tmp; /* Disable Pull-up resistor */\
SETClkHigh(ChannelNumber);\
SETDataLow(ChannelNumber);\
LowSpeedData[ChannelNumber].ClkStatus = 1;\