project

Dependencies:   MCP23S17 TextLCD mbed

main.cpp

Committer:
mn147147
Date:
2016-09-27
Revision:
0:e200d9463a30

File content as of revision 0:e200d9463a30:



#include "mbed.h"
#include "MCP23S17.h"
#include "TextLCD.h"

SPI spi(p5, p6, p7);
I2C i2c(p9, p10);
DigitalOut cs(p21);




void relay_porta(int bitoutput)
{

    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x42);
    spi.write(0x12);
    spi.write(bitoutput);
    cs=1;
}

void relay_portb(int bitoutput)
{

    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x42);
    spi.write(0x13);
    spi.write(bitoutput);
    cs=1;
}

void mosfet_porta(int bitoutput)
{

    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x40);
    spi.write(0x12);
    spi.write(bitoutput);
    cs=1;
}

void mosfet_portb(int bitoutput)
{
    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x40);
    spi.write(0x13);
    spi.write(bitoutput);
    cs=1;
}

void autotest()
{
    relay_porta(0x00);
    wait_ms(100);
    for(int bitoutput=0x01; bitoutput <= 0x80; bitoutput= bitoutput*2) {
    relay_porta(bitoutput);
    wait_ms(100);
    }
}

int main()
{

    cs=1;
    spi.format(8,0);

    cs=0;
    wait_us(1);
    spi.write(0x42);        //write to address 001
    spi.write(0x0A);        //iocon bank 0
    spi.write(0x2A);        // setup af control register (BANK = 0, MIRROR = 0, SEQOP = 1, DISSLW = 0, HAEN = 1, ODR = 0, INTPOL = 1, NC = 0)
    cs=1;



    cs=0;                  //chipselect enable
    wait_us(1);
    spi.write(0x42);        //write to address 001
    spi.write(0x00);        //set direction I/O portA
    spi.write(0x00);        //all ports are outputs
    cs=1;

    cs=0;                  //chipselect enable
    wait_us(1);
    spi.write(0x42);        //write to address 001
    spi.write(0x01);        //set direction I/O portB
    spi.write(0x00);        //all ports are outputs
    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x42);
    spi.write(0x0C);        //GPPUA
    spi.write(0x00);        //pullup resistors disabled on all bits
    cs=1;

    cs=0;
    wait_us(1);
    spi.write(0x42);
    spi.write(0x0D);        //GPPUB
    spi.write(0x00);        //pullup resistors disabled on all bits
    cs=1;


    while(1) {
        autotest();

    }

}