Skip to content

Commit

Permalink
Merge pull request #52 from ej113/variant/shift_4axis_Micro
Browse files Browse the repository at this point in the history
Variant/shift 4axis micro
  • Loading branch information
ej113 authored Nov 4, 2023
2 parents 60528f7 + f136b9b commit c4f2d4e
Show file tree
Hide file tree
Showing 11 changed files with 2,354 additions and 42 deletions.
14 changes: 7 additions & 7 deletions 3DPro.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@
* Pinout ATMEGAXU4
* ================
*
* PB0 Button1 PD0 Button1 (INT) PF0 --
* PB1 Button2 PD1 -- PF1 --
* PB0 -- PD0 Button1 (INT) PF0 --
* PB1 Button2 PD1 -- PF1 --
* PB2 Button3 PD2 -- PE2 --
* PB3 Button4 PD3 MIDI (out)
* PB4 X1 axis PD4 -- PF4 --
* PB5 Y2 axis PD5 -- PF5 --
* PB6 -- PC6 -- PD6 LED PE6 -- PF6 --
* PB7 -- PC7 -- PD7 -- PF7 --
* PB4 X1 axis PD4 -- PF4 --
* PB5 Y2 axis PD5 LED PF5 --
* PB6 Button1 PC6 -- PD6 -- PE6 -- PF6 --
* PB7 -- PC7 -- PD7 -- PF7 --
*
* Pinout AT90USBX6 (out dated!)
* ================
Expand Down Expand Up @@ -78,7 +78,7 @@
// Port B

#define PBPU (PU1( PB7) | PU1( PB6) | PU0( PB5) | PU0( PB4) | \
PU1( PB3) | PU1( PB2) | PU1( PB1) | PU1( PB0))
PU1( PB3) | PU1( PB2) | PU1( PB1) | PU0( PB0))
#define DDB (DDI(DDB7) | DDI(DDB6) | DDI(DDB5) | DDI(DDB4) | \
DDI(DDB3) | DDI(DDB2) | DDI(DDB1) | DDI(DDB0))

Expand Down
4 changes: 2 additions & 2 deletions 3DPro.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,15 @@
// Hardware specific definitions

#define LEDPORT PORTD
#define LEDBIT PD6
#define LEDBIT PD5

#define TRGDDR DDRB

#define TRGY2BIT DDB5
#define TRGX1BIT DDB4

#define BUTPIN PINB
#define BUT1 PB0
#define BUT1 PB6
#define BUT2 PB1
#define BUT3 PB2
#define BUT4 PB3
Expand Down
2 changes: 1 addition & 1 deletion 3DProasm.S
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
;* Joystick button mapping
;* =======================
;*
;* B1 - PB0
;* B1 - PB6
;* B2 - PB1
;* B3 - PB2
;* B4 - PB3
Expand Down
172 changes: 172 additions & 0 deletions Board/LEDs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2021.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/

/*
Copyright 2021 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaims all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/

/** \file
* \brief Board specific LED driver header for the Arduino Micro board.
* \copydetails Group_LEDs_MICRO
*
* \note This file should not be included directly. It is automatically included as needed by the LEDs driver
* dispatch header located in LUFA/Drivers/Board/LEDs.h.
*/

/** \ingroup Group_LEDs
* \defgroup Group_LEDs_MICRO MICRO
* \brief Board specific LED driver header for the Arduino Micro board.
*
* Board specific LED driver header for the Arduino Micro board (http://arduino.cc/en/Main/arduinoBoardMicro).
*
* <table>
* <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr>
* <tr><td>LEDS_LED1</td><td>Yellow</td><td>RX</td><td>High</td><td>PORTB.0</td></tr>
* <tr><td>LEDS_LED2</td><td>Yellow</td><td>TX</td><td>High</td><td>PORTD.5</td></tr>
* <tr><td>LEDS_LED3</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORTC.7</td></tr>
* </table>
*
* @{
*/

//This file from a later version of LUFA has been modified to make it a "User" board driver rather than upgrade/modify LUFA

#ifndef __LEDS_USER_H__
#define __LEDS_USER_H__

/* Includes: */
//#include "../../../../Common/Common.h"
#include <LUFA/Common/Common.h>

/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
#endif

/* Preprocessor Checks: */
#if !defined(__INCLUDE_FROM_LEDS_H)
#error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
#endif

/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)
/* Macros: */
#define LEDS_PORTB_LEDS (LEDS_LED1)
#define LEDS_PORTD_LEDS (LEDS_LED2)
#define LEDS_PORTC_LEDS (LEDS_LED3)
#endif

/* Public Interface - May be used in end-application: */
/* Macros: */
/** LED mask for the first LED on the board. */
#define LEDS_LED1 (1 << 0)

/** LED mask for the second LED on the board. */
#define LEDS_LED2 (1 << 5)

/** LED mask for the third LED on the board. */
#define LEDS_LED3 (1 << 7)

