Skip to content

Commit

Permalink
Merge pull request MarlinFirmware#640 from fmalpartida/SAV-MkI
Browse files Browse the repository at this point in the history
Added support for BT on AT90USB devices, corrected LCD bug, added new board and LCD
  • Loading branch information
ErikZalm committed Nov 10, 2013
2 parents 2433ee6 + 7b556d2 commit 59b96e3
Show file tree
Hide file tree
Showing 9 changed files with 155 additions and 18 deletions.
20 changes: 18 additions & 2 deletions Marlin/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,13 @@
// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
#define SERIAL_PORT 0

// This determines the communication speed of the printer
// This determines the communication speed of the printer
#define BAUDRATE 250000
//#define BAUDRATE 115200

// This enables the serial port associated to the Bluetooth interface
//#define BTENABLED // Enable BT interface on AT90USB devices


//// The following define selects which electronics board you have. Please choose the one that matches your setup
// 10 = Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
Expand Down Expand Up @@ -54,6 +58,7 @@
// 80 = Rumba
// 81 = Printrboard (AT90USB1286)
// 82 = Brainwave (AT90USB646)
// 83 = SAV Mk-I (AT90USB1286)
// 9 = Gen3+
// 70 = Megatronics
// 701= Megatronics v2.0
Expand All @@ -64,7 +69,7 @@
// 21 = Elefu Ra Board (v3)

#ifndef MOTHERBOARD
#define MOTHERBOARD 7
//#define MOTHERBOARD 7
#endif

// Define this to set a custom name for your generic Mendel,
Expand Down Expand Up @@ -514,6 +519,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
#define ULTIPANEL
#endif

// Shift register panels
// ---------------------
// 2 wire Non-latching LCD SR from:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
//#define SR_LCD
#ifdef SR_LCD
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
//#define NEWPANEL
#endif


#ifdef ULTIPANEL
// #define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT
Expand Down
2 changes: 1 addition & 1 deletion Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@

#ifdef Z_DUAL_STEPPER_DRIVERS && Y_DUAL_STEPPER_DRIVERS
#error "You cannot have dual drivers for both Y and Z"
#endif
#endif

// Enable this for dual x-carriage printers.
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
Expand Down
12 changes: 9 additions & 3 deletions Marlin/Marlin.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
# define analogInputToDigitalPin(p) ((p) + A0)
#endif

#ifdef AT90USB
#include "HardwareSerial.h"
#endif

#include "MarlinSerial.h"

#ifndef cbi
Expand All @@ -46,9 +50,11 @@
#include "WString.h"

#ifdef AT90USB
#define MYSERIAL Serial
#else
#define MYSERIAL MSerial
#ifdef BTENABLED
#define MYSERIAL bt
#else
#define MYSERIAL Serial
#endif // BTENABLED
#endif

#define SERIAL_PROTOCOL(x) (MYSERIAL.print(x))
Expand Down
6 changes: 6 additions & 0 deletions Marlin/MarlinSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -320,3 +320,9 @@ MarlinSerial MSerial;

#endif // whole file
#endif // !AT90USB

// For AT90USB targets use the UART for BT interfacing
#if defined(AT90USB) && defined (BTENABLED)
HardwareSerial bt;
#endif

5 changes: 5 additions & 0 deletions Marlin/MarlinSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,9 @@ class MarlinSerial //: public Stream
extern MarlinSerial MSerial;
#endif // !AT90USB

// Use the UART for BT in AT90USB configurations
#if defined(AT90USB) && defined (BTENABLED)
extern HardwareSerial bt;
#endif

#endif
8 changes: 4 additions & 4 deletions Marlin/Sd2PinMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,10 @@ uint8_t const SDA_PIN = 1; // D1
uint8_t const SCL_PIN = 0; // D0

// SPI port
uint8_t const SS_PIN = 20; // B0
uint8_t const MOSI_PIN = 22; // B2
uint8_t const MISO_PIN = 23; // B3
uint8_t const SCK_PIN = 21; // B1
uint8_t const SS_PIN = 20; // B0
uint8_t const MOSI_PIN = 22; // B2
uint8_t const MISO_PIN = 23; // B3
uint8_t const SCK_PIN = 21; // B1

