snoeck olivier
/
spi-BigRelay
Command of the SPI version of the BigRelay card. The seller of this card is www.bitwizard.nl
main.cpp@0:dea39d2fe9dd, 2013-11-11 (annotated)
- Committer:
- snoeck
- Date:
- Mon Nov 11 14:02:08 2013 +0000
- Revision:
- 0:dea39d2fe9dd
Command of bigrelay card (www.bitwizard.nl); It's the SPI version (V1.1) and the suplly is 5V. ; Don't forget the switch between SPI and 5V.; Take care of the SPI connector (numbers is not like DIL components)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
snoeck | 0:dea39d2fe9dd | 1 | #include <mbed.h> |
snoeck | 0:dea39d2fe9dd | 2 | //SPI spi(p5, p6, p7); // mosi, miso, sclk |
snoeck | 0:dea39d2fe9dd | 3 | SPI spi(p11, p12, p13); // mosi, miso, sclk |
snoeck | 0:dea39d2fe9dd | 4 | DigitalOut cs(p8); |
snoeck | 0:dea39d2fe9dd | 5 | |
snoeck | 0:dea39d2fe9dd | 6 | void setupBigRelais() |
snoeck | 0:dea39d2fe9dd | 7 | { |
snoeck | 0:dea39d2fe9dd | 8 | cs = 1; //Cheap Select sur p8 |
snoeck | 0:dea39d2fe9dd | 9 | // Setup the spi for 8 bit data, high steady state clock, |
snoeck | 0:dea39d2fe9dd | 10 | // second edge capture, with a 1MHz clock rate |
snoeck | 0:dea39d2fe9dd | 11 | spi.format(8,3); |
snoeck | 0:dea39d2fe9dd | 12 | spi.frequency(1000000);//freq 1MHz |
snoeck | 0:dea39d2fe9dd | 13 | |
snoeck | 0:dea39d2fe9dd | 14 | // Select the device by seting chip select low |
snoeck | 0:dea39d2fe9dd | 15 | cs = 0; |
snoeck | 0:dea39d2fe9dd | 16 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 17 | spi.write(0x9c);// addressz de la carte relais |
snoeck | 0:dea39d2fe9dd | 18 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 19 | spi.write(0x30);//adresse du registre de direction |
snoeck | 0:dea39d2fe9dd | 20 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 21 | spi.write(0xFF);//mise en sortie des relais |
snoeck | 0:dea39d2fe9dd | 22 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 23 | } |
snoeck | 0:dea39d2fe9dd | 24 | |
snoeck | 0:dea39d2fe9dd | 25 | void commandBigRelais(int relay,int state) |
snoeck | 0:dea39d2fe9dd | 26 | { |
snoeck | 0:dea39d2fe9dd | 27 | int output; |
snoeck | 0:dea39d2fe9dd | 28 | relay=relay|0x20; |
snoeck | 0:dea39d2fe9dd | 29 | if (state == 1) output=0xFF; |
snoeck | 0:dea39d2fe9dd | 30 | if (state == 0) output=0x00; |
snoeck | 0:dea39d2fe9dd | 31 | |
snoeck | 0:dea39d2fe9dd | 32 | cs = 0; |
snoeck | 0:dea39d2fe9dd | 33 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 34 | spi.write(0x9c);// addressz de la carte relais |
snoeck | 0:dea39d2fe9dd | 35 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 36 | spi.write(relay); |
snoeck | 0:dea39d2fe9dd | 37 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 38 | spi.write(output); |
snoeck | 0:dea39d2fe9dd | 39 | wait(0.0001); |
snoeck | 0:dea39d2fe9dd | 40 | cs = 1; |
snoeck | 0:dea39d2fe9dd | 41 | } |
snoeck | 0:dea39d2fe9dd | 42 | |
snoeck | 0:dea39d2fe9dd | 43 | |
snoeck | 0:dea39d2fe9dd | 44 | int main() { |
snoeck | 0:dea39d2fe9dd | 45 | setupBigRelais(); |
snoeck | 0:dea39d2fe9dd | 46 | |
snoeck | 0:dea39d2fe9dd | 47 | while (1) |
snoeck | 0:dea39d2fe9dd | 48 | { |
snoeck | 0:dea39d2fe9dd | 49 | commandBigRelais(4,1); |
snoeck | 0:dea39d2fe9dd | 50 | |
snoeck | 0:dea39d2fe9dd | 51 | wait(5); |
snoeck | 0:dea39d2fe9dd | 52 | commandBigRelais(4,0); |
snoeck | 0:dea39d2fe9dd | 53 | |
snoeck | 0:dea39d2fe9dd | 54 | wait(5); |
snoeck | 0:dea39d2fe9dd | 55 | } |
snoeck | 0:dea39d2fe9dd | 56 | |
snoeck | 0:dea39d2fe9dd | 57 | } |