Browse Source

Remove Gerboard

pull/158/head
Jim Parziale 2 years ago
parent
commit
7a61303178
4 changed files with 5 additions and 393 deletions
  1. +5
    -7
      devLib/Makefile
  2. +0
    -164
      devLib/gertboard.c
  3. +0
    -45
      devLib/gertboard.h
  4. +0
    -177
      devLib/piFaceOld.c

+ 5
- 7
devLib/Makefile View File

@@ -43,16 +43,15 @@ LIBS =

###############################################################################

SRC = ds1302.c maxdetect.c piNes.c \
gertboard.c piFace.c \
lcd128x64.c lcd.c \
scrollPhat.c \
SRC = ds1302.c maxdetect.c \
piNes.c piFace.c \
lcd128x64.c lcd.c \
scrollPhat.c \
piGlow.c

OBJ = $(SRC:.c=.o)

HEADERS = ds1302.h gertboard.h lcd128x64.h lcd.h maxdetect.h piFace.h piGlow.h piNes.h\
scrollPhat.h
HEADERS = ds1302.h lcd128x64.h lcd.h maxdetect.h piFace.h piGlow.h piNes.h scrollPhat.h

#################################################################################

@@ -110,7 +109,6 @@ depend:
ds1302.o: ds1302.h
maxdetect.o: maxdetect.h
piNes.o: piNes.h
gertboard.o: gertboard.h
piFace.o: piFace.h
lcd128x64.o: font.h lcd128x64.h
lcd.o: lcd.h


+ 0
- 164
devLib/gertboard.c View File

@@ -1,164 +0,0 @@
/*
* gertboard.c:
* Access routines for the SPI devices on the Gertboard
* Copyright (c) 2012 Gordon Henderson
*
* The Gertboard has:
*
* An MCP3002 dual-channel A to D convertor connected
* to the SPI bus, selected by chip-select A, and:
*
* An MCP4802 dual-channel D to A convertor connected
* to the SPI bus, selected via chip-select B.
*
***********************************************************************
* This file is part of wiringPi:
* https://github.com/WiringPi/WiringPi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with wiringPi.
* If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/


#include <stdio.h>
#include <stdint.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/spi/spidev.h>

#include <wiringPi.h>
#include <wiringPiSPI.h>

#include "gertboard.h"

// The A-D convertor won't run at more than 1MHz @ 3.3v

#define SPI_ADC_SPEED 1000000
#define SPI_DAC_SPEED 1000000
#define SPI_A2D 0
#define SPI_D2A 1


/*
* gertboardAnalogWrite:
* Write an 8-bit data value to the MCP4802 Analog to digital
* convertor on the Gertboard.
*********************************************************************************
*/

void gertboardAnalogWrite (const int chan, const int value)
{
uint8_t spiData [2] ;
uint8_t chanBits, dataBits ;

if (chan == 0)
chanBits = 0x30 ;
else
chanBits = 0xB0 ;

chanBits |= ((value >> 4) & 0x0F) ;
dataBits = ((value << 4) & 0xF0) ;

spiData [0] = chanBits ;
spiData [1] = dataBits ;

wiringPiSPIDataRW (SPI_D2A, spiData, 2) ;
}


/*
* gertboardAnalogRead:
* Return the analog value of the given channel (0/1).
* The A/D is a 10-bit device
*********************************************************************************
*/

int gertboardAnalogRead (const int chan)
{
uint8_t spiData [2] ;

uint8_t chanBits ;

if (chan == 0)
chanBits = 0b11010000 ;
else
chanBits = 0b11110000 ;

spiData [0] = chanBits ;
spiData [1] = 0 ;

wiringPiSPIDataRW (SPI_A2D, spiData, 2) ;

return ((spiData [0] << 8) | (spiData [1] >> 1)) & 0x3FF ;
}


/*
* gertboardSPISetup:
* Initialise the SPI bus, etc.
*********************************************************************************
*/

int gertboardSPISetup (void)
{
if (wiringPiSPISetup (SPI_A2D, SPI_ADC_SPEED) < 0)
return -1 ;

if (wiringPiSPISetup (SPI_D2A, SPI_DAC_SPEED) < 0)
return -1 ;

return 0 ;
}


/*
* New wiringPi node extension methods.
*********************************************************************************
*/

static int myAnalogRead (struct wiringPiNodeStruct *node, const int chan)
{
return gertboardAnalogRead (chan - node->pinBase) ;
}

static void myAnalogWrite (struct wiringPiNodeStruct *node, const int chan, const int value)
{
gertboardAnalogWrite (chan - node->pinBase, value) ;
}


/*
* gertboardAnalogSetup:
* Create a new wiringPi device node for the analog devices on the
* Gertboard. We create one node with 2 pins - each pin being read
* and write - although the operations actually go to different
* hardware devices.
*********************************************************************************
*/

int gertboardAnalogSetup (const int pinBase)
{
struct wiringPiNodeStruct *node ;
int x ;

if (( x = gertboardSPISetup ()) != 0)
return x;

node = wiringPiNewNode (pinBase, 2) ;
node->analogRead = myAnalogRead ;
node->analogWrite = myAnalogWrite ;

return 0 ;
}