/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3)

/** LED mask for none of the board LEDs. */
#define LEDS_NO_LEDS 0

/* Inline Functions: */
#if !defined(__DOXYGEN__)
static inline void LEDs_Init(void)
{
DDRB |= LEDS_PORTB_LEDS;
PORTB &= ~LEDS_PORTB_LEDS;
DDRD |= LEDS_PORTD_LEDS;
PORTD &= ~LEDS_PORTD_LEDS;
DDRC |= LEDS_PORTC_LEDS;
PORTC &= ~LEDS_PORTC_LEDS;
}

static inline void LEDs_Disable(void)
{
DDRB &= ~LEDS_PORTB_LEDS;
PORTB &= ~LEDS_PORTB_LEDS;
DDRD &= ~LEDS_PORTD_LEDS;
PORTD &= ~LEDS_PORTD_LEDS;
DDRC &= ~LEDS_PORTC_LEDS;
PORTC &= ~LEDS_PORTC_LEDS;
}

static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{
PORTB |= (LEDMask & LEDS_PORTB_LEDS);
PORTD |= (LEDMask & LEDS_PORTD_LEDS);
PORTC |= (LEDMask & LEDS_PORTC_LEDS);
}

static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
{
PORTB &= ~(LEDMask & LEDS_PORTB_LEDS);
PORTD &= ~(LEDMask & LEDS_PORTD_LEDS);
PORTC &= ~(LEDMask & LEDS_PORTC_LEDS);
}

static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
{
PORTB = ((PORTB & ~LEDS_PORTB_LEDS) | (LEDMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS));
}

static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask)
{
PORTB = ((PORTB & ~(LEDMask & LEDS_PORTB_LEDS)) | (ActiveMask & LEDS_PORTB_LEDS));
PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS));
PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS));
}

static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{
PORTB ^= (LEDMask & LEDS_PORTB_LEDS);
PORTD ^= (LEDMask & LEDS_PORTD_LEDS);
PORTC ^= (LEDMask & LEDS_PORTC_LEDS);
}

ATTR_WARN_UNUSED_RESULT
static inline uint8_t LEDs_GetLEDs(void)
{
return ((PORTB & LEDS_PORTB_LEDS) | (PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS));
}
#endif

/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}
#endif

#endif

/** @} */

20 changes: 10 additions & 10 deletions Descriptors.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
HID_RI_COLLECTION(8, 0x00), // Physical
HID_RI_USAGE(8, 0x30), // Usage X
HID_RI_USAGE(8, 0x31), // Usage Y
HID_RI_USAGE(8, 0x32), // Usage Z
//HID_RI_USAGE(8, 0x32), // Usage Z
HID_RI_LOGICAL_MINIMUM(16, -512),
HID_RI_LOGICAL_MAXIMUM(16, 511),
HID_RI_PHYSICAL_MINIMUM(8, 0),
HID_RI_PHYSICAL_MAXIMUM(16, 1023),
HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_REPORT_SIZE(8, 0x10),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),

Expand All @@ -86,25 +86,25 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =

0x65, 0x00, // UNIT (None)

0x09, 0x33, // USAGE (Rx)
/*0x09, 0x33, // USAGE (Rx)
0x09, 0x34, // USAGE (Ry)
HID_RI_LOGICAL_MINIMUM(8, 0),
HID_RI_LOGICAL_MAXIMUM(8, 255),
HID_RI_PHYSICAL_MAXIMUM(8, 255),
HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),*/

HID_RI_END_COLLECTION(0),

0x09, 0x36, // USAGE (Rudder - hmm...actual rudder code 0xBA does not seem to work in Windows - so use slider)
/*0x09, 0x36, // USAGE (Rudder - hmm...actual rudder code 0xBA does not seem to work in Windows - so use slider)
HID_RI_LOGICAL_MINIMUM(8, -128),
HID_RI_LOGICAL_MAXIMUM(8, 127),
HID_RI_PHYSICAL_MAXIMUM(8, 255),
HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),*/

0x05, 0x02, // USAGE_PAGE (Simulation Controls)

Expand Down Expand Up @@ -1768,16 +1768,16 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
*/
const USB_Descriptor_String_t PROGMEM ProductStringJoystick =
{
.Header = {.Size = USB_STRING_LEN(18), .Type = DTYPE_String},
.Header = {.Size = USB_STRING_LEN(20), .Type = DTYPE_String},

.UnicodeString = L"LUFA Joystick wFFB"
.UnicodeString = L"MS SidewinderPro FFB"
};

const USB_Descriptor_String_t PROGMEM ProductStringWheel =
{
.Header = {.Size = USB_STRING_LEN(15), .Type = DTYPE_String},
.Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},

.UnicodeString = L"LUFA Wheel wFFB"
.UnicodeString = L"MS SidewinderWheel FFB"
};

/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
Expand Down
Loading

0 comments on commit c4f2d4e

Please sign in to comment.