]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
[Keyboard] Panc60 Refactor (#5559)
authorMechMerlin <30334081+mechmerlin@users.noreply.github.com>
Sun, 7 Apr 2019 01:08:57 +0000 (18:08 -0700)
committerDrashna Jaelre <drashna@live.com>
Sun, 7 Apr 2019 01:08:57 +0000 (18:08 -0700)
* remove unneeded uart setting

* use pragma once everywhere

* remove custom matrix support

* fixup readme

* set bootmagic to lite

* remove dependency on custom i2c code

* use the right header files and function calls

keyboards/panc60/config.h
keyboards/panc60/i2c.c [deleted file]
keyboards/panc60/i2c.h [deleted file]
keyboards/panc60/matrix.c [deleted file]
keyboards/panc60/panc60.c
keyboards/panc60/panc60.h
keyboards/panc60/readme.md
keyboards/panc60/rules.mk
keyboards/panc60/usbconfig.h

index 00bdbc60f1b98bc8faaf3131c4f5c0e9c5885d4e..edb25ad27434552269d67021abae9b4cf0636d78 100644 (file)
@@ -39,5 +39,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define NO_BACKLIGHT_CLOCK
 #define BACKLIGHT_LEVELS 1
 #define RGBLIGHT_ANIMATIONS
-
-#define NO_UART 1
diff --git a/keyboards/panc60/i2c.c b/keyboards/panc60/i2c.c
deleted file mode 100644 (file)
index e8c4455..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-Copyright 2016 Luiz Ribeiro <luizribeiro@gmail.com>
-
-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/>.
-*/
-
-// Please do not modify this file
-
-#include <avr/io.h>
-#include <util/twi.h>
-
-#include "i2c.h"
-
-void i2c_set_bitrate(uint16_t bitrate_khz) {
-    uint8_t bitrate_div = ((F_CPU / 1000l) / bitrate_khz);
-    if (bitrate_div >= 16) {
-        bitrate_div = (bitrate_div - 16) / 2;
-    }
-    TWBR = bitrate_div;
-}
-
-void i2c_init(void) {
-    // set pull-up resistors on I2C bus pins
-    PORTC |= 0b11;
-
-    i2c_set_bitrate(400);
-
-    // enable TWI (two-wire interface)
-    TWCR |= (1 << TWEN);
-
-    // enable TWI interrupt and slave address ACK
-    TWCR |= (1 << TWIE);
-    TWCR |= (1 << TWEA);
-}
-
-uint8_t i2c_start(uint8_t address) {
-    // reset TWI control register
-    TWCR = 0;
-
-    // begin transmission and wait for it to end
-    TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-    while (!(TWCR & (1<<TWINT)));
-
-    // check if the start condition was successfully transmitted
-    if ((TWSR & 0xF8) != TW_START) {
-        return 1;
-    }
-
-    // transmit address and wait
-    TWDR = address;
-    TWCR = (1<<TWINT) | (1<<TWEN);
-    while (!(TWCR & (1<<TWINT)));
-
-    // check if the device has acknowledged the READ / WRITE mode
-    uint8_t twst = TW_STATUS & 0xF8;
-    if ((twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK)) {
-        return 1;
-    }
-
-    return 0;
-}
-
-void i2c_stop(void) {
-    TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-}
-
-uint8_t i2c_write(uint8_t data) {
-    TWDR = data;
-
-    // transmit data and wait
-    TWCR = (1<<TWINT) | (1<<TWEN);
-    while (!(TWCR & (1<<TWINT)));
-
-    if ((TWSR & 0xF8) != TW_MT_DATA_ACK) {
-        return 1;
-    }
-
-    return 0;
-}
-
-uint8_t i2c_send(uint8_t address, uint8_t *data, uint16_t length) {
-    if (i2c_start(address)) {
-        return 1;
-    }
-
-    for (uint16_t i = 0; i < length; i++) {
-        if (i2c_write(data[i])) {
-            return 1;
-        }
-    }
-
-    i2c_stop();
-
-    return 0;
-}
diff --git a/keyboards/panc60/i2c.h b/keyboards/panc60/i2c.h
deleted file mode 100644 (file)
index 7ce50cd..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-Copyright 2016 Luiz Ribeiro <luizribeiro@gmail.com>
-
-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/>.
-*/
-
-// Please do not modify this file
-
-#ifndef __I2C_H__
-#define __I2C_H__
-
-void i2c_init(void);
-void i2c_set_bitrate(uint16_t bitrate_khz);
-uint8_t i2c_send(uint8_t address, uint8_t *data, uint16_t length);
-
-#endif
diff --git a/keyboards/panc60/matrix.c b/keyboards/panc60/matrix.c
deleted file mode 100644 (file)
index cf0f638..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
-Copyright 2018 Jack Humbert <jack.humb@gmail.com>
-
-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 <avr/io.h>
-#include <util/delay.h>
-#include <string.h>
-#include "matrix.h"
-
-#ifndef DEBOUNCE
-#   define DEBOUNCE    5
-#endif
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
-  matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
-  matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) { }
-
-__attribute__ ((weak))
-void matrix_scan_user(void) { }
-
-// #define MATRIX_ROW_PINS { B3, B4, B5, B6, B7 }
-// #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-
-static uint8_t debouncing = DEBOUNCE;
-
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-void matrix_init(void) {
-
-    // disables JTAG so we can use them as columns
-    MCUCSR = (1<<JTD);
-    MCUCSR = (1<<JTD);
-
-    // rows (output)
-    DDRB |= ((1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));
-    PORTB |= ((1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));
-
-    // cols (input)
-    DDRA &= ~((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));
-    DDRC &= ~((1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2));
-    DDRD &= ~((1 << 7));
-
-    // pull-up cols
-    PORTA |= ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));
-    PORTC |= ((1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2));
-    PORTD |= ((1 << 7));
-
-    // initialize matrix state: all keys off
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        matrix[row] = 0x00;
-        matrix_debouncing[row] = 0x00;
-    }
-
-    matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void) {
-
-    // actual matrix scan
-    for (uint8_t c = 0; c < MATRIX_ROWS; c++) {
-        switch (c) {
-          case 0:  PORTB &= ~(1 << 3); break;
-          case 1:  PORTB &= ~(1 << 4); break;
-          case 2:  PORTB &= ~(1 << 5); break;
-          case 3:  PORTB &= ~(1 << 6); break;
-          case 4:  PORTB &= ~(1 << 7); break;
-        }
-        _delay_us(5);
-
-        matrix_row_t current_row = (
-          (((PINA & (1 << 0)) ? 0 : 1 ) << 0)  |
-          (((PINA & (1 << 1)) ? 0 : 1 ) << 1)  |
-          (((PINA & (1 << 2)) ? 0 : 1 ) << 2)  |
-          (((PINA & (1 << 3)) ? 0 : 1 ) << 3)  |
-          (((PINA & (1 << 4)) ? 0 : 1 ) << 4)  |
-          (((PINA & (1 << 5)) ? 0 : 1 ) << 5)  |
-          (((PINA & (1 << 6)) ? 0 : 1 ) << 6)  |
-          (((PINA & (1 << 7)) ? 0 : 1 ) << 7)  |
-          (((PINC & (1 << 7)) ? 0 : 1 ) << 8)  |
-          (((PINC & (1 << 6)) ? 0 : 1 ) << 9)  |
-          (((PINC & (1 << 5)) ? 0 : 1 ) << 10) |
-          (((PINC & (1 << 4)) ? 0 : 1 ) << 11) |
-          (((PINC & (1 << 3)) ? 0 : 1 ) << 12) |
-          (((PINC & (1 << 2)) ? 0 : 1 ) << 13) |
-          (((PIND & (1 << 7)) ? 0 : 1 ) << 14)
-        );
-
-        switch (c) {
-          case 0:  PORTB |= (1 << 3); break;
-          case 1:  PORTB |= (1 << 4); break;
-          case 2:  PORTB |= (1 << 5); break;
-          case 3:  PORTB |= (1 << 6); break;
-          case 4:  PORTB |= (1 << 7); break;
-        }
-
-        if (matrix_debouncing[c] != current_row) {
-            matrix_debouncing[c] = current_row;
-            debouncing = DEBOUNCE;
-        }
-    }
-
-    if (debouncing) {
-        if (--debouncing) {
-            _delay_ms(1);
-        } else {
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-                matrix[i] = matrix_debouncing[i];
-            }
-        }
-    }
-
-    matrix_scan_quantum();
-
-    return 1;
-}
-
-inline matrix_row_t matrix_get_row(uint8_t row) {
-    return matrix[row];
-}
-
-void matrix_print(void) {
-}
index 9ac087dbf2466f62302442f5d7dc8a824612e6b6..16674d30d266d17b677fb5051ab63ed2c52edcda 100644 (file)
@@ -24,7 +24,7 @@
 #include <avr/pgmspace.h>
 
 #include "action_layer.h"