+ 0
- 45
devLib/gertboard.h View File

@@ -1,45 +0,0 @@
/*
* gertboard.h:
* Access routines for the SPI devices on the Gertboard
* Copyright (c) 2012 Gordon Henderson
*
* The Gertboard has an MCP4802 dual-channel D to A convertor
* connected to the SPI bus, selected via chip-select B.
*
***********************************************************************
* This file is part of wiringPi:
* https://github.com/WiringPi/WiringPi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with wiringPi.
* If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/

#ifdef __cplusplus
extern "C" {
#endif

// Old routines

extern void gertboardAnalogWrite (const int chan, const int value) ;
extern int gertboardAnalogRead (const int chan) ;
extern int gertboardSPISetup (void) ;

// New

extern int gertboardAnalogSetup (const int pinBase) ;

#ifdef __cplusplus
}
#endif

+ 0
- 177
devLib/piFaceOld.c View File

@@ -1,177 +0,0 @@
/*
* piFace.:
* Copyright (c) 2012-2016 Gordon Henderson
*
* This file to interface with the PiFace peripheral device which
* has an MCP23S17 GPIO device connected via the SPI bus.
***********************************************************************
* This file is part of wiringPi:
* https://github.com/WiringPi/WiringPi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with wiringPi.
* If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/


#include <stdio.h>
#include <stdint.h>

#include <wiringPi.h>
#include <wiringPiSPI.h>

#include "../wiringPi/mcp23x0817.h"

#include "piFace.h"

#define PIFACE_SPEED 4000000
#define PIFACE_DEVNO 0



/*
* writeByte:
* Write a byte to a register on the MCP23S17 on the SPI bus.
*********************************************************************************
*/

static void writeByte (uint8_t reg, uint8_t data)
{
uint8_t spiData [4] ;

spiData [0] = CMD_WRITE ;
spiData [1] = reg ;
spiData [2] = data ;

wiringPiSPIDataRW (PIFACE_DEVNO, spiData, 3) ;
}

/*
* readByte:
* Read a byte from a register on the MCP23S17 on the SPI bus.
*********************************************************************************
*/

static uint8_t readByte (uint8_t reg)
{
uint8_t spiData [4] ;

spiData [0] = CMD_READ ;
spiData [1] = reg ;

wiringPiSPIDataRW (PIFACE_DEVNO, spiData, 3) ;

return spiData [2] ;
}


/*
* myDigitalWrite:
* Perform the digitalWrite function on the PiFace board
*********************************************************************************
*/

void myDigitalWrite (struct wiringPiNodeStruct *node, int pin, int value)
{
uint8_t mask, old ;

pin -= node->pinBase ;
mask = 1 << pin ;
old = readByte (MCP23x17_GPIOA) ;

if (value == 0)
old &= (~mask) ;
else
old |= mask ;

writeByte (MCP23x17_GPIOA, old) ;
}


/*
* myDigitalRead:
* Perform the digitalRead function on the PiFace board
*********************************************************************************
*/

int myDigitalRead (struct wiringPiNodeStruct *node, int pin)
{
uint8_t mask, reg ;

mask = 1 << ((pin - node->pinBase) & 7) ;

if (pin < 8)
reg = MCP23x17_GPIOB ; // Input regsiter
else
reg = MCP23x17_OLATA ; // Output latch regsiter

if ((readByte (reg) & mask) != 0)
return HIGH ;
else
return LOW ;
}


/*
* myPullUpDnControl:
* Perform the pullUpDnControl function on the PiFace board
*********************************************************************************
*/

void myPullUpDnControl (struct wiringPiNodeStruct *node, int pin, int pud)
{
uint8_t mask, old ;

mask = 1 << (pin - node->pinBase) ;
old = readByte (MCP23x17_GPPUB) ;

if (pud == 0)
old &= (~mask) ;
else
old |= mask ;

writeByte (MCP23x17_GPPUB, old) ;
}


/*
* piFaceSetup
* Setup the SPI interface and initialise the MCP23S17 chip
* We create one node with 16 pins - each if the first 8 pins being read
* and write - although the operations actually go to different
* hardware ports. The top 8 let you read the state of the output register.
*********************************************************************************
*/

int piFaceSetup (const int pinBase)
{
int x ;
struct wiringPiNodeStruct *node ;

if ((x = wiringPiSPISetup (PIFACE_DEVNO, PIFACE_SPEED)) < 0)
return x ;

// Setup the MCP23S17

writeByte (MCP23x17_IOCON, IOCON_INIT) ;
writeByte (MCP23x17_IODIRA, 0x00) ; // Port A -> Outputs
writeByte (MCP23x17_IODIRB, 0xFF) ; // Port B -> Inputs

node = wiringPiNewNode (pinBase, 16) ;
node->digitalRead = myDigitalRead ;
node->digitalWrite = myDigitalWrite ;
node->pullUpDnControl = myPullUpDnControl ;

return 0 ;
}

Loading…
Cancel
Save