Library designed as an interface to the mbed Pin Connect Block

main.cpp

Committer:
Blaze513
Date:
2011-11-29
Revision:
1:e9f239e90ef4
Parent:
0:1b1cf3daf204

File content as of revision 1:e9f239e90ef4:

#include "mbed.h"
#include "PinConnectBlock.h"

Serial myComputer(USBTX, USBRX);
void interruptHandler1(void)
{   myComputer.printf("Testing Pin 1 |"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-");
    wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-");
    wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("|");     }
void interruptHandler2(void)
{   myComputer.printf("Testing Pin 2 |"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-");
    wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-");
    wait(1); myComputer.printf("-"); wait(1); myComputer.printf("-"); wait(1); myComputer.printf("|");     }
void checkFunctRegisters()
{
    for (int i = 0; i < 10; i++)
    {
        myComputer.printf("\r\nPinselReg %d:\r\n\t", i);
        for (int j = 0; j < 4; j++)
        {
            myComputer.printf("%X ", *((char*)((unsigned long*)&LPC_PINCON->PINSEL0 + i) + j));
        }
    }
}
void checkResistRegisters()
{
    for (int i = 0; i < 10; i++)
    {
        myComputer.printf("\r\nPinmodReg %d:\r\n\t", i);
        for (int j = 0; j < 4; j++)
        {
            myComputer.printf("%X ", *((char*)((unsigned long*)&LPC_PINCON->PINMODE0 + i) + j));
        }
    }
}
void checkODMRegisters()
{
    for (int i = 0; i < 5; i++)
    {
        myComputer.printf("\r\nPinmodODReg %d:\r\n\t", i);
        for (int j = 0; j < 4; j++)
        {
            myComputer.printf("%X ", *((char*)((unsigned long*)&LPC_PINCON->PINMODE_OD0 + i) + j));
        }
    }
}
void checkTMRegister()
{
    myComputer.printf("\r\nPinselTMReg:\r\n\t");
    for (int j = 0; j < 4; j++)
    {
        myComputer.printf("%X ", *((char*)&LPC_PINCON->PINSEL10 + j));
    }
}
void checkI2CRegister()
{
    myComputer.printf("\r\nI2CPADReg:\r\n\t");
    for (int j = 0; j < 4; j++)
    {
        myComputer.printf("%X ", *((char*)&LPC_PINCON->I2CPADCFG + j));
    }
}

int main ()
{
    PinConnectBlock::SetPinConnection(2, 11, 0x01);
    NVIC_SetVector(EINT1_IRQn, (uint32_t)interruptHandler1);
    NVIC_SetPriority(EINT1_IRQn, 1);
    NVIC_EnableIRQ(EINT1_IRQn);

    /*InterruptIn hardint(p30);
    hardint.rise(&interruptHandler2);
    NVIC_SetPriority(EINT3_IRQn, 0);*/

    /*unsigned char result;
    for (int i = 1; i < 7; i++)
    {
        myComputer.printf("Port %d:\r\n", i);
        for (int j = 0; j < 35; j++)
        {
            myComputer.printf("\tPin %d:\r\n", j);
            for (int k = 0; k < 4; k++)
            {
                result = PinConnectBlock::ValidateInput(i, j, k);
                myComputer.printf("\t\tMode %d: %d ", k, result);
                result = PinConnectBlock::ValidateInput(i, j, k | 0x0C);
                myComputer.printf("Mode %d: %d ", k | 0x0C, result);
                result = PinConnectBlock::ValidateInput(i, j, k | 0x10);
                myComputer.printf("Mode %d: %d \r\n", k | 0x10, result);
                result = PinConnectBlock::ValidateInput(i, j, k | 0x14);
                myComputer.printf("Mode %d: %d \r\n", k | 0x14, result);
            }
        }
    }*/

    /*PinConnectBlock::SetPinConnection(2, 11, 0x13);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();
    myComputer.printf("\r\nPin 2.11 Mode: %X\r\n\r\n", PinConnectBlock::GetPinConnection(2, 11));
    PinConnectBlock::SetPinConnection(2, 11, 0x0C);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();
    myComputer.printf("\r\nPin 2.11 Mode: %X\r\n\r\n", PinConnectBlock::GetPinConnection(2, 11));
    PinConnectBlock::SetPinConnection(2, 11, 0x1F);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();
    myComputer.printf("\r\nPin 2.11 Mode: %X\r\n\r\n", PinConnectBlock::GetPinConnection(2, 11));
    PinConnectBlock::SetPinConnection(2, 11, 0x00);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();
    myComputer.printf("\r\nPin 2.11 Mode: %X\r\n\r\n", PinConnectBlock::GetPinConnection(2, 11));
    PinConnectBlock::SetPinConnection(2, 11, 0x01);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();
    myComputer.printf("\r\nPin 2.11 Mode: %X\r\n\r\n", PinConnectBlock::GetPinConnection(2, 11));
    PinConnectBlock::SetPinConnection(1, 10, 0x02);
    PinConnectBlock::SetPinConnection(0, 28, 0x1F);
    PinConnectBlock::SetPinConnection(0, 29, 0x1F);
    checkFunctRegisters();
    checkResistRegisters();
    checkODMRegisters();*/

    /*PinConnectBlock::SetFunctionMode(1, 18, 0x02);
    PinConnectBlock::SetFunctionMode(1, 20, 0x03);
    checkFunctRegisters();
    myComputer.printf("\r\nPin 3.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(4, 29));
    myComputer.printf("\r\nPin 3.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(3, 25));
    myComputer.printf("\r\nPin 2.11 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(2, 11));
    myComputer.printf("\r\nPin 1.18 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 18));
    myComputer.printf("\r\nPin 1.20 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 20));
    myComputer.printf("\r\nPin 1.0 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 0));
    myComputer.printf("\r\nPin 0.15 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(0, 15));
    myComputer.printf("\r\nPin 0.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(0, 25));
    PinConnectBlock::SetFunctionMode(4, 29, 0x01);
    PinConnectBlock::SetFunctionMode(3, 25, 0x02);
    PinConnectBlock::SetFunctionMode(2, 11, 0x01);
    PinConnectBlock::SetFunctionMode(1, 0, 0x01);
    PinConnectBlock::SetFunctionMode(0, 15, 0x02);
    PinConnectBlock::SetFunctionMode(0, 25, 0x03);
    PinConnectBlock::SetFunctionMode(1, 18, 0x00);
    PinConnectBlock::SetFunctionMode(1, 20, 0x00);
    checkFunctRegisters();
    myComputer.printf("\r\nPin 3.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(4, 29));
    myComputer.printf("\r\nPin 3.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(3, 25));
    myComputer.printf("\r\nPin 2.11 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(2, 11));
    myComputer.printf("\r\nPin 1.18 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 18));
    myComputer.printf("\r\nPin 1.20 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 20));
    myComputer.printf("\r\nPin 1.0 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(1, 0));
    myComputer.printf("\r\nPin 0.15 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(0, 15));
    myComputer.printf("\r\nPin 0.25 Fmode: %d\r\n\r\n", PinConnectBlock::GetFunctionMode(0, 25));*/

    /*PinConnectBlock::SetResistorMode(1, 18, 0x00);
    PinConnectBlock::SetResistorMode(1, 20, 0x03);
    checkResistRegisters();
    myComputer.printf("\r\nPin 0.0 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(0, 0));
    myComputer.printf("\r\nPin 0.15 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(0, 15));
    myComputer.printf("\r\nPin 1.18 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 18));
    myComputer.printf("\r\nPin 1.20 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 20));
    myComputer.printf("\r\nPin 1.31 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 31));
    myComputer.printf("\r\nPin 2.0 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(2, 0));
    myComputer.printf("\r\nPin 3.26 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(3, 26));
    myComputer.printf("\r\nPin 4.28 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(4, 28));
    PinConnectBlock::SetResistorMode(0, 0, 0x01);
    PinConnectBlock::SetResistorMode(0, 15, 0x02);
    PinConnectBlock::SetResistorMode(1, 18, 0x03);
    PinConnectBlock::SetResistorMode(1, 20, 0x00);
    PinConnectBlock::SetResistorMode(1, 31, 0x01);
    PinConnectBlock::SetResistorMode(2, 0, 0x02);
    PinConnectBlock::SetResistorMode(3, 26, 0x03);
    PinConnectBlock::SetResistorMode(4, 28, 0x01);
    checkResistRegisters();
    myComputer.printf("\r\nPin 0.0 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(0, 0));
    myComputer.printf("\r\nPin 0.15 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(0, 15));
    myComputer.printf("\r\nPin 1.18 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 18));
    myComputer.printf("\r\nPin 1.20 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 20));
    myComputer.printf("\r\nPin 1.31 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(1, 31));
    myComputer.printf("\r\nPin 2.0 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(2, 0));
    myComputer.printf("\r\nPin 3.26 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(3, 26));
    myComputer.printf("\r\nPin 4.28 Rmode: %d\r\n\r\n", PinConnectBlock::GetResistorMode(4, 28));*/

    /*PinConnectBlock::SetOpenDrainMode(3, 26, 1);
    PinConnectBlock::SetOpenDrainMode(3, 25, 1);
    checkODMRegisters();
    myComputer.printf("\r\nPin 0.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 0));
    myComputer.printf("\r\nPin 0.11 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 11));
    myComputer.printf("\r\nPin 0.15 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 15));
    myComputer.printf("\r\nPin 0.26 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 26));
    myComputer.printf("\r\nPin 0.29 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 29));
    myComputer.printf("\r\nPin 0.30 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 30));
    myComputer.printf("\r\nPin 1.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(1, 0));
    myComputer.printf("\r\nPin 1.31 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(1, 31));
    myComputer.printf("\r\nPin 2.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(2, 0));
    myComputer.printf("\r\nPin 2.13 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(2, 13));
    myComputer.printf("\r\nPin 3.25 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(3, 25));
    myComputer.printf("\r\nPin 3.26 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(3, 26));
    myComputer.printf("\r\nPin 4.28 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(4, 28));
    myComputer.printf("\r\nPin 4.29 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(4, 29));
    PinConnectBlock::SetOpenDrainMode(0, 0, 1);
    PinConnectBlock::SetOpenDrainMode(0, 11, 1);
    PinConnectBlock::SetOpenDrainMode(0, 15, 1);
    PinConnectBlock::SetOpenDrainMode(0, 26, 1);
    PinConnectBlock::SetOpenDrainMode(0, 29, 1);
    PinConnectBlock::SetOpenDrainMode(0, 30, 1);
    PinConnectBlock::SetOpenDrainMode(1, 0, 1);
    PinConnectBlock::SetOpenDrainMode(1, 31, 1);
    PinConnectBlock::SetOpenDrainMode(2, 0, 1);
    PinConnectBlock::SetOpenDrainMode(2, 13, 1);
    PinConnectBlock::SetOpenDrainMode(3, 25, 0);
    PinConnectBlock::SetOpenDrainMode(3, 26, 0);
    PinConnectBlock::SetOpenDrainMode(4, 28, 1);
    PinConnectBlock::SetOpenDrainMode(4, 29, 1);
    checkODMRegisters();
    myComputer.printf("\r\nPin 0.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 0));
    myComputer.printf("\r\nPin 0.11 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 11));
    myComputer.printf("\r\nPin 0.15 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 15));
    myComputer.printf("\r\nPin 0.26 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 26));
    myComputer.printf("\r\nPin 0.29 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 29));
    myComputer.printf("\r\nPin 0.30 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(0, 30));
    myComputer.printf("\r\nPin 1.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(1, 0));
    myComputer.printf("\r\nPin 1.31 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(1, 31));
    myComputer.printf("\r\nPin 2.0 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(2, 0));
    myComputer.printf("\r\nPin 2.13 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(2, 13));
    myComputer.printf("\r\nPin 3.25 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(3, 25));
    myComputer.printf("\r\nPin 3.26 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(3, 26));
    myComputer.printf("\r\nPin 4.28 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(4, 28));
    myComputer.printf("\r\nPin 4.29 ODmode: %d\r\n\r\n", PinConnectBlock::GetOpenDrainMode(4, 29));*/

    /*checkTMRegister();
    myComputer.printf("\r\nTrace mode: %d\r\n\r\n", PinConnectBlock::GetTraceMode());
    PinConnectBlock::SetTraceMode(1);
    checkTMRegister();
    myComputer.printf("\r\nTrace mode: %d\r\n\r\n", PinConnectBlock::GetTraceMode());
    PinConnectBlock::SetTraceMode(0);
    checkTMRegister();
    myComputer.printf("\r\nTrace mode: %d\r\n\r\n", PinConnectBlock::GetTraceMode());*/

    /*checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    PinConnectBlock::SetI2C0Mode(0x03);
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    PinConnectBlock::SetI2C0Mode(0x01);
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    PinConnectBlock::SetI2C0Mode(0x02);
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    PinConnectBlock::SetI2C0Mode(0x00);
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG |= 0x00000001;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG |= 0x00000003;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG |= 0x00000007;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG &= ~0x0000000F;
    LPC_PINCON->I2CPADCFG |= 0x00000008;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG |= 0x0000000C;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());
    LPC_PINCON->I2CPADCFG |= 0x0000000E;
    checkI2CRegister();
    myComputer.printf("\r\nI2C0mode: %d\r\n\r\n", PinConnectBlock::GetI2C0Mode());*/

    DigitalOut led1(LED1);
    DigitalOut led2(LED2);
    DigitalOut led3(LED3);
    DigitalOut led4(LED4);
    while (1)
    {
        led1 = !led1;
        wait_ms(250);
        led2 = !led2;
        wait_ms(250);
        led3 = !led3;
        wait_ms(250);
        led4 = !led4;
        wait_ms(250);

        NVIC_SetPendingIRQ(EINT1_IRQn);
        wait(10);
    }
}