-#include "i2c.h"
+#include "i2c_master.h"
 #include "quantum.h"
 
 __attribute__ ((weak))
@@ -44,7 +44,7 @@ void rgblight_set(void) {
     }
 
     i2c_init();
-    i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM);
+    i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
 }
 #endif
 
index 95dcb1f90be46919786a264e03d49afc2d1b96f4..ee4569c615c3641932aec6fd7a97ec86f41e3e88 100644 (file)
@@ -13,8 +13,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef PANC60_H
-#define PANC60_H
+#pragma once
 
 #include "quantum.h"
 
@@ -67,5 +66,3 @@
        { K30,   KC_NO, K32,  K33,   K34,   K35,   K36,   K37,  K38,   K39,   K3A, K3B,   KC_NO, K3D,   K3E },   \
        { KC_NO, K41,   K42,  KC_NO, KC_NO, KC_NO, KC_NO, K47,  KC_NO, KC_NO, K4A, KC_NO, K4C,   KC_NO, KC_NO }  \
 }
-
-#endif
index 05ac3d72beece4771886f6c236c3e32df90ea879..737f238f6c869f65905ffc0c7b6521807fbc527d 100644 (file)
@@ -14,6 +14,8 @@ Make example for this keyboard (after setting up your build environment):
 
 Flashing
 
