diff options
author | William Chang <william@factual.com> | 2019-11-20 22:17:07 -0800 |
---|---|---|
committer | William Chang <william@factual.com> | 2019-11-20 22:17:07 -0800 |
commit | e7f4d56592b3975c38af329e77b4efd9108495e8 (patch) | |
tree | 0a416bccbf70bfdbdb9ffcdb3bf136b47378c014 /keyboards/moon | |
parent | 71493b2f9bbd5f3d18373c518fa14ccafcbf48fc (diff) | |
parent | 8416a94ad27b3ff058576f09f35f0704a8b39ff3 (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'keyboards/moon')
-rw-r--r-- | keyboards/moon/pca9555.c | 78 | ||||
-rw-r--r-- | keyboards/moon/pca9555.h | 55 | ||||
-rw-r--r-- | keyboards/moon/rules.mk | 56 |
3 files changed, 11 insertions, 178 deletions
diff --git a/keyboards/moon/pca9555.c b/keyboards/moon/pca9555.c deleted file mode 100644 index b0e542d8de..0000000000 --- a/keyboards/moon/pca9555.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright 2019 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include "i2c_master.h" -#include "pca9555.h" - -#include "debug.h" - -#define SLAVE_TO_ADDR(n) (n << 1) -#define TIMEOUT 100 - -enum { - CMD_INPUT_0 = 0, - CMD_INPUT_1, - CMD_OUTPUT_0, - CMD_OUTPUT_1, - CMD_INVERSION_0, - CMD_INVERSION_1, - CMD_CONFIG_0, - CMD_CONFIG_1, -}; - -void pca9555_init(uint8_t slave_addr) { - static uint8_t s_init = 0; - if (!s_init) { - i2c_init(); - - s_init = 1; - } - - // TODO: could check device connected - // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE); - // i2c_stop(); -} - -void pca9555_set_config(uint8_t slave_addr, uint8_t port, uint8_t conf) { - uint8_t addr = SLAVE_TO_ADDR(slave_addr); - uint8_t cmd = port ? CMD_CONFIG_1 : CMD_CONFIG_0; - - i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT); - if (ret != I2C_STATUS_SUCCESS) { - print("pca9555_set_config::FAILED\n"); - } -} - -void pca9555_set_output(uint8_t slave_addr, uint8_t port, uint8_t conf) { - uint8_t addr = SLAVE_TO_ADDR(slave_addr); - uint8_t cmd = port ? CMD_OUTPUT_1 : CMD_OUTPUT_0; - - i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT); - if (ret != I2C_STATUS_SUCCESS) { - print("pca9555_set_output::FAILED\n"); - } -} - -uint8_t pca9555_readPins(uint8_t slave_addr, uint8_t port) { - uint8_t addr = SLAVE_TO_ADDR(slave_addr); - uint8_t cmd = port ? CMD_INPUT_1 : CMD_INPUT_0; - - uint8_t data = 0; - i2c_status_t ret = i2c_readReg(addr, cmd, &data, sizeof(data), TIMEOUT); - if (ret != I2C_STATUS_SUCCESS) { - print("pca9555_readPins::FAILED\n"); - } - return data; -} diff --git a/keyboards/moon/pca9555.h b/keyboards/moon/pca9555.h deleted file mode 100644 index ebb97e2f30..0000000000 --- a/keyboards/moon/pca9555.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2019 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -/* - PCA9555 - ,----------. - SDA --| SDA P00 |-- P00 - SCL --| SCL P01 |-- P01 - INT --| INT P02 |-- P02 - | P03 |-- P03 - A0 --| A0 P04 |-- P04 - A1 --| A1 P05 |-- P05 - A2 --| A2 P06 |-- P06 - | P07 |-- P07 - | | - | P10 |-- P10 - | P11 |-- P11 - | P12 |-- P12 - | P13 |-- P13 - | P14 |-- P14 - | P15 |-- P15 - | P16 |-- P16 - | P17 |-- P17 - `----------' -*/ - -#define PCA9555_PORT0 0 -#define PCA9555_PORT1 1 - -#define ALL_OUTPUT 0 -#define ALL_INPUT 0xFF -#define ALL_LOW 0 -#define ALL_HIGH 0xFF - -void pca9555_init(uint8_t slave_addr); - -void pca9555_set_config(uint8_t slave_addr, uint8_t port, uint8_t conf); - -void pca9555_set_output(uint8_t slave_addr, uint8_t port, uint8_t conf); - -uint8_t pca9555_readPins(uint8_t slave_addr, uint8_t port); diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk index 699fc33957..3c67b3c287 100644 --- a/keyboards/moon/rules.mk +++ b/keyboards/moon/rules.mk @@ -1,59 +1,16 @@ -# Project specific files -SRC += i2c_master.c pca9555.c matrix.c - # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# Supported layouts -LAYOUTS = tkl_ansi tkl_iso - # Build Options # change yes to no to disable # @@ -74,4 +31,13 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +# custom matrix setup CUSTOM_MATRIX = yes + +VPATH += drivers/gpio +SRC += pca9555.c matrix.c +QUANTUM_LIB_SRC += i2c_master.c + +# Supported layouts +LAYOUTS = tkl_ansi tkl_iso |