static const pin_map_t digitalPinMap[] = {
{&DDRD, &PIND, &PORTD, 0}, // D0 0
Expand Down
86 changes: 86 additions & 0 deletions Marlin/pins.h
Original file line number Diff line number Diff line change
Expand Up @@ -1549,6 +1549,92 @@

#endif // MOTHERBOARD == 82 (Brainwave)

//
// SAV Mk-I
// -----------------------------------------------------------------------------------
/****************************************************************************************
* SAV MkI pin assignments (AT90USB1286)
* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
http://www.pjrc.com/teensy/teensyduino.html
RepRap Clone Wars project board.
****************************************************************************************/
#if MOTHERBOARD == 83 // SAV Mk-I
#define KNOWN_BOARD 1
#define AT90USB 1286 // Disable MarlinSerial etc.

#ifndef __AVR_AT90USB1286__
#error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
#endif

#define LARGE_FLASH true


#define X_STEP_PIN 0
#define X_DIR_PIN 1
#define X_ENABLE_PIN 39

#define Y_STEP_PIN 2
#define Y_DIR_PIN 3
#define Y_ENABLE_PIN 38

#define Z_STEP_PIN 4
#define Z_DIR_PIN 5
#define Z_ENABLE_PIN 23

#define E0_STEP_PIN 6
#define E0_DIR_PIN 7
#define E0_ENABLE_PIN 19

#define HEATER_0_PIN 21 // Extruder
#define HEATER_1_PIN -1
#define HEATER_2_PIN -1
#define HEATER_BED_PIN 20 // Bed
#define FAN_PIN 16 // Fan -- from Teensyduino environment.
// For the fan and Teensyduino uses a different pin mapping.

#define X_STOP_PIN 13
#define Y_STOP_PIN 14
#define Z_STOP_PIN 15
#define TEMP_0_PIN 7 // Extruder / Analog pin numbering
#define TEMP_BED_PIN 6 // Bed / Analog pin numbering

#define TEMP_1_PIN -1
#define TEMP_2_PIN -1

#define SDPOWER -1
#define SDSS 20 // PB0 - 8 in marlin env.
#define LED_PIN -1
#define PS_ON_PIN -1
#define KILL_PIN -1
#define ALARM_PIN -1
#define SDCARDDETECT -1


#ifndef SDSUPPORT
// these pins are defined in the SD library if building with SD support
#define SCK_PIN 9
#define MISO_PIN 11
#define MOSI_PIN 10
#endif

#define BEEPER -1
#define LCD_PINS_RS -1
#define LCD_PINS_ENABLE -1
#define LCD_PINS_D4 -1
#define LCD_PINS_D5 -1
#define LCD_PINS_D6 -1
#define LCD_PINS_D7 -1
#define BTN_EN1 -1
#define BTN_EN2 -1
#define BTN_ENC -1

// For LCD SHIFT register LCD
#define SR_DATA_PIN 0
#define SR_CLK_PIN 1

#endif // MOTHERBOARD == 83


/****************************************************************************************
* Gen3+ pin assignment
*
Expand Down
23 changes: 16 additions & 7 deletions Marlin/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ int absPreheatHotendTemp;
int absPreheatHPBTemp;
int absPreheatFanSpeed;

#ifdef ULTIPANEL
static float manual_feedrate[] = MANUAL_FEEDRATE;
#endif // ULTIPANEL

/* !Configuration settings */

//Function pointer to menu functions.
Expand Down Expand Up @@ -992,14 +995,20 @@ void lcd_init()
WRITE(SHIFT_LD,HIGH);
#endif
#else
pinMode(SHIFT_CLK,OUTPUT);
pinMode(SHIFT_LD,OUTPUT);
pinMode(SHIFT_EN,OUTPUT);
pinMode(SHIFT_OUT,INPUT);
WRITE(SHIFT_OUT,HIGH);
WRITE(SHIFT_LD,HIGH);
WRITE(SHIFT_EN,LOW);
#ifdef SR_LCD_2W_NL
pinMode (SR_DATA_PIN, OUTPUT);
pinMode (SR_CLK_PIN, OUTPUT);
#else
pinMode(SHIFT_CLK,OUTPUT);
pinMode(SHIFT_LD,OUTPUT);
pinMode(SHIFT_EN,OUTPUT);
pinMode(SHIFT_OUT,INPUT);
WRITE(SHIFT_OUT,HIGH);
WRITE(SHIFT_LD,HIGH);
WRITE(SHIFT_EN,LOW);
#endif // SR_LCD_2W_NL
#endif//!NEWPANEL

#if (SDCARDDETECT > 0)
WRITE(SDCARDDETECT, HIGH);
lcd_oldcardstatus = IS_SD_INSERTED;
Expand Down
11 changes: 10 additions & 1 deletion Marlin/ultralcd_implementation_hitachi_HD44780.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,16 @@ extern volatile uint16_t buttons; //an extended version of the last checked but
#include <LiquidCrystal_I2C.h>
#define LCD_CLASS LiquidCrystal_I2C
LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT);


// 2 wire Non-latching LCD SR from:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
#elif defined(SR_LCD_2W_NL)

#include <LCD.h>
#include <LiquidCrystal_SR.h>
#define LCD_CLASS LiquidCrystal_SR
LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN);

#else
// Standard directly connected LCD implementations
#if LANGUAGE_CHOICE == 6
Expand Down

0 comments on commit 59b96e3

Please sign in to comment.