InteruptIn does not work on Pin20

14 Nov 2010

 

When I upload the here included code mbed hangs.

If I change P20 to p22 it works like a charm.

 

#include "mbed.h"

PwmOut myled1(LED1);
PwmOut myled2(LED2);
PwmOut myled3(LED3);
PwmOut myled4(LED4);
InterruptIn Plus(p21);
InterruptIn Min(p20);
float LedSpeed=0.01;

void LedDim(float speed, PwmOut LedName)
{
for(float p = 0.0f; p < 1.0f; p += 0.02f) {
LedName  = p;
wait(speed);
}
for(float p = 1.0f; p > 0.0f; p -= 0.02f) {
LedName  = p;
wait(speed);
}
}

void PlusSpeed() {
LedSpeed -= 0.0005;
myled1 = 1;
myled1 = 0;
if (LedSpeed < 0)
{
LedSpeed=0;
}
}

void MinSpeed() {
LedSpeed +=0.0005;
myled4 = 1;
myled4 = 0;
//LedSpeed -= 0.001;
}


int main() {
Plus.rise(&PlusSpeed);
Min.rise(&MinSpeed);
while(1) {
LedDim(LedSpeed,myled1);
LedDim(LedSpeed,myled2);
LedDim(LedSpeed,myled3);
LedDim(LedSpeed,myled4);
LedDim(LedSpeed,myled3);
LedDim(LedSpeed,myled2);
}
}

14 Nov 2010

Hi Remco.

http://mbed.org/users/Lerche/notebook/lpc1768-pin-functions/

If you look on the table i wrote, you'll see that Pin 19 and 20 not are interruptable, as they are both connected to Port1 on the LPC1768, which doesn't support InterruptOnChange.

Regards,
Lerche

14 Nov 2010

Hi Lerche,

Thanks for your reply!

I missed that part :-)

Greetings,

Remco

 

14 Nov 2010

You're welcome Remco :-)

Lerche