diff options
author | barthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2012-12-04 11:16:01 +0000 |
---|---|---|
committer | barthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2012-12-04 11:16:01 +0000 |
commit | 1c60f17682e5ccfa2c330da98b17985422c35842 (patch) | |
tree | 8f0fdd6befe39bd0d9aba8598a5ee9fcbcde46b7 /os/hal/platforms/AT91SAM7/ext_lld.c | |
parent | ab1cb263710a5d955f20c39f680637eee733de84 (diff) | |
download | ChibiOS-1c60f17682e5ccfa2c330da98b17985422c35842.tar.gz ChibiOS-1c60f17682e5ccfa2c330da98b17985422c35842.tar.bz2 ChibiOS-1c60f17682e5ccfa2c330da98b17985422c35842.zip |
AT91SAM7A3. EXT ported.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4868 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/platforms/AT91SAM7/ext_lld.c')
-rw-r--r-- | os/hal/platforms/AT91SAM7/ext_lld.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/os/hal/platforms/AT91SAM7/ext_lld.c b/os/hal/platforms/AT91SAM7/ext_lld.c index 98f08c9b8..00d874972 100644 --- a/os/hal/platforms/AT91SAM7/ext_lld.c +++ b/os/hal/platforms/AT91SAM7/ext_lld.c @@ -45,7 +45,7 @@ EXTDriver EXTDA;
#if (SAM7_PLATFORM == SAM7X128) || (SAM7_PLATFORM == SAM7X256) || \
- (SAM7_PLATFORM == SAM7X512)
+ (SAM7_PLATFORM == SAM7X512) || (SAM7_PLATFORM == SAM7A3)
/**
* @brief EXTDB driver identifier.
*/
@@ -75,7 +75,7 @@ static void ext_lld_serveInterrupt(EXTDriver *extp) { irqFlags = extp->pio->PIO_ISR;
/* Call callback function for any pending interrupt.*/
- for(ch = 0; ch < 32; ch++) {
+ for(ch = 0; ch < EXT_MAX_CHANNELS; ch++) {
/* Check if the channel is activated and if its IRQ flag is set.*/
if((extp->config->channels[ch].mode &
@@ -109,7 +109,7 @@ CH_IRQ_HANDLER(EXTIA_IRQHandler) { }
#if (SAM7_PLATFORM == SAM7X128) || (SAM7_PLATFORM == SAM7X256) || \
- (SAM7_PLATFORM == SAM7X512)
+ (SAM7_PLATFORM == SAM7X512) || (SAM7_PLATFORM == SAM7A3)
/**
* @brief EXTI[1] interrupt handler.
*
@@ -145,7 +145,7 @@ void ext_lld_init(void) { EXTDA.pid = AT91C_ID_PIOA;
#if (SAM7_PLATFORM == SAM7X128) || (SAM7_PLATFORM == SAM7X256) || \
- (SAM7_PLATFORM == SAM7X512)
+ (SAM7_PLATFORM == SAM7X512) || (SAM7_PLATFORM == SAM7A3)
/* Same for PIOB.*/
extObjectInit(&EXTDB);
EXTDB.pio = AT91C_BASE_PIOB;
@@ -172,7 +172,7 @@ void ext_lld_start(EXTDriver *extp) { EXTIA_IRQHandler);
break;
#if (SAM7_PLATFORM == SAM7X128) || (SAM7_PLATFORM == SAM7X256) || \
- (SAM7_PLATFORM == SAM7X512)
+ (SAM7_PLATFORM == SAM7X512) || (SAM7_PLATFORM == SAM7A3)
case AT91C_ID_PIOB:
AIC_ConfigureIT(AT91C_ID_PIOB, SAM7_computeSMR(config->mode,
config->priority),
@@ -215,6 +215,9 @@ void ext_lld_stop(EXTDriver *extp) { */
void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel) {
+ chDbgCheck((extp->config->channels[channel].cb != NULL),
+ "Call back pointer can not be NULL");
+
extp->pio->PIO_IER = (1 << channel);
}
|