+**Reset Key:** Hold down the key located at `K40`, commonly programmed as left control while plugging in the keyboard. You may also hold down the key located at `K00`, commonly programmed as the `Esc` key. 
+
 ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods. 
 
 To put the panc60 into reset, hold left control while plugging in. 
@@ -36,9 +38,9 @@ macOS:
     ```
 3. Install the following packages:
     ```
-    brew install python
-    brew install pyusb
-    brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+    brew install python3
+    pip3 install pyusb
+    brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
 
 4. Place your keyboard into reset. 
 5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. 
index 588562a95b40e95a83984be009f55c969eccd7dc..8438751822b45f22bc6342e59134bbee2ff3d31f 100644 (file)
@@ -31,7 +31,7 @@ F_CPU = 12000000
 BOOTLOADER = bootloadHID
 
 # build options
-BOOTMAGIC_ENABLE = yes
+BOOTMAGIC_ENABLE = lite
 MOUSEKEY_ENABLE = yes
 EXTRAKEY_ENABLE = yes
 CONSOLE_ENABLE = yes
@@ -43,8 +43,7 @@ RGBLIGHT_CUSTOM_DRIVER = yes
 OPT_DEFS = -DDEBUG_LEVEL=0
 
 # custom matrix setup
-CUSTOM_MATRIX = yes
-SRC = matrix.c i2c.c
+SRC = i2c_master.c
 
 # programming options
 PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex
index d2d848fcdc8fd19f07621d98589d3f152dff5e28..54a7d20f142783843f4bdfb05930a95ef95833f7 100644 (file)
@@ -8,8 +8,7 @@
  * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
  */
 
-#ifndef __usbconfig_h_included__
-#define __usbconfig_h_included__
+#pragma once
 
 #include "config.h"
 
@@ -392,5 +391,3 @@ section at the end of this file).
 /* #define USB_INTR_PENDING        EIFR */
 #define USB_INTR_PENDING_BIT    INTF1
 #define USB_INTR_VECTOR         INT1_vect
-
-#endif /* __usbconfig_h_included__ */